ETH Price: $3,255.97 (-0.40%)

Token

Churro Token (CHURRO)
 

Overview

Max Total Supply

1,000,000,000,000 CHURRO

Holders

18

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,918,150,341.710071986 CHURRO

Value
$0.00
0xeaAa56a807F5578C025F2afC6666c06677820339
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:
CHURRO

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: Unlicensed

/**
Churro Token ($CHURRO), bringing treats to DeFi

Telegram:
https://t.me/churrotoken
*/

pragma solidity ^0.8.4;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

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

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

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

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

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

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

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

}

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

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

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

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

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

}  

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

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

contract CHURRO 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 = 1e12 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    
    uint256 public _feeAddr1 = 4;
    uint256 public _feeAddr2 = 4;
    address payable private _feeAddrWallet1;
    address payable private _feeAddrWallet2;
    
    string private constant _name = "Churro Token";
    string private constant _symbol = "CHURRO";
    uint8 private constant _decimals = 9;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private cooldownEnabled = false;
    uint256 private _maxTxAmount = _tTotal;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {
        _feeAddrWallet1 = payable(0x6f261053fEa940664d3707d354DD475b4A5f2462);
        _feeAddrWallet2 = payable(0x6f261053fEa940664d3707d354DD475b4A5f2462);
        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_feeAddrWallet1] = true;
        _isExcludedFromFee[_feeAddrWallet2] = true;
        emit Transfer(address(0x0000000000000000000000000000000000000000), _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");
        
        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to]);
            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] && cooldownEnabled) {
                // Cooldown
                require(amount <= _maxTxAmount);
                require(cooldown[to] < block.timestamp);
                cooldown[to] = block.timestamp + (15 seconds);
            }

            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() 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 = 1e10 * 10**9;
        tradingOpen = true;
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }
    
    function setBots(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }
    
    function removeStrictTxLimit() public onlyOwner {
        _maxTxAmount = 1e12 * 10**9;
    }
    
    function delBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }
        
    function _tokenTransfer(address sender, address recipient, uint256 amount) private {
        _transferStandard(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

    function _setFeeAddr1(uint256 feeAddr1) external onlyOwner() {
        require(feeAddr1 >= 1 && feeAddr1 <= 25, 'feeAddr1 should be in 1 - 25');
        _feeAddr1 = feeAddr1;
    }

    function _setFeeAddr2(uint256 feeAddr2) external onlyOwner() {
        require(feeAddr2 >= 1 && feeAddr2 <= 25, 'feeAddr2 should be in 1 - 25');
        _feeAddr2 = feeAddr2;
    }

    function _setFeeAddrWallet1(address payable feeAddrWallet1) external onlyOwner() {
        _feeAddrWallet1 = feeAddrWallet1;
        _isExcludedFromFee[_feeAddrWallet1] = true;
    }

    function _setFeeAddrWallet2(address payable feeAddrWallet2) external onlyOwner() {
        _feeAddrWallet2 = feeAddrWallet2;
        _isExcludedFromFee[_feeAddrWallet2] = true;
    }
}

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":"_feeAddr1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_feeAddr2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeAddr1","type":"uint256"}],"name":"_setFeeAddr1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeAddr2","type":"uint256"}],"name":"_setFeeAddr2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"feeAddrWallet1","type":"address"}],"name":"_setFeeAddrWallet1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"feeAddrWallet2","type":"address"}],"name":"_setFeeAddrWallet2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"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":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeStrictTxLimit","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":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052683635c9adc5dea000006000196200001d919062000531565b6000196200002c9190620004ec565b6008556004600a556004600b556000600f60156101000a81548160ff0219169083151502179055506000600f60166101000a81548160ff0219169083151502179055506000600f60176101000a81548160ff021916908315150217905550683635c9adc5dea00000601055348015620000a457600080fd5b506000620000b76200048d60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350736f261053fea940664d3707d354dd475b4a5f2462600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550736f261053fea940664d3707d354dd475b4a5f2462600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060085460026000620002166200048d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600560006200026a6200049560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620004176200048d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef683635c9adc5dea000006040516200047f9190620004cf565b60405180910390a3620005c7565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620004c98162000527565b82525050565b6000602082019050620004e66000830184620004be565b92915050565b6000620004f98262000527565b9150620005068362000527565b9250828210156200051c576200051b62000569565b5b828203905092915050565b6000819050919050565b60006200053e8262000527565b91506200054b8362000527565b9250826200055e576200055d62000598565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b613a5680620005d76000396000f3fe60806040526004361061014f5760003560e01c80638da5cb5b116100b6578063c274ebee1161006f578063c274ebee14610475578063c3c8cd80146104a0578063c9567bf9146104b7578063dd62ed3e146104ce578063e6aa397c1461050b578063ff8726021461053457610156565b80638da5cb5b1461036557806395d89b4114610390578063a4199e1d146103bb578063a9059cbb146103e6578063b515566a14610423578063bb6b2b541461044c57610156565b8063313ce56711610108578063313ce5671461027d5780635932ead1146102a85780636fc3eaec146102d157806370a08231146102e857806371201f6514610325578063715018a61461034e57610156565b806306fdde031461015b578063095ea7b31461018657806318160ddd146101c357806323b872dd146101ee578063273123b71461022b57806327f40ce11461025457610156565b3661015657005b600080fd5b34801561016757600080fd5b5061017061054b565b60405161017d91906130f5565b60405180910390f35b34801561019257600080fd5b506101ad60048036038101906101a89190612c18565b610588565b6040516101ba91906130da565b60405180910390f35b3480156101cf57600080fd5b506101d86105a6565b6040516101e59190613297565b60405180910390f35b3480156101fa57600080fd5b5061021560048036038101906102109190612bc9565b6105b7565b60405161022291906130da565b60405180910390f35b34801561023757600080fd5b50610252600480360381019061024d9190612b12565b610690565b005b34801561026057600080fd5b5061027b60048036038101906102769190612ce7565b610780565b005b34801561028957600080fd5b50610292610870565b60405161029f919061330c565b60405180910390f35b3480156102b457600080fd5b506102cf60048036038101906102ca9190612c95565b610879565b005b3480156102dd57600080fd5b506102e661092b565b005b3480156102f457600080fd5b5061030f600480360381019061030a9190612b12565b61099d565b60405161031c9190613297565b60405180910390f35b34801561033157600080fd5b5061034c60048036038101906103479190612b64565b6109ee565b005b34801561035a57600080fd5b50610363610b41565b005b34801561037157600080fd5b5061037a610c94565b604051610387919061300c565b60405180910390f35b34801561039c57600080fd5b506103a5610cbd565b6040516103b291906130f5565b60405180910390f35b3480156103c757600080fd5b506103d0610cfa565b6040516103dd9190613297565b60405180910390f35b3480156103f257600080fd5b5061040d60048036038101906104089190612c18565b610d00565b60405161041a91906130da565b60405180910390f35b34801561042f57600080fd5b5061044a60048036038101906104459190612c54565b610d1e565b005b34801561045857600080fd5b50610473600480360381019061046e9190612ce7565b610e6e565b005b34801561048157600080fd5b5061048a610f5e565b6040516104979190613297565b60405180910390f35b3480156104ac57600080fd5b506104b5610f64565b005b3480156104c357600080fd5b506104cc610fde565b005b3480156104da57600080fd5b506104f560048036038101906104f09190612b8d565b61153a565b6040516105029190613297565b60405180910390f35b34801561051757600080fd5b50610532600480360381019061052d9190612b64565b6115c1565b005b34801561054057600080fd5b50610549611714565b005b60606040518060400160405280600c81526020017f43687572726f20546f6b656e0000000000000000000000000000000000000000815250905090565b600061059c6105956117bb565b84846117c3565b6001905092915050565b6000683635c9adc5dea00000905090565b60006105c484848461198e565b610685846105d06117bb565b610680856040518060600160405280602881526020016139f960289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106366117bb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e6c9092919063ffffffff16565b6117c3565b600190509392505050565b6106986117bb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610725576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071c906131f7565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6107886117bb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080c906131f7565b60405180910390fd5b60018110158015610827575060198111155b610866576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085d90613197565b60405180910390fd5b80600a8190555050565b60006009905090565b6108816117bb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461090e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610905906131f7565b60405180910390fd5b80600f60176101000a81548160ff02191690831515021790555050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661096c6117bb565b73ffffffffffffffffffffffffffffffffffffffff161461098c57600080fd5b600047905061099a81611ed0565b50565b60006109e7600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fcb565b9050919050565b6109f66117bb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7a906131f7565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610b496117bb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcd906131f7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f43485552524f0000000000000000000000000000000000000000000000000000815250905090565b600a5481565b6000610d14610d0d6117bb565b848461198e565b6001905092915050565b610d266117bb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610db3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610daa906131f7565b60405180910390fd5b60005b8151811015610e6a57600160066000848481518110610dfe577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610e62906135bf565b915050610db6565b5050565b610e766117bb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efa906131f7565b60405180910390fd5b60018110158015610f15575060198111155b610f54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4b906131b7565b60405180910390fd5b80600b8190555050565b600b5481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fa56117bb565b73ffffffffffffffffffffffffffffffffffffffff1614610fc557600080fd5b6000610fd03061099d565b9050610fdb81612039565b50565b610fe66117bb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611073576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106a906131f7565b60405180910390fd5b600f60149054906101000a900460ff16156110c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ba90613277565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061115330600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16683635c9adc5dea000006117c3565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561119957600080fd5b505afa1580156111ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d19190612b3b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561123357600080fd5b505afa158015611247573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126b9190612b3b565b6040518363ffffffff1660e01b8152600401611288929190613027565b602060405180830381600087803b1580156112a257600080fd5b505af11580156112b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112da9190612b3b565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306113633061099d565b60008061136e610c94565b426040518863ffffffff1660e01b815260040161139096959493929190613079565b6060604051808303818588803b1580156113a957600080fd5b505af11580156113bd573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113e29190612d10565b5050506001600f60166101000a81548160ff0219169083151502179055506001600f60176101000a81548160ff021916908315150217905550678ac7230489e800006010819055506001600f60146101000a81548160ff021916908315150217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016114e4929190613050565b602060405180830381600087803b1580156114fe57600080fd5b505af1158015611512573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115369190612cbe565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6115c96117bb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611656576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164d906131f7565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61171c6117bb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a0906131f7565b60405180910390fd5b683635c9adc5dea00000601081905550565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182a90613257565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189a90613157565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119819190613297565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156119fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f590613237565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6590613117565b60405180910390fd5b60008111611ab1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa890613217565b60405180910390fd5b611ab9610c94565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b275750611af7610c94565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611e5c57600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611bd05750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611bd957600080fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611c845750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611cda5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611cf25750600f60179054906101000a900460ff165b15611da257601054811115611d0657600080fd5b42600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611d5157600080fd5b600f42611d5e91906133cd565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000611dad3061099d565b9050600f60159054906101000a900460ff16158015611e1a5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611e325750600f60169054906101000a900460ff165b15611e5a57611e4081612039565b60004790506000811115611e5857611e5747611ed0565b5b505b505b611e67838383612333565b505050565b6000838311158290611eb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eab91906130f5565b60405180910390fd5b5060008385611ec391906134ae565b9050809150509392505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611f2060028461234390919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611f4b573d6000803e3d6000fd5b50600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611f9c60028461234390919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611fc7573d6000803e3d6000fd5b5050565b6000600854821115612012576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200990613137565b60405180910390fd5b600061201c61238d565b9050612031818461234390919063ffffffff16565b915050919050565b6001600f60156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612097577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156120c55781602001602082028036833780820191505090505b5090503081600081518110612103577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156121a557600080fd5b505afa1580156121b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121dd9190612b3b565b81600181518110612217577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061227e30600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117c3565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122e29594939291906132b2565b600060405180830381600087803b1580156122fc57600080fd5b505af1158015612310573d6000803e3d6000fd5b50505050506000600f60156101000a81548160ff02191690831515021790555050565b61233e8383836123b8565b505050565b600061238583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612583565b905092915050565b600080600061239a6125e6565b915091506123b1818361234390919063ffffffff16565b9250505090565b6000806000806000806123ca87612648565b95509550955095509550955061242886600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126b090919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124bd85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126fa90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061250981612758565b6125138483612815565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516125709190613297565b60405180910390a3505050505050505050565b600080831182906125ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c191906130f5565b60405180910390fd5b50600083856125d99190613423565b9050809150509392505050565b600080600060085490506000683635c9adc5dea00000905061261c683635c9adc5dea0000060085461234390919063ffffffff16565b82101561263b57600854683635c9adc5dea00000935093505050612644565b81819350935050505b9091565b60008060008060008060008060006126658a600a54600b5461284f565b925092509250600061267561238d565b905060008060006126888e8787876128e5565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006126f283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e6c565b905092915050565b600080828461270991906133cd565b90508381101561274e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274590613177565b60405180910390fd5b8091505092915050565b600061276261238d565b90506000612779828461296e90919063ffffffff16565b90506127cd81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126fa90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61282a826008546126b090919063ffffffff16565b600881905550612845816009546126fa90919063ffffffff16565b6009819055505050565b60008060008061287b606461286d888a61296e90919063ffffffff16565b61234390919063ffffffff16565b905060006128a56064612897888b61296e90919063ffffffff16565b61234390919063ffffffff16565b905060006128ce826128c0858c6126b090919063ffffffff16565b6126b090919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806128fe858961296e90919063ffffffff16565b90506000612915868961296e90919063ffffffff16565b9050600061292c878961296e90919063ffffffff16565b905060006129558261294785876126b090919063ffffffff16565b6126b090919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083141561298157600090506129e3565b6000828461298f9190613454565b905082848261299e9190613423565b146129de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d5906131d7565b60405180910390fd5b809150505b92915050565b60006129fc6129f78461334c565b613327565b90508083825260208201905082856020860282011115612a1b57600080fd5b60005b85811015612a4b5781612a318882612a55565b845260208401935060208301925050600181019050612a1e565b5050509392505050565b600081359050612a648161399c565b92915050565b600081519050612a798161399c565b92915050565b600081359050612a8e816139b3565b92915050565b600082601f830112612aa557600080fd5b8135612ab58482602086016129e9565b91505092915050565b600081359050612acd816139ca565b92915050565b600081519050612ae2816139ca565b92915050565b600081359050612af7816139e1565b92915050565b600081519050612b0c816139e1565b92915050565b600060208284031215612b2457600080fd5b6000612b3284828501612a55565b91505092915050565b600060208284031215612b4d57600080fd5b6000612b5b84828501612a6a565b91505092915050565b600060208284031215612b7657600080fd5b6000612b8484828501612a7f565b91505092915050565b60008060408385031215612ba057600080fd5b6000612bae85828601612a55565b9250506020612bbf85828601612a55565b9150509250929050565b600080600060608486031215612bde57600080fd5b6000612bec86828701612a55565b9350506020612bfd86828701612a55565b9250506040612c0e86828701612ae8565b9150509250925092565b60008060408385031215612c2b57600080fd5b6000612c3985828601612a55565b9250506020612c4a85828601612ae8565b9150509250929050565b600060208284031215612c6657600080fd5b600082013567ffffffffffffffff811115612c8057600080fd5b612c8c84828501612a94565b91505092915050565b600060208284031215612ca757600080fd5b6000612cb584828501612abe565b91505092915050565b600060208284031215612cd057600080fd5b6000612cde84828501612ad3565b91505092915050565b600060208284031215612cf957600080fd5b6000612d0784828501612ae8565b91505092915050565b600080600060608486031215612d2557600080fd5b6000612d3386828701612afd565b9350506020612d4486828701612afd565b9250506040612d5586828701612afd565b9150509250925092565b6000612d6b8383612d77565b60208301905092915050565b612d80816134e2565b82525050565b612d8f816134e2565b82525050565b6000612da082613388565b612daa81856133ab565b9350612db583613378565b8060005b83811015612de6578151612dcd8882612d5f565b9750612dd88361339e565b925050600181019050612db9565b5085935050505092915050565b612dfc81613506565b82525050565b612e0b81613549565b82525050565b6000612e1c82613393565b612e2681856133bc565b9350612e3681856020860161355b565b612e3f81613695565b840191505092915050565b6000612e576023836133bc565b9150612e62826136a6565b604082019050919050565b6000612e7a602a836133bc565b9150612e85826136f5565b604082019050919050565b6000612e9d6022836133bc565b9150612ea882613744565b604082019050919050565b6000612ec0601b836133bc565b9150612ecb82613793565b602082019050919050565b6000612ee3601c836133bc565b9150612eee826137bc565b602082019050919050565b6000612f06601c836133bc565b9150612f11826137e5565b602082019050919050565b6000612f296021836133bc565b9150612f348261380e565b604082019050919050565b6000612f4c6020836133bc565b9150612f578261385d565b602082019050919050565b6000612f6f6029836133bc565b9150612f7a82613886565b604082019050919050565b6000612f926025836133bc565b9150612f9d826138d5565b604082019050919050565b6000612fb56024836133bc565b9150612fc082613924565b604082019050919050565b6000612fd86017836133bc565b9150612fe382613973565b602082019050919050565b612ff781613532565b82525050565b6130068161353c565b82525050565b60006020820190506130216000830184612d86565b92915050565b600060408201905061303c6000830185612d86565b6130496020830184612d86565b9392505050565b60006040820190506130656000830185612d86565b6130726020830184612fee565b9392505050565b600060c08201905061308e6000830189612d86565b61309b6020830188612fee565b6130a86040830187612e02565b6130b56060830186612e02565b6130c26080830185612d86565b6130cf60a0830184612fee565b979650505050505050565b60006020820190506130ef6000830184612df3565b92915050565b6000602082019050818103600083015261310f8184612e11565b905092915050565b6000602082019050818103600083015261313081612e4a565b9050919050565b6000602082019050818103600083015261315081612e6d565b9050919050565b6000602082019050818103600083015261317081612e90565b9050919050565b6000602082019050818103600083015261319081612eb3565b9050919050565b600060208201905081810360008301526131b081612ed6565b9050919050565b600060208201905081810360008301526131d081612ef9565b9050919050565b600060208201905081810360008301526131f081612f1c565b9050919050565b6000602082019050818103600083015261321081612f3f565b9050919050565b6000602082019050818103600083015261323081612f62565b9050919050565b6000602082019050818103600083015261325081612f85565b9050919050565b6000602082019050818103600083015261327081612fa8565b9050919050565b6000602082019050818103600083015261329081612fcb565b9050919050565b60006020820190506132ac6000830184612fee565b92915050565b600060a0820190506132c76000830188612fee565b6132d46020830187612e02565b81810360408301526132e68186612d95565b90506132f56060830185612d86565b6133026080830184612fee565b9695505050505050565b60006020820190506133216000830184612ffd565b92915050565b6000613331613342565b905061333d828261358e565b919050565b6000604051905090565b600067ffffffffffffffff82111561336757613366613666565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006133d882613532565b91506133e383613532565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561341857613417613608565b5b828201905092915050565b600061342e82613532565b915061343983613532565b92508261344957613448613637565b5b828204905092915050565b600061345f82613532565b915061346a83613532565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156134a3576134a2613608565b5b828202905092915050565b60006134b982613532565b91506134c483613532565b9250828210156134d7576134d6613608565b5b828203905092915050565b60006134ed82613512565b9050919050565b60006134ff82613512565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061355482613532565b9050919050565b60005b8381101561357957808201518184015260208101905061355e565b83811115613588576000848401525b50505050565b61359782613695565b810181811067ffffffffffffffff821117156135b6576135b5613666565b5b80604052505050565b60006135ca82613532565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156135fd576135fc613608565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f66656541646472312073686f756c6420626520696e2031202d20323500000000600082015250565b7f66656541646472322073686f756c6420626520696e2031202d20323500000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6139a5816134e2565b81146139b057600080fd5b50565b6139bc816134f4565b81146139c757600080fd5b50565b6139d381613506565b81146139de57600080fd5b50565b6139ea81613532565b81146139f557600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200dda8d503065d47d54d4532eed5ec6461f00ad757e3b8e8db739ba60958c13fd64736f6c63430008040033

Deployed Bytecode

0x60806040526004361061014f5760003560e01c80638da5cb5b116100b6578063c274ebee1161006f578063c274ebee14610475578063c3c8cd80146104a0578063c9567bf9146104b7578063dd62ed3e146104ce578063e6aa397c1461050b578063ff8726021461053457610156565b80638da5cb5b1461036557806395d89b4114610390578063a4199e1d146103bb578063a9059cbb146103e6578063b515566a14610423578063bb6b2b541461044c57610156565b8063313ce56711610108578063313ce5671461027d5780635932ead1146102a85780636fc3eaec146102d157806370a08231146102e857806371201f6514610325578063715018a61461034e57610156565b806306fdde031461015b578063095ea7b31461018657806318160ddd146101c357806323b872dd146101ee578063273123b71461022b57806327f40ce11461025457610156565b3661015657005b600080fd5b34801561016757600080fd5b5061017061054b565b60405161017d91906130f5565b60405180910390f35b34801561019257600080fd5b506101ad60048036038101906101a89190612c18565b610588565b6040516101ba91906130da565b60405180910390f35b3480156101cf57600080fd5b506101d86105a6565b6040516101e59190613297565b60405180910390f35b3480156101fa57600080fd5b5061021560048036038101906102109190612bc9565b6105b7565b60405161022291906130da565b60405180910390f35b34801561023757600080fd5b50610252600480360381019061024d9190612b12565b610690565b005b34801561026057600080fd5b5061027b60048036038101906102769190612ce7565b610780565b005b34801561028957600080fd5b50610292610870565b60405161029f919061330c565b60405180910390f35b3480156102b457600080fd5b506102cf60048036038101906102ca9190612c95565b610879565b005b3480156102dd57600080fd5b506102e661092b565b005b3480156102f457600080fd5b5061030f600480360381019061030a9190612b12565b61099d565b60405161031c9190613297565b60405180910390f35b34801561033157600080fd5b5061034c60048036038101906103479190612b64565b6109ee565b005b34801561035a57600080fd5b50610363610b41565b005b34801561037157600080fd5b5061037a610c94565b604051610387919061300c565b60405180910390f35b34801561039c57600080fd5b506103a5610cbd565b6040516103b291906130f5565b60405180910390f35b3480156103c757600080fd5b506103d0610cfa565b6040516103dd9190613297565b60405180910390f35b3480156103f257600080fd5b5061040d60048036038101906104089190612c18565b610d00565b60405161041a91906130da565b60405180910390f35b34801561042f57600080fd5b5061044a60048036038101906104459190612c54565b610d1e565b005b34801561045857600080fd5b50610473600480360381019061046e9190612ce7565b610e6e565b005b34801561048157600080fd5b5061048a610f5e565b6040516104979190613297565b60405180910390f35b3480156104ac57600080fd5b506104b5610f64565b005b3480156104c357600080fd5b506104cc610fde565b005b3480156104da57600080fd5b506104f560048036038101906104f09190612b8d565b61153a565b6040516105029190613297565b60405180910390f35b34801561051757600080fd5b50610532600480360381019061052d9190612b64565b6115c1565b005b34801561054057600080fd5b50610549611714565b005b60606040518060400160405280600c81526020017f43687572726f20546f6b656e0000000000000000000000000000000000000000815250905090565b600061059c6105956117bb565b84846117c3565b6001905092915050565b6000683635c9adc5dea00000905090565b60006105c484848461198e565b610685846105d06117bb565b610680856040518060600160405280602881526020016139f960289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106366117bb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e6c9092919063ffffffff16565b6117c3565b600190509392505050565b6106986117bb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610725576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071c906131f7565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6107886117bb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080c906131f7565b60405180910390fd5b60018110158015610827575060198111155b610866576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085d90613197565b60405180910390fd5b80600a8190555050565b60006009905090565b6108816117bb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461090e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610905906131f7565b60405180910390fd5b80600f60176101000a81548160ff02191690831515021790555050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661096c6117bb565b73ffffffffffffffffffffffffffffffffffffffff161461098c57600080fd5b600047905061099a81611ed0565b50565b60006109e7600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fcb565b9050919050565b6109f66117bb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7a906131f7565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610b496117bb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcd906131f7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f43485552524f0000000000000000000000000000000000000000000000000000815250905090565b600a5481565b6000610d14610d0d6117bb565b848461198e565b6001905092915050565b610d266117bb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610db3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610daa906131f7565b60405180910390fd5b60005b8151811015610e6a57600160066000848481518110610dfe577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610e62906135bf565b915050610db6565b5050565b610e766117bb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efa906131f7565b60405180910390fd5b60018110158015610f15575060198111155b610f54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4b906131b7565b60405180910390fd5b80600b8190555050565b600b5481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fa56117bb565b73ffffffffffffffffffffffffffffffffffffffff1614610fc557600080fd5b6000610fd03061099d565b9050610fdb81612039565b50565b610fe66117bb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611073576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106a906131f7565b60405180910390fd5b600f60149054906101000a900460ff16156110c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ba90613277565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061115330600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16683635c9adc5dea000006117c3565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561119957600080fd5b505afa1580156111ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d19190612b3b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561123357600080fd5b505afa158015611247573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126b9190612b3b565b6040518363ffffffff1660e01b8152600401611288929190613027565b602060405180830381600087803b1580156112a257600080fd5b505af11580156112b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112da9190612b3b565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306113633061099d565b60008061136e610c94565b426040518863ffffffff1660e01b815260040161139096959493929190613079565b6060604051808303818588803b1580156113a957600080fd5b505af11580156113bd573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113e29190612d10565b5050506001600f60166101000a81548160ff0219169083151502179055506001600f60176101000a81548160ff021916908315150217905550678ac7230489e800006010819055506001600f60146101000a81548160ff021916908315150217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016114e4929190613050565b602060405180830381600087803b1580156114fe57600080fd5b505af1158015611512573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115369190612cbe565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6115c96117bb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611656576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164d906131f7565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61171c6117bb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a0906131f7565b60405180910390fd5b683635c9adc5dea00000601081905550565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182a90613257565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189a90613157565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119819190613297565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156119fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f590613237565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6590613117565b60405180910390fd5b60008111611ab1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa890613217565b60405180910390fd5b611ab9610c94565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b275750611af7610c94565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611e5c57600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611bd05750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611bd957600080fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611c845750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611cda5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611cf25750600f60179054906101000a900460ff165b15611da257601054811115611d0657600080fd5b42600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611d5157600080fd5b600f42611d5e91906133cd565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000611dad3061099d565b9050600f60159054906101000a900460ff16158015611e1a5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611e325750600f60169054906101000a900460ff165b15611e5a57611e4081612039565b60004790506000811115611e5857611e5747611ed0565b5b505b505b611e67838383612333565b505050565b6000838311158290611eb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eab91906130f5565b60405180910390fd5b5060008385611ec391906134ae565b9050809150509392505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611f2060028461234390919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611f4b573d6000803e3d6000fd5b50600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611f9c60028461234390919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611fc7573d6000803e3d6000fd5b5050565b6000600854821115612012576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200990613137565b60405180910390fd5b600061201c61238d565b9050612031818461234390919063ffffffff16565b915050919050565b6001600f60156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612097577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156120c55781602001602082028036833780820191505090505b5090503081600081518110612103577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156121a557600080fd5b505afa1580156121b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121dd9190612b3b565b81600181518110612217577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061227e30600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117c3565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122e29594939291906132b2565b600060405180830381600087803b1580156122fc57600080fd5b505af1158015612310573d6000803e3d6000fd5b50505050506000600f60156101000a81548160ff02191690831515021790555050565b61233e8383836123b8565b505050565b600061238583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612583565b905092915050565b600080600061239a6125e6565b915091506123b1818361234390919063ffffffff16565b9250505090565b6000806000806000806123ca87612648565b95509550955095509550955061242886600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126b090919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124bd85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126fa90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061250981612758565b6125138483612815565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516125709190613297565b60405180910390a3505050505050505050565b600080831182906125ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c191906130f5565b60405180910390fd5b50600083856125d99190613423565b9050809150509392505050565b600080600060085490506000683635c9adc5dea00000905061261c683635c9adc5dea0000060085461234390919063ffffffff16565b82101561263b57600854683635c9adc5dea00000935093505050612644565b81819350935050505b9091565b60008060008060008060008060006126658a600a54600b5461284f565b925092509250600061267561238d565b905060008060006126888e8787876128e5565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006126f283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e6c565b905092915050565b600080828461270991906133cd565b90508381101561274e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274590613177565b60405180910390fd5b8091505092915050565b600061276261238d565b90506000612779828461296e90919063ffffffff16565b90506127cd81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126fa90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61282a826008546126b090919063ffffffff16565b600881905550612845816009546126fa90919063ffffffff16565b6009819055505050565b60008060008061287b606461286d888a61296e90919063ffffffff16565b61234390919063ffffffff16565b905060006128a56064612897888b61296e90919063ffffffff16565b61234390919063ffffffff16565b905060006128ce826128c0858c6126b090919063ffffffff16565b6126b090919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806128fe858961296e90919063ffffffff16565b90506000612915868961296e90919063ffffffff16565b9050600061292c878961296e90919063ffffffff16565b905060006129558261294785876126b090919063ffffffff16565b6126b090919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083141561298157600090506129e3565b6000828461298f9190613454565b905082848261299e9190613423565b146129de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d5906131d7565b60405180910390fd5b809150505b92915050565b60006129fc6129f78461334c565b613327565b90508083825260208201905082856020860282011115612a1b57600080fd5b60005b85811015612a4b5781612a318882612a55565b845260208401935060208301925050600181019050612a1e565b5050509392505050565b600081359050612a648161399c565b92915050565b600081519050612a798161399c565b92915050565b600081359050612a8e816139b3565b92915050565b600082601f830112612aa557600080fd5b8135612ab58482602086016129e9565b91505092915050565b600081359050612acd816139ca565b92915050565b600081519050612ae2816139ca565b92915050565b600081359050612af7816139e1565b92915050565b600081519050612b0c816139e1565b92915050565b600060208284031215612b2457600080fd5b6000612b3284828501612a55565b91505092915050565b600060208284031215612b4d57600080fd5b6000612b5b84828501612a6a565b91505092915050565b600060208284031215612b7657600080fd5b6000612b8484828501612a7f565b91505092915050565b60008060408385031215612ba057600080fd5b6000612bae85828601612a55565b9250506020612bbf85828601612a55565b9150509250929050565b600080600060608486031215612bde57600080fd5b6000612bec86828701612a55565b9350506020612bfd86828701612a55565b9250506040612c0e86828701612ae8565b9150509250925092565b60008060408385031215612c2b57600080fd5b6000612c3985828601612a55565b9250506020612c4a85828601612ae8565b9150509250929050565b600060208284031215612c6657600080fd5b600082013567ffffffffffffffff811115612c8057600080fd5b612c8c84828501612a94565b91505092915050565b600060208284031215612ca757600080fd5b6000612cb584828501612abe565b91505092915050565b600060208284031215612cd057600080fd5b6000612cde84828501612ad3565b91505092915050565b600060208284031215612cf957600080fd5b6000612d0784828501612ae8565b91505092915050565b600080600060608486031215612d2557600080fd5b6000612d3386828701612afd565b9350506020612d4486828701612afd565b9250506040612d5586828701612afd565b9150509250925092565b6000612d6b8383612d77565b60208301905092915050565b612d80816134e2565b82525050565b612d8f816134e2565b82525050565b6000612da082613388565b612daa81856133ab565b9350612db583613378565b8060005b83811015612de6578151612dcd8882612d5f565b9750612dd88361339e565b925050600181019050612db9565b5085935050505092915050565b612dfc81613506565b82525050565b612e0b81613549565b82525050565b6000612e1c82613393565b612e2681856133bc565b9350612e3681856020860161355b565b612e3f81613695565b840191505092915050565b6000612e576023836133bc565b9150612e62826136a6565b604082019050919050565b6000612e7a602a836133bc565b9150612e85826136f5565b604082019050919050565b6000612e9d6022836133bc565b9150612ea882613744565b604082019050919050565b6000612ec0601b836133bc565b9150612ecb82613793565b602082019050919050565b6000612ee3601c836133bc565b9150612eee826137bc565b602082019050919050565b6000612f06601c836133bc565b9150612f11826137e5565b602082019050919050565b6000612f296021836133bc565b9150612f348261380e565b604082019050919050565b6000612f4c6020836133bc565b9150612f578261385d565b602082019050919050565b6000612f6f6029836133bc565b9150612f7a82613886565b604082019050919050565b6000612f926025836133bc565b9150612f9d826138d5565b604082019050919050565b6000612fb56024836133bc565b9150612fc082613924565b604082019050919050565b6000612fd86017836133bc565b9150612fe382613973565b602082019050919050565b612ff781613532565b82525050565b6130068161353c565b82525050565b60006020820190506130216000830184612d86565b92915050565b600060408201905061303c6000830185612d86565b6130496020830184612d86565b9392505050565b60006040820190506130656000830185612d86565b6130726020830184612fee565b9392505050565b600060c08201905061308e6000830189612d86565b61309b6020830188612fee565b6130a86040830187612e02565b6130b56060830186612e02565b6130c26080830185612d86565b6130cf60a0830184612fee565b979650505050505050565b60006020820190506130ef6000830184612df3565b92915050565b6000602082019050818103600083015261310f8184612e11565b905092915050565b6000602082019050818103600083015261313081612e4a565b9050919050565b6000602082019050818103600083015261315081612e6d565b9050919050565b6000602082019050818103600083015261317081612e90565b9050919050565b6000602082019050818103600083015261319081612eb3565b9050919050565b600060208201905081810360008301526131b081612ed6565b9050919050565b600060208201905081810360008301526131d081612ef9565b9050919050565b600060208201905081810360008301526131f081612f1c565b9050919050565b6000602082019050818103600083015261321081612f3f565b9050919050565b6000602082019050818103600083015261323081612f62565b9050919050565b6000602082019050818103600083015261325081612f85565b9050919050565b6000602082019050818103600083015261327081612fa8565b9050919050565b6000602082019050818103600083015261329081612fcb565b9050919050565b60006020820190506132ac6000830184612fee565b92915050565b600060a0820190506132c76000830188612fee565b6132d46020830187612e02565b81810360408301526132e68186612d95565b90506132f56060830185612d86565b6133026080830184612fee565b9695505050505050565b60006020820190506133216000830184612ffd565b92915050565b6000613331613342565b905061333d828261358e565b919050565b6000604051905090565b600067ffffffffffffffff82111561336757613366613666565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006133d882613532565b91506133e383613532565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561341857613417613608565b5b828201905092915050565b600061342e82613532565b915061343983613532565b92508261344957613448613637565b5b828204905092915050565b600061345f82613532565b915061346a83613532565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156134a3576134a2613608565b5b828202905092915050565b60006134b982613532565b91506134c483613532565b9250828210156134d7576134d6613608565b5b828203905092915050565b60006134ed82613512565b9050919050565b60006134ff82613512565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061355482613532565b9050919050565b60005b8381101561357957808201518184015260208101905061355e565b83811115613588576000848401525b50505050565b61359782613695565b810181811067ffffffffffffffff821117156135b6576135b5613666565b5b80604052505050565b60006135ca82613532565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156135fd576135fc613608565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f66656541646472312073686f756c6420626520696e2031202d20323500000000600082015250565b7f66656541646472322073686f756c6420626520696e2031202d20323500000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6139a5816134e2565b81146139b057600080fd5b50565b6139bc816134f4565b81146139c757600080fd5b50565b6139d381613506565b81146139de57600080fd5b50565b6139ea81613532565b81146139f557600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200dda8d503065d47d54d4532eed5ec6461f00ad757e3b8e8db739ba60958c13fd64736f6c63430008040033

Deployed Bytecode Sourcemap

3618:10988:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5510:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6362:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5787:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6531:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10562:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13843:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5696:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6852:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11939:194;;;;;;;;;;;;;:::i;:::-;;5890:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14418:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2697:148;;;;;;;;;;;;;:::i;:::-;;2483:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5601:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4231:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6036:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10280:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14034:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4266:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11732:195;;;;;;;;;;;;;:::i;:::-;;9459:809;;;;;;;;;;;;;:::i;:::-;;6211:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14225:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10456:94;;;;;;;;;;;;;:::i;:::-;;5510:83;5547:13;5580:5;;;;;;;;;;;;;;;;;5573:12;;5510:83;:::o;6362:161::-;6437:4;6454:39;6463:12;:10;:12::i;:::-;6477:7;6486:6;6454:8;:39::i;:::-;6511:4;6504:11;;6362:161;;;;:::o;5787:95::-;5840:7;4117:12;5860:14;;5787:95;:::o;6531:313::-;6629:4;6646:36;6656:6;6664:9;6675:6;6646:9;:36::i;:::-;6693:121;6702:6;6710:12;:10;:12::i;:::-;6724:89;6762:6;6724:89;;;;;;;;;;;;;;;;;:11;:19;6736:6;6724:19;;;;;;;;;;;;;;;:33;6744:12;:10;:12::i;:::-;6724:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6693:8;:121::i;:::-;6832:4;6825:11;;6531:313;;;;;:::o;10562:88::-;2620:12;:10;:12::i;:::-;2610:22;;:6;;;;;;;;;;:22;;;2602:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10637:5:::1;10622:4;:12;10627:6;10622:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;10562:88:::0;:::o;13843:183::-;2620:12;:10;:12::i;:::-;2610:22;;:6;;;;;;;;;;:22;;;2602:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13935:1:::1;13923:8;:13;;:31;;;;;13952:2;13940:8;:14;;13923:31;13915:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;14010:8;13998:9;:20;;;;13843:183:::0;:::o;5696:83::-;5737:5;4536:1;5755:16;;5696:83;:::o;6852:103::-;2620:12;:10;:12::i;:::-;2610:22;;:6;;;;;;;;;;:22;;;2602:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6942:5:::1;6924:15;;:23;;;;;;;;;;;;;;;;;;6852:103:::0;:::o;11939:194::-;12005:15;;;;;;;;;;;11989:31;;:12;:10;:12::i;:::-;:31;;;11981:40;;;;;;12032:26;12061:21;12032:50;;12093:32;12106:18;12093:12;:32::i;:::-;11939:194;:::o;5890:138::-;5956:7;5983:37;6003:7;:16;6011:7;6003:16;;;;;;;;;;;;;;;;5983:19;:37::i;:::-;5976:44;;5890:138;;;:::o;14418:185::-;2620:12;:10;:12::i;:::-;2610:22;;:6;;;;;;;;;;:22;;;2602:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14528:14:::1;14510:15;;:32;;;;;;;;;;;;;;;;;;14591:4;14553:18;:35;14572:15;;;;;;;;;;;14553:35;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;14418:185:::0;:::o;2697:148::-;2620:12;:10;:12::i;:::-;2610:22;;:6;;;;;;;;;;:22;;;2602:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2804:1:::1;2767:40;;2788:6;::::0;::::1;;;;;;;;2767:40;;;;;;;;;;;;2835:1;2818:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2697:148::o:0;2483:79::-;2521:7;2548:6;;;;;;;;;;;2541:13;;2483:79;:::o;5601:87::-;5640:13;5673:7;;;;;;;;;;;;;;;;;5666:14;;5601:87;:::o;4231:28::-;;;;:::o;6036:167::-;6114:4;6131:42;6141:12;:10;:12::i;:::-;6155:9;6166:6;6131:9;:42::i;:::-;6191:4;6184:11;;6036:167;;;;:::o;10280:164::-;2620:12;:10;:12::i;:::-;2610:22;;:6;;;;;;;;;;:22;;;2602:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10354:6:::1;10349:88;10370:5;:12;10366:1;:16;10349:88;;;10421:4;10404;:14;10409:5;10415:1;10409:8;;;;;;;;;;;;;;;;;;;;;;10404:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;10384:3;;;;;:::i;:::-;;;;10349:88;;;;10280:164:::0;:::o;14034:183::-;2620:12;:10;:12::i;:::-;2610:22;;:6;;;;;;;;;;:22;;;2602:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14126:1:::1;14114:8;:13;;:31;;;;;14143:2;14131:8;:14;;14114:31;14106:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;14201:8;14189:9;:20;;;;14034:183:::0;:::o;4266:28::-;;;;:::o;11732:195::-;11798:15;;;;;;;;;;;11782:31;;:12;:10;:12::i;:::-;:31;;;11774:40;;;;;;11825:23;11851:24;11869:4;11851:9;:24::i;:::-;11825:50;;11886:33;11903:15;11886:16;:33::i;:::-;11732:195;:::o;9459:809::-;2620:12;:10;:12::i;:::-;2610:22;;:6;;;;;;;;;;:22;;;2602:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9523:11:::1;;;;;;;;;;;9522:12;9514:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;9572:35;9629:42;9572:100;;9701:16;9683:15;;:34;;;;;;;;;;;;;;;;;;9728:58;9745:4;9760:15;;;;;;;;;;;4117:12;9728:8;:58::i;:::-;9831:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9813:56;;;9878:4;9885:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9813:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9797:13;;:112;;;;;;;;;;;;;;;;;;9920:15;;;;;;;;;;;:31;;;9959:21;9990:4;9996:24;10014:4;9996:9;:24::i;:::-;10021:1;10023::::0;10025:7:::1;:5;:7::i;:::-;10033:15;9920:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;10074:4;10060:11;;:18;;;;;;;;;;;;;;;;;;10107:4;10089:15;;:22;;;;;;;;;;;;;;;;;;10137:12;10122;:27;;;;10174:4;10160:11;;:18;;;;;;;;;;;;;;;;;;10196:13;;;;;;;;;;;10189:29;;;10227:15;;;;;;;;;;;10245:14;10189:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2680:1;9459:809::o:0;6211:143::-;6292:7;6319:11;:18;6331:5;6319:18;;;;;;;;;;;;;;;:27;6338:7;6319:27;;;;;;;;;;;;;;;;6312:34;;6211:143;;;;:::o;14225:185::-;2620:12;:10;:12::i;:::-;2610:22;;:6;;;;;;;;;;:22;;;2602:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14335:14:::1;14317:15;;:32;;;;;;;;;;;;;;;;;;14398:4;14360:18;:35;14379:15;;;;;;;;;;;14360:35;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;14225:185:::0;:::o;10456:94::-;2620:12;:10;:12::i;:::-;2610:22;;:6;;;;;;;;;;:22;;;2602:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10530:12:::1;10515;:27;;;;10456:94::o:0;201:98::-;254:7;281:10;274:17;;201:98;:::o;7225:335::-;7335:1;7318:19;;:5;:19;;;;7310:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7416:1;7397:21;;:7;:21;;;;7389:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7498:6;7468:11;:18;7480:5;7468:18;;;;;;;;;;;;;;;:27;7487:7;7468:27;;;;;;;;;;;;;;;:36;;;;7536:7;7520:32;;7529:5;7520:32;;;7545:6;7520:32;;;;;;:::i;:::-;;;;;;;;7225:335;;;:::o;7568:1218::-;7672:1;7656:18;;:4;:18;;;;7648:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7749:1;7735:16;;:2;:16;;;;7727:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7819:1;7810:6;:10;7802:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7899:7;:5;:7::i;:::-;7891:15;;:4;:15;;;;:32;;;;;7916:7;:5;:7::i;:::-;7910:13;;:2;:13;;;;7891:32;7887:841;;;7949:4;:10;7954:4;7949:10;;;;;;;;;;;;;;;;;;;;;;;;;7948:11;:24;;;;;7964:4;:8;7969:2;7964:8;;;;;;;;;;;;;;;;;;;;;;;;;7963:9;7948:24;7940:33;;;;;;8000:13;;;;;;;;;;;7992:21;;:4;:21;;;:55;;;;;8031:15;;;;;;;;;;;8017:30;;:2;:30;;;;7992:55;:83;;;;;8053:18;:22;8072:2;8053:22;;;;;;;;;;;;;;;;;;;;;;;;;8051:24;7992:83;:102;;;;;8079:15;;;;;;;;;;;7992:102;7988:325;;;8162:12;;8152:6;:22;;8144:31;;;;;;8217:15;8202:8;:12;8211:2;8202:12;;;;;;;;;;;;;;;;:30;8194:39;;;;;;8286:10;8267:15;:30;;;;:::i;:::-;8252:8;:12;8261:2;8252:12;;;;;;;;;;;;;;;:45;;;;7988:325;8329:28;8360:24;8378:4;8360:9;:24::i;:::-;8329:55;;8404:6;;;;;;;;;;;8403:7;:32;;;;;8422:13;;;;;;;;;;;8414:21;;:4;:21;;;;8403:32;:47;;;;;8439:11;;;;;;;;;;;8403:47;8399:318;;;8471:38;8488:20;8471:16;:38::i;:::-;8528:26;8557:21;8528:50;;8621:1;8600:18;:22;8597:105;;;8647:35;8660:21;8647:12;:35::i;:::-;8597:105;8399:318;;7887:841;;8748:30;8763:4;8768:2;8771:6;8748:14;:30::i;:::-;7568:1218;;;:::o;1338:190::-;1424:7;1457:1;1452;:6;;1460:12;1444:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1484:9;1500:1;1496;:5;;;;:::i;:::-;1484:17;;1519:1;1512:8;;;1338:190;;;;;:::o;9293:154::-;9350:15;;;;;;;;;;;:24;;:39;9375:13;9386:1;9375:6;:10;;:13;;;;:::i;:::-;9350:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9400:15;;;;;;;;;;;:24;;:39;9425:13;9436:1;9425:6;:10;;:13;;;;:::i;:::-;9400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9293:154;:::o;6963:254::-;7030:7;7069;;7058;:18;;7050:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7134:19;7157:10;:8;:10::i;:::-;7134:33;;7185:24;7197:11;7185:7;:11;;:24;;;;:::i;:::-;7178:31;;;6963:254;;;:::o;8794:483::-;4918:4;4909:6;;:13;;;;;;;;;;;;;;;;;;8872:21:::1;8910:1;8896:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8872:40;;8941:4;8923;8928:1;8923:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;8967:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8957:4;8962:1;8957:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;9000:62;9017:4;9032:15;;;;;;;;;;;9050:11;9000:8;:62::i;:::-;9073:15;;;;;;;;;;;:66;;;9154:11;9180:1;9196:4;9223;9243:15;9073:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;4933:1;4954:5:::0;4945:6;;:14;;;;;;;;;;;;;;;;;;8794:483;:::o;10666:146::-;10760:44;10778:6;10786:9;10797:6;10760:17;:44::i;:::-;10666:146;;;:::o;1790:132::-;1848:7;1875:39;1879:1;1882;1875:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1868:46;;1790:132;;;;:::o;13402:163::-;13443:7;13464:15;13481;13500:19;:17;:19::i;:::-;13463:56;;;;13537:20;13549:7;13537;:11;;:20;;;;:::i;:::-;13530:27;;;;13402:163;:::o;10820:488::-;10919:15;10936:23;10961:12;10975:23;11000:12;11014:13;11031:19;11042:7;11031:10;:19::i;:::-;10918:132;;;;;;;;;;;;11079:28;11099:7;11079;:15;11087:6;11079:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;11061:7;:15;11069:6;11061:15;;;;;;;;;;;;;;;:46;;;;11139:39;11162:15;11139:7;:18;11147:9;11139:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;11118:7;:18;11126:9;11118:18;;;;;;;;;;;;;;;:60;;;;11190:16;11200:5;11190:9;:16::i;:::-;11217:23;11229:4;11235;11217:11;:23::i;:::-;11273:9;11256:44;;11265:6;11256:44;;;11284:15;11256:44;;;;;;:::i;:::-;;;;;;;;10820:488;;;;;;;;;:::o;1930:189::-;2016:7;2048:1;2044;:5;2051:12;2036:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2075:9;2091:1;2087;:5;;;;:::i;:::-;2075:17;;2110:1;2103:8;;;1930:189;;;;;:::o;13573:262::-;13623:7;13632;13652:15;13670:7;;13652:25;;13688:15;4117:12;13688:25;;13744:20;4117:12;13744:7;;:11;;:20;;;;:::i;:::-;13734:7;:30;13730:61;;;13774:7;;4117:12;13766:25;;;;;;;;13730:61;13810:7;13819;13802:25;;;;;;13573:262;;;:::o;12147:471::-;12206:7;12215;12224;12233;12242;12251;12272:23;12297:12;12311:13;12328:42;12340:7;12349:9;;12360;;12328:11;:42::i;:::-;12271:99;;;;;;12381:19;12404:10;:8;:10::i;:::-;12381:33;;12426:15;12443:23;12468:12;12484:46;12496:7;12505:4;12511:5;12518:11;12484;:46::i;:::-;12425:105;;;;;;12549:7;12558:15;12575:4;12581:15;12598:4;12604:5;12541:69;;;;;;;;;;;;;;;;;;;12147:471;;;;;;;:::o;1194:136::-;1252:7;1279:43;1283:1;1286;1279:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1272:50;;1194:136;;;;:::o;1007:179::-;1065:7;1085:9;1101:1;1097;:5;;;;:::i;:::-;1085:17;;1126:1;1121;:6;;1113:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1177:1;1170:8;;;1007:179;;;;:::o;11316:212::-;11369:19;11392:10;:8;:10::i;:::-;11369:33;;11413:13;11429:22;11439:11;11429:5;:9;;:22;;;;:::i;:::-;11413:38;;11487:33;11514:5;11487:7;:22;11503:4;11487:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;11462:7;:22;11478:4;11462:22;;;;;;;;;;;;;;;:58;;;;11316:212;;;:::o;11536:147::-;11614:17;11626:4;11614:7;;:11;;:17;;;;:::i;:::-;11604:7;:27;;;;11655:20;11670:4;11655:10;;:14;;:20;;;;:::i;:::-;11642:10;:33;;;;11536:147;;:::o;12626:351::-;12719:7;12728;12737;12757:12;12772:28;12796:3;12772:19;12784:6;12772:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;12757:43;;12811:13;12827:29;12852:3;12827:20;12839:7;12827;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;12811:45;;12867:23;12893:28;12915:5;12893:17;12905:4;12893:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;12867:54;;12940:15;12957:4;12963:5;12932:37;;;;;;;;;12626:351;;;;;;;:::o;12985:409::-;13095:7;13104;13113;13133:15;13151:24;13163:11;13151:7;:11;;:24;;;;:::i;:::-;13133:42;;13186:12;13201:21;13210:11;13201:4;:8;;:21;;;;:::i;:::-;13186:36;;13233:13;13249:22;13259:11;13249:5;:9;;:22;;;;:::i;:::-;13233:38;;13282:23;13308:28;13330:5;13308:17;13320:4;13308:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;13282:54;;13355:7;13364:15;13381:4;13347:39;;;;;;;;;;12985:409;;;;;;;;:::o;1536:246::-;1594:7;1623:1;1618;:6;1614:47;;;1648:1;1641:8;;;;1614:47;1671:9;1687:1;1683;:5;;;;:::i;:::-;1671:17;;1716:1;1711;1707;:5;;;;:::i;:::-;:10;1699:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1773:1;1766:8;;;1536: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;979:155::-;1033:5;1071:6;1058:20;1049:29;;1087:41;1122:5;1087:41;:::i;:::-;1039:95;;;;:::o;1157:303::-;1228:5;1277:3;1270:4;1262:6;1258:17;1254:27;1244:2;;1295:1;1292;1285:12;1244:2;1335:6;1322:20;1360:94;1450:3;1442:6;1435:4;1427:6;1423:17;1360:94;:::i;:::-;1351:103;;1234:226;;;;;:::o;1466:133::-;1509:5;1547:6;1534:20;1525:29;;1563:30;1587:5;1563:30;:::i;:::-;1515:84;;;;:::o;1605:137::-;1659:5;1690:6;1684:13;1675:22;;1706:30;1730:5;1706:30;:::i;:::-;1665:77;;;;:::o;1748:139::-;1794:5;1832:6;1819:20;1810:29;;1848:33;1875:5;1848:33;:::i;:::-;1800:87;;;;:::o;1893:143::-;1950:5;1981:6;1975:13;1966:22;;1997:33;2024:5;1997:33;:::i;:::-;1956:80;;;;:::o;2042:262::-;2101:6;2150:2;2138:9;2129:7;2125:23;2121:32;2118:2;;;2166:1;2163;2156:12;2118:2;2209:1;2234:53;2279:7;2270:6;2259:9;2255:22;2234:53;:::i;:::-;2224:63;;2180:117;2108:196;;;;:::o;2310:284::-;2380:6;2429:2;2417:9;2408:7;2404:23;2400:32;2397:2;;;2445:1;2442;2435:12;2397:2;2488:1;2513:64;2569:7;2560:6;2549:9;2545:22;2513:64;:::i;:::-;2503:74;;2459:128;2387:207;;;;:::o;2600:278::-;2667:6;2716:2;2704:9;2695:7;2691:23;2687:32;2684:2;;;2732:1;2729;2722:12;2684:2;2775:1;2800:61;2853:7;2844:6;2833:9;2829:22;2800:61;:::i;:::-;2790:71;;2746:125;2674:204;;;;:::o;2884:407::-;2952:6;2960;3009:2;2997:9;2988:7;2984:23;2980:32;2977:2;;;3025:1;3022;3015:12;2977:2;3068:1;3093:53;3138:7;3129:6;3118:9;3114:22;3093:53;:::i;:::-;3083:63;;3039:117;3195:2;3221:53;3266:7;3257:6;3246:9;3242:22;3221:53;:::i;:::-;3211:63;;3166:118;2967:324;;;;;:::o;3297:552::-;3374:6;3382;3390;3439:2;3427:9;3418:7;3414:23;3410:32;3407:2;;;3455:1;3452;3445:12;3407:2;3498:1;3523:53;3568:7;3559:6;3548:9;3544:22;3523:53;:::i;:::-;3513:63;;3469:117;3625:2;3651:53;3696:7;3687:6;3676:9;3672:22;3651:53;:::i;:::-;3641:63;;3596:118;3753:2;3779:53;3824:7;3815:6;3804:9;3800:22;3779:53;:::i;:::-;3769:63;;3724:118;3397:452;;;;;:::o;3855:407::-;3923:6;3931;3980:2;3968:9;3959:7;3955:23;3951:32;3948:2;;;3996:1;3993;3986:12;3948:2;4039:1;4064:53;4109:7;4100:6;4089:9;4085:22;4064:53;:::i;:::-;4054:63;;4010:117;4166:2;4192:53;4237:7;4228:6;4217:9;4213:22;4192:53;:::i;:::-;4182:63;;4137:118;3938:324;;;;;:::o;4268:405::-;4352:6;4401:2;4389:9;4380:7;4376:23;4372:32;4369:2;;;4417:1;4414;4407:12;4369:2;4488:1;4477:9;4473:17;4460:31;4518:18;4510:6;4507:30;4504:2;;;4550:1;4547;4540:12;4504:2;4578:78;4648:7;4639:6;4628:9;4624:22;4578:78;:::i;:::-;4568:88;;4431:235;4359:314;;;;:::o;4679:256::-;4735:6;4784:2;4772:9;4763:7;4759:23;4755:32;4752:2;;;4800:1;4797;4790:12;4752:2;4843:1;4868:50;4910:7;4901:6;4890:9;4886:22;4868:50;:::i;:::-;4858:60;;4814:114;4742:193;;;;:::o;4941:278::-;5008:6;5057:2;5045:9;5036:7;5032:23;5028:32;5025:2;;;5073:1;5070;5063:12;5025:2;5116:1;5141:61;5194:7;5185:6;5174:9;5170:22;5141:61;:::i;:::-;5131:71;;5087:125;5015:204;;;;:::o;5225:262::-;5284:6;5333:2;5321:9;5312:7;5308:23;5304:32;5301:2;;;5349:1;5346;5339:12;5301:2;5392:1;5417:53;5462:7;5453:6;5442:9;5438:22;5417:53;:::i;:::-;5407:63;;5363:117;5291:196;;;;:::o;5493:596::-;5581:6;5589;5597;5646:2;5634:9;5625:7;5621:23;5617:32;5614:2;;;5662:1;5659;5652:12;5614:2;5705:1;5730:64;5786:7;5777:6;5766:9;5762:22;5730:64;:::i;:::-;5720:74;;5676:128;5843:2;5869:64;5925:7;5916:6;5905:9;5901:22;5869:64;:::i;:::-;5859:74;;5814:129;5982:2;6008:64;6064:7;6055:6;6044:9;6040:22;6008:64;:::i;:::-;5998:74;;5953:129;5604:485;;;;;:::o;6095:179::-;6164:10;6185:46;6227:3;6219:6;6185:46;:::i;:::-;6263:4;6258:3;6254:14;6240:28;;6175:99;;;;:::o;6280:108::-;6357:24;6375:5;6357:24;:::i;:::-;6352:3;6345:37;6335:53;;:::o;6394:118::-;6481:24;6499:5;6481:24;:::i;:::-;6476:3;6469:37;6459:53;;:::o;6548:732::-;6667:3;6696:54;6744:5;6696:54;:::i;:::-;6766:86;6845:6;6840:3;6766:86;:::i;:::-;6759:93;;6876:56;6926:5;6876:56;:::i;:::-;6955:7;6986:1;6971:284;6996:6;6993:1;6990:13;6971:284;;;7072:6;7066:13;7099:63;7158:3;7143:13;7099:63;:::i;:::-;7092:70;;7185:60;7238:6;7185:60;:::i;:::-;7175:70;;7031:224;7018:1;7015;7011:9;7006:14;;6971:284;;;6975:14;7271:3;7264:10;;6672:608;;;;;;;:::o;7286:109::-;7367:21;7382:5;7367:21;:::i;:::-;7362:3;7355:34;7345:50;;:::o;7401:147::-;7496:45;7535:5;7496:45;:::i;:::-;7491:3;7484:58;7474:74;;:::o;7554:364::-;7642:3;7670:39;7703:5;7670:39;:::i;:::-;7725:71;7789:6;7784:3;7725:71;:::i;:::-;7718:78;;7805:52;7850:6;7845:3;7838:4;7831:5;7827:16;7805:52;:::i;:::-;7882:29;7904:6;7882:29;:::i;:::-;7877:3;7873:39;7866:46;;7646:272;;;;;:::o;7924:366::-;8066:3;8087:67;8151:2;8146:3;8087:67;:::i;:::-;8080:74;;8163:93;8252:3;8163:93;:::i;:::-;8281:2;8276:3;8272:12;8265:19;;8070:220;;;:::o;8296:366::-;8438:3;8459:67;8523:2;8518:3;8459:67;:::i;:::-;8452:74;;8535:93;8624:3;8535:93;:::i;:::-;8653:2;8648:3;8644:12;8637:19;;8442:220;;;:::o;8668:366::-;8810:3;8831:67;8895:2;8890:3;8831:67;:::i;:::-;8824:74;;8907:93;8996:3;8907:93;:::i;:::-;9025:2;9020:3;9016:12;9009:19;;8814:220;;;:::o;9040:366::-;9182:3;9203:67;9267:2;9262:3;9203:67;:::i;:::-;9196:74;;9279:93;9368:3;9279:93;:::i;:::-;9397:2;9392:3;9388:12;9381:19;;9186:220;;;:::o;9412:366::-;9554:3;9575:67;9639:2;9634:3;9575:67;:::i;:::-;9568:74;;9651:93;9740:3;9651:93;:::i;:::-;9769:2;9764:3;9760:12;9753:19;;9558:220;;;:::o;9784:366::-;9926:3;9947:67;10011:2;10006:3;9947:67;:::i;:::-;9940:74;;10023:93;10112:3;10023:93;:::i;:::-;10141:2;10136:3;10132:12;10125:19;;9930:220;;;:::o;10156:366::-;10298:3;10319:67;10383:2;10378:3;10319:67;:::i;:::-;10312:74;;10395:93;10484:3;10395:93;:::i;:::-;10513:2;10508:3;10504:12;10497:19;;10302:220;;;:::o;10528:366::-;10670:3;10691:67;10755:2;10750:3;10691:67;:::i;:::-;10684:74;;10767:93;10856:3;10767:93;:::i;:::-;10885:2;10880:3;10876:12;10869:19;;10674:220;;;:::o;10900:366::-;11042:3;11063:67;11127:2;11122:3;11063:67;:::i;:::-;11056:74;;11139:93;11228:3;11139:93;:::i;:::-;11257:2;11252:3;11248:12;11241:19;;11046:220;;;:::o;11272:366::-;11414:3;11435:67;11499:2;11494:3;11435:67;:::i;:::-;11428:74;;11511:93;11600:3;11511:93;:::i;:::-;11629:2;11624:3;11620:12;11613:19;;11418:220;;;:::o;11644:366::-;11786:3;11807:67;11871:2;11866:3;11807:67;:::i;:::-;11800:74;;11883:93;11972:3;11883:93;:::i;:::-;12001:2;11996:3;11992:12;11985:19;;11790:220;;;:::o;12016:366::-;12158:3;12179:67;12243:2;12238:3;12179:67;:::i;:::-;12172:74;;12255:93;12344:3;12255:93;:::i;:::-;12373:2;12368:3;12364:12;12357:19;;12162:220;;;:::o;12388:118::-;12475:24;12493:5;12475:24;:::i;:::-;12470:3;12463:37;12453:53;;:::o;12512:112::-;12595:22;12611:5;12595:22;:::i;:::-;12590:3;12583:35;12573:51;;:::o;12630:222::-;12723:4;12761:2;12750:9;12746:18;12738:26;;12774:71;12842:1;12831:9;12827:17;12818:6;12774:71;:::i;:::-;12728:124;;;;:::o;12858:332::-;12979:4;13017:2;13006:9;13002:18;12994:26;;13030:71;13098:1;13087:9;13083:17;13074:6;13030:71;:::i;:::-;13111:72;13179:2;13168:9;13164:18;13155:6;13111:72;:::i;:::-;12984:206;;;;;:::o;13196:332::-;13317:4;13355:2;13344:9;13340:18;13332:26;;13368:71;13436:1;13425:9;13421:17;13412:6;13368:71;:::i;:::-;13449:72;13517:2;13506:9;13502:18;13493:6;13449:72;:::i;:::-;13322:206;;;;;:::o;13534:807::-;13783:4;13821:3;13810:9;13806:19;13798:27;;13835:71;13903:1;13892:9;13888:17;13879:6;13835:71;:::i;:::-;13916:72;13984:2;13973:9;13969:18;13960:6;13916:72;:::i;:::-;13998:80;14074:2;14063:9;14059:18;14050:6;13998:80;:::i;:::-;14088;14164:2;14153:9;14149:18;14140:6;14088:80;:::i;:::-;14178:73;14246:3;14235:9;14231:19;14222:6;14178:73;:::i;:::-;14261;14329:3;14318:9;14314:19;14305:6;14261:73;:::i;:::-;13788:553;;;;;;;;;:::o;14347:210::-;14434:4;14472:2;14461:9;14457:18;14449:26;;14485:65;14547:1;14536:9;14532:17;14523:6;14485:65;:::i;:::-;14439:118;;;;:::o;14563:313::-;14676:4;14714:2;14703:9;14699:18;14691:26;;14763:9;14757:4;14753:20;14749:1;14738:9;14734:17;14727:47;14791:78;14864:4;14855:6;14791:78;:::i;:::-;14783:86;;14681:195;;;;:::o;14882:419::-;15048:4;15086:2;15075:9;15071:18;15063:26;;15135:9;15129:4;15125:20;15121:1;15110:9;15106:17;15099:47;15163:131;15289:4;15163:131;:::i;:::-;15155:139;;15053:248;;;:::o;15307:419::-;15473:4;15511:2;15500:9;15496:18;15488:26;;15560:9;15554:4;15550:20;15546:1;15535:9;15531:17;15524:47;15588:131;15714:4;15588:131;:::i;:::-;15580:139;;15478:248;;;:::o;15732:419::-;15898:4;15936:2;15925:9;15921:18;15913:26;;15985:9;15979:4;15975:20;15971:1;15960:9;15956:17;15949:47;16013:131;16139:4;16013:131;:::i;:::-;16005:139;;15903:248;;;:::o;16157:419::-;16323:4;16361:2;16350:9;16346:18;16338:26;;16410:9;16404:4;16400:20;16396:1;16385:9;16381:17;16374:47;16438:131;16564:4;16438:131;:::i;:::-;16430:139;;16328:248;;;:::o;16582:419::-;16748:4;16786:2;16775:9;16771:18;16763:26;;16835:9;16829:4;16825:20;16821:1;16810:9;16806:17;16799:47;16863:131;16989:4;16863:131;:::i;:::-;16855:139;;16753:248;;;:::o;17007:419::-;17173:4;17211:2;17200:9;17196:18;17188:26;;17260:9;17254:4;17250:20;17246:1;17235:9;17231:17;17224:47;17288:131;17414:4;17288:131;:::i;:::-;17280:139;;17178:248;;;:::o;17432:419::-;17598:4;17636:2;17625:9;17621:18;17613:26;;17685:9;17679:4;17675:20;17671:1;17660:9;17656:17;17649:47;17713:131;17839:4;17713:131;:::i;:::-;17705:139;;17603:248;;;:::o;17857:419::-;18023:4;18061:2;18050:9;18046:18;18038:26;;18110:9;18104:4;18100:20;18096:1;18085:9;18081:17;18074:47;18138:131;18264:4;18138:131;:::i;:::-;18130:139;;18028:248;;;:::o;18282:419::-;18448:4;18486:2;18475:9;18471:18;18463:26;;18535:9;18529:4;18525:20;18521:1;18510:9;18506:17;18499:47;18563:131;18689:4;18563:131;:::i;:::-;18555:139;;18453:248;;;:::o;18707:419::-;18873:4;18911:2;18900:9;18896:18;18888:26;;18960:9;18954:4;18950:20;18946:1;18935:9;18931:17;18924:47;18988:131;19114:4;18988:131;:::i;:::-;18980:139;;18878:248;;;:::o;19132:419::-;19298:4;19336:2;19325:9;19321:18;19313:26;;19385:9;19379:4;19375:20;19371:1;19360:9;19356:17;19349:47;19413:131;19539:4;19413:131;:::i;:::-;19405:139;;19303:248;;;:::o;19557:419::-;19723:4;19761:2;19750:9;19746:18;19738:26;;19810:9;19804:4;19800:20;19796:1;19785:9;19781:17;19774:47;19838:131;19964:4;19838:131;:::i;:::-;19830:139;;19728:248;;;:::o;19982:222::-;20075:4;20113:2;20102:9;20098:18;20090:26;;20126:71;20194:1;20183:9;20179:17;20170:6;20126:71;:::i;:::-;20080:124;;;;:::o;20210:831::-;20473:4;20511:3;20500:9;20496:19;20488:27;;20525:71;20593:1;20582:9;20578:17;20569:6;20525:71;:::i;:::-;20606:80;20682:2;20671:9;20667:18;20658:6;20606:80;:::i;:::-;20733:9;20727:4;20723:20;20718:2;20707:9;20703:18;20696:48;20761:108;20864:4;20855:6;20761:108;:::i;:::-;20753:116;;20879:72;20947:2;20936:9;20932:18;20923:6;20879:72;:::i;:::-;20961:73;21029:3;21018:9;21014:19;21005:6;20961:73;:::i;:::-;20478:563;;;;;;;;:::o;21047:214::-;21136:4;21174:2;21163:9;21159:18;21151:26;;21187:67;21251:1;21240:9;21236:17;21227:6;21187:67;:::i;:::-;21141:120;;;;:::o;21267:129::-;21301:6;21328:20;;:::i;:::-;21318:30;;21357:33;21385:4;21377:6;21357:33;:::i;:::-;21308:88;;;:::o;21402:75::-;21435:6;21468:2;21462:9;21452:19;;21442:35;:::o;21483:311::-;21560:4;21650:18;21642:6;21639:30;21636:2;;;21672:18;;:::i;:::-;21636:2;21722:4;21714:6;21710:17;21702:25;;21782:4;21776;21772:15;21764:23;;21565:229;;;:::o;21800:132::-;21867:4;21890:3;21882:11;;21920:4;21915:3;21911:14;21903:22;;21872:60;;;:::o;21938:114::-;22005:6;22039:5;22033:12;22023:22;;22012:40;;;:::o;22058:99::-;22110:6;22144:5;22138:12;22128:22;;22117:40;;;:::o;22163:113::-;22233:4;22265;22260:3;22256:14;22248:22;;22238:38;;;:::o;22282:184::-;22381:11;22415:6;22410:3;22403:19;22455:4;22450:3;22446:14;22431:29;;22393:73;;;;:::o;22472:169::-;22556:11;22590:6;22585:3;22578:19;22630:4;22625:3;22621:14;22606:29;;22568:73;;;;:::o;22647:305::-;22687:3;22706:20;22724:1;22706:20;:::i;:::-;22701:25;;22740:20;22758:1;22740:20;:::i;:::-;22735:25;;22894:1;22826:66;22822:74;22819:1;22816:81;22813:2;;;22900:18;;:::i;:::-;22813:2;22944:1;22941;22937:9;22930:16;;22691:261;;;;:::o;22958:185::-;22998:1;23015:20;23033:1;23015:20;:::i;:::-;23010:25;;23049:20;23067:1;23049:20;:::i;:::-;23044:25;;23088:1;23078:2;;23093:18;;:::i;:::-;23078:2;23135:1;23132;23128:9;23123:14;;23000:143;;;;:::o;23149:348::-;23189:7;23212:20;23230:1;23212:20;:::i;:::-;23207:25;;23246:20;23264:1;23246:20;:::i;:::-;23241:25;;23434:1;23366:66;23362:74;23359:1;23356:81;23351:1;23344:9;23337:17;23333:105;23330:2;;;23441:18;;:::i;:::-;23330:2;23489:1;23486;23482:9;23471:20;;23197:300;;;;:::o;23503:191::-;23543:4;23563:20;23581:1;23563:20;:::i;:::-;23558:25;;23597:20;23615:1;23597:20;:::i;:::-;23592:25;;23636:1;23633;23630:8;23627:2;;;23641:18;;:::i;:::-;23627:2;23686:1;23683;23679:9;23671:17;;23548:146;;;;:::o;23700:96::-;23737:7;23766:24;23784:5;23766:24;:::i;:::-;23755:35;;23745:51;;;:::o;23802:104::-;23847:7;23876:24;23894:5;23876:24;:::i;:::-;23865:35;;23855:51;;;:::o;23912:90::-;23946:7;23989:5;23982:13;23975:21;23964:32;;23954:48;;;:::o;24008:126::-;24045:7;24085:42;24078:5;24074:54;24063:65;;24053:81;;;:::o;24140:77::-;24177:7;24206:5;24195:16;;24185:32;;;:::o;24223:86::-;24258:7;24298:4;24291:5;24287:16;24276:27;;24266:43;;;:::o;24315:121::-;24373:9;24406:24;24424:5;24406:24;:::i;:::-;24393:37;;24383:53;;;:::o;24442:307::-;24510:1;24520:113;24534:6;24531:1;24528:13;24520:113;;;24619:1;24614:3;24610:11;24604:18;24600:1;24595:3;24591:11;24584:39;24556:2;24553:1;24549:10;24544:15;;24520:113;;;24651:6;24648:1;24645:13;24642:2;;;24731:1;24722:6;24717:3;24713:16;24706:27;24642:2;24491:258;;;;:::o;24755:281::-;24838:27;24860:4;24838:27;:::i;:::-;24830:6;24826:40;24968:6;24956:10;24953:22;24932:18;24920:10;24917:34;24914:62;24911:2;;;24979:18;;:::i;:::-;24911:2;25019:10;25015:2;25008:22;24798:238;;;:::o;25042:233::-;25081:3;25104:24;25122:5;25104:24;:::i;:::-;25095:33;;25150:66;25143:5;25140:77;25137:2;;;25220:18;;:::i;:::-;25137:2;25267:1;25260:5;25256:13;25249:20;;25085:190;;;:::o;25281:180::-;25329:77;25326:1;25319:88;25426:4;25423:1;25416:15;25450:4;25447:1;25440:15;25467:180;25515:77;25512:1;25505:88;25612:4;25609:1;25602:15;25636:4;25633:1;25626:15;25653:180;25701:77;25698:1;25691:88;25798:4;25795:1;25788:15;25822:4;25819:1;25812:15;25839:102;25880:6;25931:2;25927:7;25922:2;25915:5;25911:14;25907:28;25897:38;;25887:54;;;:::o;25947:222::-;26087:34;26083:1;26075:6;26071:14;26064:58;26156:5;26151:2;26143:6;26139:15;26132:30;26053:116;:::o;26175:229::-;26315:34;26311:1;26303:6;26299:14;26292:58;26384:12;26379:2;26371:6;26367:15;26360:37;26281:123;:::o;26410:221::-;26550:34;26546:1;26538:6;26534:14;26527:58;26619:4;26614:2;26606:6;26602:15;26595:29;26516:115;:::o;26637:177::-;26777:29;26773:1;26765:6;26761:14;26754:53;26743:71;:::o;26820:178::-;26960:30;26956:1;26948:6;26944:14;26937:54;26926:72;:::o;27004:178::-;27144:30;27140:1;27132:6;27128:14;27121:54;27110:72;:::o;27188:220::-;27328:34;27324:1;27316:6;27312:14;27305:58;27397:3;27392:2;27384:6;27380:15;27373:28;27294:114;:::o;27414:182::-;27554:34;27550:1;27542:6;27538:14;27531:58;27520:76;:::o;27602:228::-;27742:34;27738:1;27730:6;27726:14;27719:58;27811:11;27806:2;27798:6;27794:15;27787:36;27708:122;:::o;27836:224::-;27976:34;27972:1;27964:6;27960:14;27953:58;28045:7;28040:2;28032:6;28028:15;28021:32;27942:118;:::o;28066:223::-;28206:34;28202:1;28194:6;28190:14;28183:58;28275:6;28270:2;28262:6;28258:15;28251:31;28172:117;:::o;28295:173::-;28435:25;28431:1;28423:6;28419:14;28412:49;28401:67;:::o;28474:122::-;28547:24;28565:5;28547:24;:::i;:::-;28540:5;28537:35;28527:2;;28586:1;28583;28576:12;28527:2;28517:79;:::o;28602:138::-;28683:32;28709:5;28683:32;:::i;:::-;28676:5;28673:43;28663:2;;28730:1;28727;28720:12;28663:2;28653:87;:::o;28746:116::-;28816:21;28831:5;28816:21;:::i;:::-;28809:5;28806:32;28796:2;;28852:1;28849;28842:12;28796:2;28786:76;:::o;28868:122::-;28941:24;28959:5;28941:24;:::i;:::-;28934:5;28931:35;28921:2;;28980:1;28977;28970:12;28921:2;28911:79;:::o

Swarm Source

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