ETH Price: $3,280.55 (+1.10%)

Token

Franken Inu (Franky)
 

Overview

Max Total Supply

1,000,000,000,000 Franky

Holders

23

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
31,300,707,061.734895954 Franky

Value
$0.00
0x2065ca2e5a745f6e627e92e21d3036ed7d2bbdc1
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:
FrankenInu

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-10-09
*/

/*

Franky is as spoopy as he is cute and he's looking to help everyone make some gains!

2% marketing
8% buyback

1 trillion supply

*/

// SPDX-License-Identifier: MIT
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 IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In, 
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        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,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

abstract contract IERC20Extented is IERC20 {
    function decimals() public view virtual returns (uint8);
    function name() public view virtual returns (string memory);
    function symbol() public view virtual returns (string memory);
}

contract FrankenInu is Context, IERC20, IERC20Extented, Ownable {
    using SafeMath for uint256;
    string private constant _name = "Franken Inu";
    string private constant _symbol = "Franky";
    uint8 private constant _decimals = 9;
    mapping(address => uint256) private balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant _tTotal = 1000000000000 * 10**9;
    uint256 private _tFeeTotal;

    uint256 private _firstBlock;
    uint256 private _botBlocks;

    uint256 public _buybackFee = 80; 
    uint256 private _previousBuybackFee = _buybackFee;
    uint256 public _marketingFee = 10; 
    uint256 private _previousMarketingFee = _marketingFee;
    uint256 public _devFee = 10; 
    uint256 private _previousDevFee = _devFee;
 
    uint256 public _marketingPercent = 20;
    uint256 public _buybackPercent = 80;
    
    mapping(address => bool) private bots;
    address payable private _marketingAddress = payable(0xc5181bdA608069bFE60B5B52D293aE84FA6db4C8);
    address payable private _buybackAddress = payable(0x193c29646F749ACb902932943D308605A9D767C0);

    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;
    uint256 private _maxTxAmount;
  
    bool private tradingOpen = false;
    bool private inSwap = false;

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    event PercentsUpdated(uint256 _marketingPercent, uint256 _buybackPercent);
    event FeesUpdated(uint256 _buybackFee, uint256 _marketingFee, uint256 _devFee);
    
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor() {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router),type(uint256).max);

        _maxTxAmount = _tTotal; // start off transaction limit at 100% of total supply

        balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingAddress] = true;
        _isExcludedFromFee[_buybackAddress] = true;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

    function decimals() override 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 balances[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 removeAllFee() private {
        if (_marketingFee == 0 && _buybackFee == 0 && _devFee == 0) return;
        _previousMarketingFee = _marketingFee;
        _previousBuybackFee = _buybackFee;
        _previousDevFee = _devFee;
        
        _marketingFee = 0;
        _buybackFee = 0;
        _devFee = 0;
    }
    
    function restoreAllFee() private {
        _marketingFee = _previousMarketingFee;
        _buybackFee = _previousBuybackFee;
        _devFee = _previousDevFee;
    }

    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(tradingOpen);
            require(amount <= _maxTxAmount);
            
            if (block.timestamp <= _firstBlock) { 
                require(amount <= _tTotal.div(1000));
            }
            
            if (from == uniswapV2Pair && to != address(uniswapV2Router)) { 
                if (block.timestamp <= _firstBlock.add(_botBlocks)) {
                    bots[to] = true;            
                }
            }
            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && from != uniswapV2Pair && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) { 
                require(!bots[to] && !bots[from]); 

                if (contractTokenBalance > 0) {
                    swapTokensForEth(contractTokenBalance);
                }
                
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        bool takeFee = true;
        
        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }
        
        _tokenTransfer(from, to, amount, takeFee);
        
        restoreAllFee();
    }
    
    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp);
    }

    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount.mul(_marketingPercent).div(100));
        _buybackAddress.transfer(amount.mul(_buybackPercent).div(100));
    }
    
    function openTrading(uint256 botBlocks) external onlyOwner() {
        _firstBlock = block.timestamp;
        _botBlocks = botBlocks;
        tradingOpen = true;
    }

    function manualswap() external {
        require(_msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require(_msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function _tokenTransfer(address sender, address recipient, uint256 tAmount, bool takeFee) private {
        if (!takeFee) removeAllFee();
        (uint256 tTransferAmount, uint256 tBuyback, uint256 tMarketing, uint256 tDev) = _getValues(tAmount);
        balances[sender] = balances[sender].sub(tAmount);
        balances[recipient] = balances[recipient].add(tTransferAmount);
        _takeBuyback(tBuyback);
        _takeMarketing(tMarketing);
        _takeDev(tDev);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeBuyback(uint256 tBuyback) private {
        balances[address(this)] = balances[address(this)].add(tBuyback);
    }
    
    function _takeMarketing(uint256 tMarketing) private {
        balances[address(this)] = balances[address(this)].add(tMarketing);
    }
    
    function _takeDev(uint256 tDev) private {
        balances[address(this)] = balances[address(this)].add(tDev);
    }

    receive() external payable {}

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256) {
        uint256 tBuyback = tAmount.mul(_buybackFee).div(1000);
        uint256 tMarketing = tAmount.mul(_marketingFee).div(1000);
        uint256 tDev = tAmount.mul(_devFee).div(1000);
        uint256 tTransferAmount = tAmount.sub(tBuyback).sub(tMarketing);
        tTransferAmount -= tDev;
        return (tTransferAmount, tBuyback, tMarketing, tDev);
    }
  
    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }
  
    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }
    function removeBot(address account) public onlyOwner() {
        bots[account] = false;
    }
  
    function addBot(address account) public onlyOwner() {
        bots[account] = true;
    }
    
    function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner() {
        require(maxTxPercent > 0, "Amount must be greater than 0");
        _maxTxAmount = _tTotal.mul(maxTxPercent).div(10**2);
        emit MaxTxAmountUpdated(_maxTxAmount);
    }
    
    function setPercents(uint256 marketingPercent, uint256 buybackPercent) external onlyOwner() {
        require(marketingPercent.add(buybackPercent) == 100, "Sum of percents must equal 100");
        _marketingPercent = marketingPercent;
        _buybackPercent = buybackPercent;
        emit PercentsUpdated(_marketingPercent, _buybackPercent);
    }
    
    function setTaxes(uint256 marketingFee, uint256 buybackFee, uint256 devFee) external onlyOwner() {
        require(marketingFee.add(buybackFee).add(devFee) <= 1000, "Sum of sell fees must be less than 1000");
        _marketingFee = marketingFee;
        _buybackFee = buybackFee;
        _devFee = devFee;
        
        _previousMarketingFee =  _marketingFee;
        _previousBuybackFee = _buybackFee;
        _previousDevFee = _devFee;
        
        emit FeesUpdated(_marketingFee, _buybackFee, _devFee);
    }

}

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":"_buybackFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"FeesUpdated","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":false,"internalType":"uint256","name":"_marketingPercent","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_buybackPercent","type":"uint256"}],"name":"PercentsUpdated","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":"_buybackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buybackPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addBot","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":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"botBlocks","type":"uint256"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingPercent","type":"uint256"},{"internalType":"uint256","name":"buybackPercent","type":"uint256"}],"name":"setPercents","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingFee","type":"uint256"},{"internalType":"uint256","name":"buybackFee","type":"uint256"},{"internalType":"uint256","name":"devFee","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526050600855600854600955600a8055600a54600b55600a600c55600c54600d556014600e556050600f5573c5181bda608069bfe60b5b52d293ae84fa6db4c8601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073193c29646f749acb902932943d308605a9d767c0601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601660006101000a81548160ff0219169083151502179055506000601660016101000a81548160ff0219169083151502179055503480156200011b57600080fd5b5060006200012e620007d760201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200026430601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16683635c9adc5dea00000620007df60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002ab57600080fd5b505afa158015620002c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e6919062000a09565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200034957600080fd5b505afa1580156200035e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000384919062000a09565b6040518363ffffffff1660e01b8152600401620003a392919062000ad1565b602060405180830381600087803b158015620003be57600080fd5b505af1158015620003d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f9919062000a09565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401620004da92919062000afe565b602060405180830381600087803b158015620004f557600080fd5b505af11580156200050a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000530919062000a35565b50683635c9adc5dea00000601581905550683635c9adc5dea00000600260006200055f620007d760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160046000620005b3620009b260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000760620007d760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef683635c9adc5dea00000604051620007c8919062000b6f565b60405180910390a35062000cb9565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141562000852576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008499062000b4d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620008c5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008bc9062000b2b565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051620009a5919062000b6f565b60405180910390a3505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050620009ec8162000c85565b92915050565b60008151905062000a038162000c9f565b92915050565b60006020828403121562000a1c57600080fd5b600062000a2c84828501620009db565b91505092915050565b60006020828403121562000a4857600080fd5b600062000a5884828501620009f2565b91505092915050565b62000a6c8162000b9d565b82525050565b600062000a8160228362000b8c565b915062000a8e8262000be7565b604082019050919050565b600062000aa860248362000b8c565b915062000ab58262000c36565b604082019050919050565b62000acb8162000bdd565b82525050565b600060408201905062000ae8600083018562000a61565b62000af7602083018462000a61565b9392505050565b600060408201905062000b15600083018562000a61565b62000b24602083018462000ac0565b9392505050565b6000602082019050818103600083015262000b468162000a72565b9050919050565b6000602082019050818103600083015262000b688162000a99565b9050919050565b600060208201905062000b86600083018462000ac0565b92915050565b600082825260208201905092915050565b600062000baa8262000bbd565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b62000c908162000b9d565b811462000c9c57600080fd5b50565b62000caa8162000bb1565b811462000cb657600080fd5b50565b6133f98062000cc96000396000f3fe6080604052600436106101a05760003560e01c8063770d9907116100ec578063d16336491161008a578063e1d7eefd11610064578063e1d7eefd1461059d578063e9dae5ed146105c8578063ea2f0b37146105f1578063ffecf5161461061a576101a7565b8063d16336491461050e578063d543dbeb14610537578063dd62ed3e14610560576101a7565b8063a9059cbb116100c6578063a9059cbb14610466578063aa45026b146104a3578063b44a14b6146104ce578063c3c8cd80146104f7576101a7565b8063770d9907146103e55780638da5cb5b1461041057806395d89b411461043b576101a7565b8063313ce567116101595780635fecd926116101335780635fecd926146103515780636fc3eaec1461037a57806370a0823114610391578063715018a6146103ce576101a7565b8063313ce567146102d2578063437823ec146102fd57806349bd5a5e14610326576101a7565b806306fdde03146101ac578063095ea7b3146101d757806318160ddd1461021457806319de79ab1461023f57806322976e0d1461026a57806323b872dd14610295576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c1610643565b6040516101ce9190612bbb565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f9919061280b565b610680565b60405161020b9190612ba0565b60405180910390f35b34801561022057600080fd5b5061022961069e565b6040516102369190612d3d565b60405180910390f35b34801561024b57600080fd5b506102546106af565b6040516102619190612d3d565b60405180910390f35b34801561027657600080fd5b5061027f6106b5565b60405161028c9190612d3d565b60405180910390f35b3480156102a157600080fd5b506102bc60048036038101906102b791906127bc565b6106bb565b6040516102c99190612ba0565b60405180910390f35b3480156102de57600080fd5b506102e7610794565b6040516102f49190612e12565b60405180910390f35b34801561030957600080fd5b50610324600480360381019061031f919061272e565b61079d565b005b34801561033257600080fd5b5061033b61088d565b6040516103489190612b85565b60405180910390f35b34801561035d57600080fd5b506103786004803603810190610373919061272e565b6108b3565b005b34801561038657600080fd5b5061038f6109a3565b005b34801561039d57600080fd5b506103b860048036038101906103b3919061272e565b610a15565b6040516103c59190612d3d565b60405180910390f35b3480156103da57600080fd5b506103e3610a5e565b005b3480156103f157600080fd5b506103fa610bb1565b6040516104079190612d3d565b60405180910390f35b34801561041c57600080fd5b50610425610bb7565b6040516104329190612b85565b60405180910390f35b34801561044757600080fd5b50610450610be0565b60405161045d9190612bbb565b60405180910390f35b34801561047257600080fd5b5061048d6004803603810190610488919061280b565b610c1d565b60405161049a9190612ba0565b60405180910390f35b3480156104af57600080fd5b506104b8610c3b565b6040516104c59190612d3d565b60405180910390f35b3480156104da57600080fd5b506104f560048036038101906104f09190612870565b610c41565b005b34801561050357600080fd5b5061050c610d7a565b005b34801561051a57600080fd5b5061053560048036038101906105309190612847565b610df4565b005b34801561054357600080fd5b5061055e60048036038101906105599190612847565b610eb5565b005b34801561056c57600080fd5b5061058760048036038101906105829190612780565b610ffe565b6040516105949190612d3d565b60405180910390f35b3480156105a957600080fd5b506105b2611085565b6040516105bf9190612d3d565b60405180910390f35b3480156105d457600080fd5b506105ef60048036038101906105ea91906128ac565b61108b565b005b3480156105fd57600080fd5b506106186004803603810190610613919061272e565b6111ff565b005b34801561062657600080fd5b50610641600480360381019061063c919061272e565b6112ef565b005b60606040518060400160405280600b81526020017f4672616e6b656e20496e75000000000000000000000000000000000000000000815250905090565b600061069461068d6113df565b84846113e7565b6001905092915050565b6000683635c9adc5dea00000905090565b60085481565b600a5481565b60006106c88484846115b2565b610789846106d46113df565b6107848560405180606001604052806028815260200161339c60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061073a6113df565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ba39092919063ffffffff16565b6113e7565b600190509392505050565b60006009905090565b6107a56113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082990612c9d565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108bb6113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093f90612c9d565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109e46113df565b73ffffffffffffffffffffffffffffffffffffffff1614610a0457600080fd5b6000479050610a1281611c07565b50565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a666113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610af3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aea90612c9d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600e5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f4672616e6b790000000000000000000000000000000000000000000000000000815250905090565b6000610c31610c2a6113df565b84846115b2565b6001905092915050565b600c5481565b610c496113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccd90612c9d565b60405180910390fd5b6064610ceb8284611d2a90919063ffffffff16565b14610d2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2290612cdd565b60405180910390fd5b81600e8190555080600f819055507f012f5df73148ec03a4ac44111fcf100a014ee232c9f1b328180ab5f3996821e5600e54600f54604051610d6e929190612db2565b60405180910390a15050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610dbb6113df565b73ffffffffffffffffffffffffffffffffffffffff1614610ddb57600080fd5b6000610de630610a15565b9050610df181611d88565b50565b610dfc6113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8090612c9d565b60405180910390fd5b42600681905550806007819055506001601660006101000a81548160ff02191690831515021790555050565b610ebd6113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4190612c9d565b60405180910390fd5b60008111610f8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8490612c3d565b60405180910390fd5b610fbc6064610fae83683635c9adc5dea0000061208290919063ffffffff16565b6120fd90919063ffffffff16565b6015819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf601554604051610ff39190612d3d565b60405180910390a150565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600f5481565b6110936113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611120576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111790612c9d565b60405180910390fd5b6103e86111488261113a8587611d2a90919063ffffffff16565b611d2a90919063ffffffff16565b1115611189576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118090612c5d565b60405180910390fd5b82600a819055508160088190555080600c81905550600a54600b81905550600854600981905550600c54600d819055507fcf8a1e1d5f09cf3c97dbb653cd9a4d7aace9292fbc1bb8211febf2d400febbdd600a54600854600c546040516111f293929190612ddb565b60405180910390a1505050565b6112076113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611294576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128b90612c9d565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6112f76113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611384576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137b90612c9d565b60405180910390fd5b6001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611457576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144e90612d1d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114be90612bfd565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115a59190612d3d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611622576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161990612cfd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611692576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168990612bdd565b60405180910390fd5b600081116116d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cc90612cbd565b60405180910390fd5b6116dd610bb7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561174b575061171b610bb7565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ad857601660009054906101000a900460ff1661176957600080fd5b60155481111561177857600080fd5b60065442116117ac5761179f6103e8683635c9adc5dea000006120fd90919063ffffffff16565b8111156117ab57600080fd5b5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118575750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156118d357611873600754600654611d2a90919063ffffffff16565b42116118d2576001601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b60006118de30610a15565b9050601660019054906101000a900460ff1615801561194b5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156119a15750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156119f75750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ad657601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611aa05750601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611aa957600080fd5b6000811115611abc57611abb81611d88565b5b60004790506000811115611ad457611ad347611c07565b5b505b505b600060019050600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611b7f5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611b8957600090505b611b9584848484612147565b611b9d612320565b50505050565b6000838311158290611beb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be29190612bbb565b60405180910390fd5b5060008385611bfa9190612f63565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611c6b6064611c5d600e548661208290919063ffffffff16565b6120fd90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611c96573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611cfb6064611ced600f548661208290919063ffffffff16565b6120fd90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611d26573d6000803e3d6000fd5b5050565b6000808284611d399190612e82565b905083811015611d7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7590612c1d565b60405180910390fd5b8091505092915050565b6001601660016101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611de6577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015611e145781602001602082028036833780820191505090505b5090503081600081518110611e52577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611ef457600080fd5b505afa158015611f08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f2c9190612757565b81600181518110611f66577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611fcd30601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113e7565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612031959493929190612d58565b600060405180830381600087803b15801561204b57600080fd5b505af115801561205f573d6000803e3d6000fd5b50505050506000601660016101000a81548160ff02191690831515021790555050565b60008083141561209557600090506120f7565b600082846120a39190612f09565b90508284826120b29190612ed8565b146120f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e990612c7d565b60405180910390fd5b809150505b92915050565b600061213f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061233d565b905092915050565b80612155576121546123a0565b5b60008060008061216486612402565b93509350935093506121be86600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124dd90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061225384600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d2a90919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061229f83612527565b6122a8826125bf565b6122b181612657565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161230e9190612d3d565b60405180910390a35050505050505050565b600b54600a81905550600954600881905550600d54600c81905550565b60008083118290612384576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237b9190612bbb565b60405180910390fd5b50600083856123939190612ed8565b9050809150509392505050565b6000600a541480156123b457506000600854145b80156123c257506000600c54145b156123cc57612400565b600a54600b81905550600854600981905550600c54600d819055506000600a8190555060006008819055506000600c819055505b565b60008060008060006124336103e86124256008548961208290919063ffffffff16565b6120fd90919063ffffffff16565b905060006124606103e8612452600a548a61208290919063ffffffff16565b6120fd90919063ffffffff16565b9050600061248d6103e861247f600c548b61208290919063ffffffff16565b6120fd90919063ffffffff16565b905060006124b6836124a8868c6124dd90919063ffffffff16565b6124dd90919063ffffffff16565b905081816124c49190612f63565b9050808484849750975097509750505050509193509193565b600061251f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ba3565b905092915050565b61257981600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d2a90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b61261181600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d2a90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b6126a981600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d2a90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b6000813590506126fe8161336d565b92915050565b6000815190506127138161336d565b92915050565b60008135905061272881613384565b92915050565b60006020828403121561274057600080fd5b600061274e848285016126ef565b91505092915050565b60006020828403121561276957600080fd5b600061277784828501612704565b91505092915050565b6000806040838503121561279357600080fd5b60006127a1858286016126ef565b92505060206127b2858286016126ef565b9150509250929050565b6000806000606084860312156127d157600080fd5b60006127df868287016126ef565b93505060206127f0868287016126ef565b925050604061280186828701612719565b9150509250925092565b6000806040838503121561281e57600080fd5b600061282c858286016126ef565b925050602061283d85828601612719565b9150509250929050565b60006020828403121561285957600080fd5b600061286784828501612719565b91505092915050565b6000806040838503121561288357600080fd5b600061289185828601612719565b92505060206128a285828601612719565b9150509250929050565b6000806000606084860312156128c157600080fd5b60006128cf86828701612719565b93505060206128e086828701612719565b92505060406128f186828701612719565b9150509250925092565b60006129078383612913565b60208301905092915050565b61291c81612f97565b82525050565b61292b81612f97565b82525050565b600061293c82612e3d565b6129468185612e60565b935061295183612e2d565b8060005b8381101561298257815161296988826128fb565b975061297483612e53565b925050600181019050612955565b5085935050505092915050565b61299881612fa9565b82525050565b6129a781612fec565b82525050565b60006129b882612e48565b6129c28185612e71565b93506129d2818560208601612ffe565b6129db8161308f565b840191505092915050565b60006129f3602383612e71565b91506129fe826130a0565b604082019050919050565b6000612a16602283612e71565b9150612a21826130ef565b604082019050919050565b6000612a39601b83612e71565b9150612a448261313e565b602082019050919050565b6000612a5c601d83612e71565b9150612a6782613167565b602082019050919050565b6000612a7f602783612e71565b9150612a8a82613190565b604082019050919050565b6000612aa2602183612e71565b9150612aad826131df565b604082019050919050565b6000612ac5602083612e71565b9150612ad08261322e565b602082019050919050565b6000612ae8602983612e71565b9150612af382613257565b604082019050919050565b6000612b0b601e83612e71565b9150612b16826132a6565b602082019050919050565b6000612b2e602583612e71565b9150612b39826132cf565b604082019050919050565b6000612b51602483612e71565b9150612b5c8261331e565b604082019050919050565b612b7081612fd5565b82525050565b612b7f81612fdf565b82525050565b6000602082019050612b9a6000830184612922565b92915050565b6000602082019050612bb5600083018461298f565b92915050565b60006020820190508181036000830152612bd581846129ad565b905092915050565b60006020820190508181036000830152612bf6816129e6565b9050919050565b60006020820190508181036000830152612c1681612a09565b9050919050565b60006020820190508181036000830152612c3681612a2c565b9050919050565b60006020820190508181036000830152612c5681612a4f565b9050919050565b60006020820190508181036000830152612c7681612a72565b9050919050565b60006020820190508181036000830152612c9681612a95565b9050919050565b60006020820190508181036000830152612cb681612ab8565b9050919050565b60006020820190508181036000830152612cd681612adb565b9050919050565b60006020820190508181036000830152612cf681612afe565b9050919050565b60006020820190508181036000830152612d1681612b21565b9050919050565b60006020820190508181036000830152612d3681612b44565b9050919050565b6000602082019050612d526000830184612b67565b92915050565b600060a082019050612d6d6000830188612b67565b612d7a602083018761299e565b8181036040830152612d8c8186612931565b9050612d9b6060830185612922565b612da86080830184612b67565b9695505050505050565b6000604082019050612dc76000830185612b67565b612dd46020830184612b67565b9392505050565b6000606082019050612df06000830186612b67565b612dfd6020830185612b67565b612e0a6040830184612b67565b949350505050565b6000602082019050612e276000830184612b76565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612e8d82612fd5565b9150612e9883612fd5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612ecd57612ecc613031565b5b828201905092915050565b6000612ee382612fd5565b9150612eee83612fd5565b925082612efe57612efd613060565b5b828204905092915050565b6000612f1482612fd5565b9150612f1f83612fd5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612f5857612f57613031565b5b828202905092915050565b6000612f6e82612fd5565b9150612f7983612fd5565b925082821015612f8c57612f8b613031565b5b828203905092915050565b6000612fa282612fb5565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000612ff782612fd5565b9050919050565b60005b8381101561301c578082015181840152602081019050613001565b8381111561302b576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b7f53756d206f662073656c6c2066656573206d757374206265206c65737320746860008201527f616e203130303000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f53756d206f662070657263656e7473206d75737420657175616c203130300000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b61337681612f97565b811461338157600080fd5b50565b61338d81612fd5565b811461339857600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220fc5f826038e35ea6f90e1b3b1212e1c8c4c61151cfb7c574b725d433b61a5ca164736f6c63430008040033

Deployed Bytecode

0x6080604052600436106101a05760003560e01c8063770d9907116100ec578063d16336491161008a578063e1d7eefd11610064578063e1d7eefd1461059d578063e9dae5ed146105c8578063ea2f0b37146105f1578063ffecf5161461061a576101a7565b8063d16336491461050e578063d543dbeb14610537578063dd62ed3e14610560576101a7565b8063a9059cbb116100c6578063a9059cbb14610466578063aa45026b146104a3578063b44a14b6146104ce578063c3c8cd80146104f7576101a7565b8063770d9907146103e55780638da5cb5b1461041057806395d89b411461043b576101a7565b8063313ce567116101595780635fecd926116101335780635fecd926146103515780636fc3eaec1461037a57806370a0823114610391578063715018a6146103ce576101a7565b8063313ce567146102d2578063437823ec146102fd57806349bd5a5e14610326576101a7565b806306fdde03146101ac578063095ea7b3146101d757806318160ddd1461021457806319de79ab1461023f57806322976e0d1461026a57806323b872dd14610295576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c1610643565b6040516101ce9190612bbb565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f9919061280b565b610680565b60405161020b9190612ba0565b60405180910390f35b34801561022057600080fd5b5061022961069e565b6040516102369190612d3d565b60405180910390f35b34801561024b57600080fd5b506102546106af565b6040516102619190612d3d565b60405180910390f35b34801561027657600080fd5b5061027f6106b5565b60405161028c9190612d3d565b60405180910390f35b3480156102a157600080fd5b506102bc60048036038101906102b791906127bc565b6106bb565b6040516102c99190612ba0565b60405180910390f35b3480156102de57600080fd5b506102e7610794565b6040516102f49190612e12565b60405180910390f35b34801561030957600080fd5b50610324600480360381019061031f919061272e565b61079d565b005b34801561033257600080fd5b5061033b61088d565b6040516103489190612b85565b60405180910390f35b34801561035d57600080fd5b506103786004803603810190610373919061272e565b6108b3565b005b34801561038657600080fd5b5061038f6109a3565b005b34801561039d57600080fd5b506103b860048036038101906103b3919061272e565b610a15565b6040516103c59190612d3d565b60405180910390f35b3480156103da57600080fd5b506103e3610a5e565b005b3480156103f157600080fd5b506103fa610bb1565b6040516104079190612d3d565b60405180910390f35b34801561041c57600080fd5b50610425610bb7565b6040516104329190612b85565b60405180910390f35b34801561044757600080fd5b50610450610be0565b60405161045d9190612bbb565b60405180910390f35b34801561047257600080fd5b5061048d6004803603810190610488919061280b565b610c1d565b60405161049a9190612ba0565b60405180910390f35b3480156104af57600080fd5b506104b8610c3b565b6040516104c59190612d3d565b60405180910390f35b3480156104da57600080fd5b506104f560048036038101906104f09190612870565b610c41565b005b34801561050357600080fd5b5061050c610d7a565b005b34801561051a57600080fd5b5061053560048036038101906105309190612847565b610df4565b005b34801561054357600080fd5b5061055e60048036038101906105599190612847565b610eb5565b005b34801561056c57600080fd5b5061058760048036038101906105829190612780565b610ffe565b6040516105949190612d3d565b60405180910390f35b3480156105a957600080fd5b506105b2611085565b6040516105bf9190612d3d565b60405180910390f35b3480156105d457600080fd5b506105ef60048036038101906105ea91906128ac565b61108b565b005b3480156105fd57600080fd5b506106186004803603810190610613919061272e565b6111ff565b005b34801561062657600080fd5b50610641600480360381019061063c919061272e565b6112ef565b005b60606040518060400160405280600b81526020017f4672616e6b656e20496e75000000000000000000000000000000000000000000815250905090565b600061069461068d6113df565b84846113e7565b6001905092915050565b6000683635c9adc5dea00000905090565b60085481565b600a5481565b60006106c88484846115b2565b610789846106d46113df565b6107848560405180606001604052806028815260200161339c60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061073a6113df565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ba39092919063ffffffff16565b6113e7565b600190509392505050565b60006009905090565b6107a56113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082990612c9d565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108bb6113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093f90612c9d565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109e46113df565b73ffffffffffffffffffffffffffffffffffffffff1614610a0457600080fd5b6000479050610a1281611c07565b50565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a666113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610af3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aea90612c9d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600e5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f4672616e6b790000000000000000000000000000000000000000000000000000815250905090565b6000610c31610c2a6113df565b84846115b2565b6001905092915050565b600c5481565b610c496113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccd90612c9d565b60405180910390fd5b6064610ceb8284611d2a90919063ffffffff16565b14610d2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2290612cdd565b60405180910390fd5b81600e8190555080600f819055507f012f5df73148ec03a4ac44111fcf100a014ee232c9f1b328180ab5f3996821e5600e54600f54604051610d6e929190612db2565b60405180910390a15050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610dbb6113df565b73ffffffffffffffffffffffffffffffffffffffff1614610ddb57600080fd5b6000610de630610a15565b9050610df181611d88565b50565b610dfc6113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8090612c9d565b60405180910390fd5b42600681905550806007819055506001601660006101000a81548160ff02191690831515021790555050565b610ebd6113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4190612c9d565b60405180910390fd5b60008111610f8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8490612c3d565b60405180910390fd5b610fbc6064610fae83683635c9adc5dea0000061208290919063ffffffff16565b6120fd90919063ffffffff16565b6015819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf601554604051610ff39190612d3d565b60405180910390a150565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600f5481565b6110936113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611120576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111790612c9d565b60405180910390fd5b6103e86111488261113a8587611d2a90919063ffffffff16565b611d2a90919063ffffffff16565b1115611189576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118090612c5d565b60405180910390fd5b82600a819055508160088190555080600c81905550600a54600b81905550600854600981905550600c54600d819055507fcf8a1e1d5f09cf3c97dbb653cd9a4d7aace9292fbc1bb8211febf2d400febbdd600a54600854600c546040516111f293929190612ddb565b60405180910390a1505050565b6112076113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611294576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128b90612c9d565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6112f76113df565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611384576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137b90612c9d565b60405180910390fd5b6001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611457576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144e90612d1d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114be90612bfd565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115a59190612d3d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611622576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161990612cfd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611692576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168990612bdd565b60405180910390fd5b600081116116d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cc90612cbd565b60405180910390fd5b6116dd610bb7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561174b575061171b610bb7565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ad857601660009054906101000a900460ff1661176957600080fd5b60155481111561177857600080fd5b60065442116117ac5761179f6103e8683635c9adc5dea000006120fd90919063ffffffff16565b8111156117ab57600080fd5b5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118575750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156118d357611873600754600654611d2a90919063ffffffff16565b42116118d2576001601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b60006118de30610a15565b9050601660019054906101000a900460ff1615801561194b5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156119a15750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156119f75750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ad657601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611aa05750601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611aa957600080fd5b6000811115611abc57611abb81611d88565b5b60004790506000811115611ad457611ad347611c07565b5b505b505b600060019050600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611b7f5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611b8957600090505b611b9584848484612147565b611b9d612320565b50505050565b6000838311158290611beb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be29190612bbb565b60405180910390fd5b5060008385611bfa9190612f63565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611c6b6064611c5d600e548661208290919063ffffffff16565b6120fd90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611c96573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611cfb6064611ced600f548661208290919063ffffffff16565b6120fd90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611d26573d6000803e3d6000fd5b5050565b6000808284611d399190612e82565b905083811015611d7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7590612c1d565b60405180910390fd5b8091505092915050565b6001601660016101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611de6577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015611e145781602001602082028036833780820191505090505b5090503081600081518110611e52577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611ef457600080fd5b505afa158015611f08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f2c9190612757565b81600181518110611f66577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611fcd30601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113e7565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612031959493929190612d58565b600060405180830381600087803b15801561204b57600080fd5b505af115801561205f573d6000803e3d6000fd5b50505050506000601660016101000a81548160ff02191690831515021790555050565b60008083141561209557600090506120f7565b600082846120a39190612f09565b90508284826120b29190612ed8565b146120f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e990612c7d565b60405180910390fd5b809150505b92915050565b600061213f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061233d565b905092915050565b80612155576121546123a0565b5b60008060008061216486612402565b93509350935093506121be86600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124dd90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061225384600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d2a90919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061229f83612527565b6122a8826125bf565b6122b181612657565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161230e9190612d3d565b60405180910390a35050505050505050565b600b54600a81905550600954600881905550600d54600c81905550565b60008083118290612384576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237b9190612bbb565b60405180910390fd5b50600083856123939190612ed8565b9050809150509392505050565b6000600a541480156123b457506000600854145b80156123c257506000600c54145b156123cc57612400565b600a54600b81905550600854600981905550600c54600d819055506000600a8190555060006008819055506000600c819055505b565b60008060008060006124336103e86124256008548961208290919063ffffffff16565b6120fd90919063ffffffff16565b905060006124606103e8612452600a548a61208290919063ffffffff16565b6120fd90919063ffffffff16565b9050600061248d6103e861247f600c548b61208290919063ffffffff16565b6120fd90919063ffffffff16565b905060006124b6836124a8868c6124dd90919063ffffffff16565b6124dd90919063ffffffff16565b905081816124c49190612f63565b9050808484849750975097509750505050509193509193565b600061251f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ba3565b905092915050565b61257981600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d2a90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b61261181600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d2a90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b6126a981600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d2a90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b6000813590506126fe8161336d565b92915050565b6000815190506127138161336d565b92915050565b60008135905061272881613384565b92915050565b60006020828403121561274057600080fd5b600061274e848285016126ef565b91505092915050565b60006020828403121561276957600080fd5b600061277784828501612704565b91505092915050565b6000806040838503121561279357600080fd5b60006127a1858286016126ef565b92505060206127b2858286016126ef565b9150509250929050565b6000806000606084860312156127d157600080fd5b60006127df868287016126ef565b93505060206127f0868287016126ef565b925050604061280186828701612719565b9150509250925092565b6000806040838503121561281e57600080fd5b600061282c858286016126ef565b925050602061283d85828601612719565b9150509250929050565b60006020828403121561285957600080fd5b600061286784828501612719565b91505092915050565b6000806040838503121561288357600080fd5b600061289185828601612719565b92505060206128a285828601612719565b9150509250929050565b6000806000606084860312156128c157600080fd5b60006128cf86828701612719565b93505060206128e086828701612719565b92505060406128f186828701612719565b9150509250925092565b60006129078383612913565b60208301905092915050565b61291c81612f97565b82525050565b61292b81612f97565b82525050565b600061293c82612e3d565b6129468185612e60565b935061295183612e2d565b8060005b8381101561298257815161296988826128fb565b975061297483612e53565b925050600181019050612955565b5085935050505092915050565b61299881612fa9565b82525050565b6129a781612fec565b82525050565b60006129b882612e48565b6129c28185612e71565b93506129d2818560208601612ffe565b6129db8161308f565b840191505092915050565b60006129f3602383612e71565b91506129fe826130a0565b604082019050919050565b6000612a16602283612e71565b9150612a21826130ef565b604082019050919050565b6000612a39601b83612e71565b9150612a448261313e565b602082019050919050565b6000612a5c601d83612e71565b9150612a6782613167565b602082019050919050565b6000612a7f602783612e71565b9150612a8a82613190565b604082019050919050565b6000612aa2602183612e71565b9150612aad826131df565b604082019050919050565b6000612ac5602083612e71565b9150612ad08261322e565b602082019050919050565b6000612ae8602983612e71565b9150612af382613257565b604082019050919050565b6000612b0b601e83612e71565b9150612b16826132a6565b602082019050919050565b6000612b2e602583612e71565b9150612b39826132cf565b604082019050919050565b6000612b51602483612e71565b9150612b5c8261331e565b604082019050919050565b612b7081612fd5565b82525050565b612b7f81612fdf565b82525050565b6000602082019050612b9a6000830184612922565b92915050565b6000602082019050612bb5600083018461298f565b92915050565b60006020820190508181036000830152612bd581846129ad565b905092915050565b60006020820190508181036000830152612bf6816129e6565b9050919050565b60006020820190508181036000830152612c1681612a09565b9050919050565b60006020820190508181036000830152612c3681612a2c565b9050919050565b60006020820190508181036000830152612c5681612a4f565b9050919050565b60006020820190508181036000830152612c7681612a72565b9050919050565b60006020820190508181036000830152612c9681612a95565b9050919050565b60006020820190508181036000830152612cb681612ab8565b9050919050565b60006020820190508181036000830152612cd681612adb565b9050919050565b60006020820190508181036000830152612cf681612afe565b9050919050565b60006020820190508181036000830152612d1681612b21565b9050919050565b60006020820190508181036000830152612d3681612b44565b9050919050565b6000602082019050612d526000830184612b67565b92915050565b600060a082019050612d6d6000830188612b67565b612d7a602083018761299e565b8181036040830152612d8c8186612931565b9050612d9b6060830185612922565b612da86080830184612b67565b9695505050505050565b6000604082019050612dc76000830185612b67565b612dd46020830184612b67565b9392505050565b6000606082019050612df06000830186612b67565b612dfd6020830185612b67565b612e0a6040830184612b67565b949350505050565b6000602082019050612e276000830184612b76565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612e8d82612fd5565b9150612e9883612fd5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612ecd57612ecc613031565b5b828201905092915050565b6000612ee382612fd5565b9150612eee83612fd5565b925082612efe57612efd613060565b5b828204905092915050565b6000612f1482612fd5565b9150612f1f83612fd5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612f5857612f57613031565b5b828202905092915050565b6000612f6e82612fd5565b9150612f7983612fd5565b925082821015612f8c57612f8b613031565b5b828203905092915050565b6000612fa282612fb5565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000612ff782612fd5565b9050919050565b60005b8381101561301c578082015181840152602081019050613001565b8381111561302b576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b7f53756d206f662073656c6c2066656573206d757374206265206c65737320746860008201527f616e203130303000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f53756d206f662070657263656e7473206d75737420657175616c203130300000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b61337681612f97565b811461338157600080fd5b50565b61338d81612fd5565b811461339857600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220fc5f826038e35ea6f90e1b3b1212e1c8c4c61151cfb7c574b725d433b61a5ca164736f6c63430008040033

Deployed Bytecode Sourcemap

7159:10802:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9757:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10616:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10061:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7757:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7852:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10785:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9961:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16348:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8428:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16585:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14669:196;;;;;;;;;;;;;:::i;:::-;;10164:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2737:148;;;;;;;;;;;;;:::i;:::-;;8039:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2523:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9857:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10290:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7953:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17060:354;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14464:197;;;;;;;;;;;;;:::i;:::-;;14285:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16793:255;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10465:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8083:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17426:530;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16469:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16690:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9757:92;9803:13;9836:5;;;;;;;;;;;;;;;;;9829:12;;9757:92;:::o;10616:161::-;10691:4;10708:39;10717:12;:10;:12::i;:::-;10731:7;10740:6;10708:8;:39::i;:::-;10765:4;10758:11;;10616:161;;;;:::o;10061:95::-;10114:7;7625:21;10134:14;;10061:95;:::o;7757:31::-;;;;:::o;7852:33::-;;;;:::o;10785:310::-;10883:4;10900:36;10910:6;10918:9;10929:6;10900:9;:36::i;:::-;10947:118;10956:6;10963:12;:10;:12::i;:::-;10976:88;11014:6;10976:88;;;;;;;;;;;;;;;;;:11;:19;10988:6;10976:19;;;;;;;;;;;;;;;:33;10996:12;:10;:12::i;:::-;10976:33;;;;;;;;;;;;;;;;:37;;:88;;;;;:::i;:::-;10947:8;:118::i;:::-;11083:4;11076:11;;10785:310;;;;;:::o;9961:92::-;10011:5;7399:1;10029:16;;9961:92;:::o;16348:111::-;2660:12;:10;:12::i;:::-;2650:22;;:6;;;;;;;;;;:22;;;2642:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16447:4:::1;16417:18;:27;16436:7;16417:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;16348:111:::0;:::o;8428:28::-;;;;;;;;;;;;;:::o;16585:95::-;2660:12;:10;:12::i;:::-;2650:22;;:6;;;;;;;;;;:22;;;2642:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16667:5:::1;16651:4;:13;16656:7;16651:13;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;16585:95:::0;:::o;14669:196::-;14735:17;;;;;;;;;;;14719:33;;:12;:10;:12::i;:::-;:33;;;14711:42;;;;;;14764:26;14793:21;14764:50;;14825:32;14838:18;14825:12;:32::i;:::-;14669:196;:::o;10164:118::-;10230:7;10257:8;:17;10266:7;10257:17;;;;;;;;;;;;;;;;10250:24;;10164:118;;;:::o;2737:148::-;2660:12;:10;:12::i;:::-;2650:22;;:6;;;;;;;;;;:22;;;2642:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2844:1:::1;2807:40;;2828:6;::::0;::::1;;;;;;;;2807:40;;;;;;;;;;;;2875:1;2858:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2737:148::o:0;8039:37::-;;;;:::o;2523:79::-;2561:7;2588:6;;;;;;;;;;;2581:13;;2523:79;:::o;9857:96::-;9905:13;9938:7;;;;;;;;;;;;;;;;;9931:14;;9857:96;:::o;10290:167::-;10368:4;10385:42;10395:12;:10;:12::i;:::-;10409:9;10420:6;10385:9;:42::i;:::-;10445:4;10438:11;;10290:167;;;;:::o;7953:27::-;;;;:::o;17060:354::-;2660:12;:10;:12::i;:::-;2650:22;;:6;;;;;;;;;;:22;;;2642:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17211:3:::1;17171:36;17192:14;17171:16;:20;;:36;;;;:::i;:::-;:43;17163:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;17280:16;17260:17;:36;;;;17325:14;17307:15;:32;;;;17355:51;17371:17;;17390:15;;17355:51;;;;;;;:::i;:::-;;;;;;;;17060:354:::0;;:::o;14464:197::-;14530:17;;;;;;;;;;;14514:33;;:12;:10;:12::i;:::-;:33;;;14506:42;;;;;;14559:23;14585:24;14603:4;14585:9;:24::i;:::-;14559:50;;14620:33;14637:15;14620:16;:33::i;:::-;14464:197;:::o;14285:171::-;2660:12;:10;:12::i;:::-;2650:22;;:6;;;;;;;;;;:22;;;2642:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14371:15:::1;14357:11;:29;;;;14410:9;14397:10;:22;;;;14444:4;14430:11;;:18;;;;;;;;;;;;;;;;;;14285:171:::0;:::o;16793:255::-;2660:12;:10;:12::i;:::-;2650:22;;:6;;;;;;;;;;:22;;;2642:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16895:1:::1;16880:12;:16;16872:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;16956:36;16986:5;16956:25;16968:12;7625:21;16956:11;;:25;;;;:::i;:::-;:29;;:36;;;;:::i;:::-;16941:12;:51;;;;17008:32;17027:12;;17008:32;;;;;;:::i;:::-;;;;;;;;16793:255:::0;:::o;10465:143::-;10546:7;10573:11;:18;10585:5;10573:18;;;;;;;;;;;;;;;:27;10592:7;10573:27;;;;;;;;;;;;;;;;10566:34;;10465:143;;;;:::o;8083:35::-;;;;:::o;17426:530::-;2660:12;:10;:12::i;:::-;2650:22;;:6;;;;;;;;;;:22;;;2642:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17586:4:::1;17542:40;17575:6;17542:28;17559:10;17542:12;:16;;:28;;;;:::i;:::-;:32;;:40;;;;:::i;:::-;:48;;17534:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;17661:12;17645:13;:28;;;;17698:10;17684:11;:24;;;;17729:6;17719:7;:16;;;;17781:13;;17756:21;:38;;;;17827:11;;17805:19;:33;;;;17867:7;;17849:15;:25;;;;17900:48;17912:13;;17927:11;;17940:7;;17900:48;;;;;;;;:::i;:::-;;;;;;;;17426:530:::0;;;:::o;16469:110::-;2660:12;:10;:12::i;:::-;2650:22;;:6;;;;;;;;;;:22;;;2642:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16566:5:::1;16536:18;:27;16555:7;16536:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;16469:110:::0;:::o;16690:91::-;2660:12;:10;:12::i;:::-;2650:22;;:6;;;;;;;;;;:22;;;2642:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16769:4:::1;16753;:13;16758:7;16753:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;16690:91:::0;:::o;244:98::-;297:7;324:10;317:17;;244:98;:::o;11627:335::-;11737:1;11720:19;;:5;:19;;;;11712:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11818:1;11799:21;;:7;:21;;;;11791:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11900:6;11870:11;:18;11882:5;11870:18;;;;;;;;;;;;;;;:27;11889:7;11870:27;;;;;;;;;;;;;;;:36;;;;11938:7;11922:32;;11931:5;11922:32;;;11947:6;11922:32;;;;;;:::i;:::-;;;;;;;;11627:335;;;:::o;11973:1669::-;12077:1;12061:18;;:4;:18;;;;12053:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12154:1;12140:16;;:2;:16;;;;12132:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12224:1;12215:6;:10;12207:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12296:7;:5;:7::i;:::-;12288:15;;:4;:15;;;;:32;;;;;12313:7;:5;:7::i;:::-;12307:13;;:2;:13;;;;12288:32;12284:1103;;;12345:11;;;;;;;;;;;12337:20;;;;;;12390:12;;12380:6;:22;;12372:31;;;;;;12455:11;;12436:15;:30;12432:108;;12506:17;12518:4;7625:21;12506:11;;:17;;;;:::i;:::-;12496:6;:27;;12488:36;;;;;;12432:108;12580:13;;;;;;;;;;;12572:21;;:4;:21;;;:55;;;;;12611:15;;;;;;;;;;;12597:30;;:2;:30;;;;12572:55;12568:218;;;12672:27;12688:10;;12672:11;;:15;;:27;;;;:::i;:::-;12653:15;:46;12649:122;;12735:4;12724;:8;12729:2;12724:8;;;;;;;;;;;;;;;;:15;;;;;;;;;;;;;;;;;;12649:122;12568:218;12800:28;12831:24;12849:4;12831:9;:24::i;:::-;12800:55;;12875:6;;;;;;;;;;;12874:7;:32;;;;;12893:13;;;;;;;;;;;12885:21;;:4;:21;;;;12874:32;:61;;;;;12911:18;:24;12930:4;12911:24;;;;;;;;;;;;;;;;;;;;;;;;;12910:25;12874:61;:88;;;;;12940:18;:22;12959:2;12940:22;;;;;;;;;;;;;;;;;;;;;;;;;12939:23;12874:88;12870:506;;;12993:4;:8;12998:2;12993:8;;;;;;;;;;;;;;;;;;;;;;;;;12992:9;:24;;;;;13006:4;:10;13011:4;13006:10;;;;;;;;;;;;;;;;;;;;;;;;;13005:11;12992:24;12984:33;;;;;;13066:1;13043:20;:24;13039:111;;;13092:38;13109:20;13092:16;:38::i;:::-;13039:111;13186:26;13215:21;13186:50;;13280:1;13259:18;:22;13255:106;;;13306:35;13319:21;13306:12;:35::i;:::-;13255:106;12870:506;;12284:1103;;13399:12;13414:4;13399:19;;13443:18;:24;13462:4;13443:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;13471:18;:22;13490:2;13471:22;;;;;;;;;;;;;;;;;;;;;;;;;13443:50;13439:98;;;13520:5;13510:15;;13439:98;13557:41;13572:4;13578:2;13582:6;13590:7;13557:14;:41::i;:::-;13619:15;:13;:15::i;:::-;11973:1669;;;;:::o;1381:190::-;1467:7;1500:1;1495;:6;;1503:12;1487:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1527:9;1543:1;1539;:5;;;;:::i;:::-;1527:17;;1562:1;1555:8;;;1381:190;;;;;:::o;14069:204::-;14126:17;;;;;;;;;;;:26;;:66;14153:38;14187:3;14153:29;14164:17;;14153:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;14126:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14203:15;;;;;;;;;;;:24;;:62;14228:36;14260:3;14228:27;14239:15;;14228:6;:10;;:27;;;;:::i;:::-;:31;;:36;;;;:::i;:::-;14203:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14069:204;:::o;1050:179::-;1108:7;1128:9;1144:1;1140;:5;;;;:::i;:::-;1128:17;;1169:1;1164;:6;;1156:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1220:1;1213:8;;;1050:179;;;;:::o;13654:407::-;8842:4;8833:6;;:13;;;;;;;;;;;;;;;;;;13732:21:::1;13770:1;13756:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13732:40;;13801:4;13783;13788:1;13783:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;13827:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13817:4;13822:1;13817:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;13860:62;13877:4;13892:15;;;;;;;;;;;13910:11;13860:8;:62::i;:::-;13933:15;;;;;;;;;;;:66;;;14000:11;14013:1;14016:4;14030;14037:15;13933:120;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;8857:1;8878:5:::0;8869:6;;:14;;;;;;;;;;;;;;;;;;13654:407;:::o;1579:246::-;1637:7;1666:1;1661;:6;1657:47;;;1691:1;1684:8;;;;1657:47;1714:9;1730:1;1726;:5;;;;:::i;:::-;1714:17;;1759:1;1754;1750;:5;;;;:::i;:::-;:10;1742:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1816:1;1809:8;;;1579:246;;;;;:::o;1833:132::-;1891:7;1918:39;1922:1;1925;1918:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1911:46;;1833:132;;;;:::o;14873:542::-;14987:7;14982:28;;14996:14;:12;:14::i;:::-;14982:28;15022:23;15047:16;15065:18;15085:12;15101:19;15112:7;15101:10;:19::i;:::-;15021:99;;;;;;;;15150:29;15171:7;15150:8;:16;15159:6;15150:16;;;;;;;;;;;;;;;;:20;;:29;;;;:::i;:::-;15131:8;:16;15140:6;15131:16;;;;;;;;;;;;;;;:48;;;;15212:40;15236:15;15212:8;:19;15221:9;15212:19;;;;;;;;;;;;;;;;:23;;:40;;;;:::i;:::-;15190:8;:19;15199:9;15190:19;;;;;;;;;;;;;;;:62;;;;15263:22;15276:8;15263:12;:22::i;:::-;15296:26;15311:10;15296:14;:26::i;:::-;15333:14;15342:4;15333:8;:14::i;:::-;15380:9;15363:44;;15372:6;15363:44;;;15391:15;15363:44;;;;;;:::i;:::-;;;;;;;;14873:542;;;;;;;;:::o;11450:169::-;11510:21;;11494:13;:37;;;;11556:19;;11542:11;:33;;;;11596:15;;11586:7;:25;;;;11450:169::o;1973:189::-;2059:7;2091:1;2087;:5;2094:12;2079:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2118:9;2134:1;2130;:5;;;;:::i;:::-;2118:17;;2153:1;2146:8;;;1973:189;;;;;:::o;11107:331::-;11171:1;11154:13;;:18;:38;;;;;11191:1;11176:11;;:16;11154:38;:54;;;;;11207:1;11196:7;;:12;11154:54;11150:67;;;11210:7;;11150:67;11251:13;;11227:21;:37;;;;11297:11;;11275:19;:33;;;;11337:7;;11319:15;:25;;;;11381:1;11365:13;:17;;;;11407:1;11393:11;:15;;;;11429:1;11419:7;:11;;;;11107:331;:::o;15876:462::-;15935:7;15944;15953;15962;15982:16;16001:34;16030:4;16001:24;16013:11;;16001:7;:11;;:24;;;;:::i;:::-;:28;;:34;;;;:::i;:::-;15982:53;;16046:18;16067:36;16098:4;16067:26;16079:13;;16067:7;:11;;:26;;;;:::i;:::-;:30;;:36;;;;:::i;:::-;16046:57;;16114:12;16129:30;16154:4;16129:20;16141:7;;16129;:11;;:20;;;;:::i;:::-;:24;;:30;;;;:::i;:::-;16114:45;;16170:23;16196:37;16222:10;16196:21;16208:8;16196:7;:11;;:21;;;;:::i;:::-;:25;;:37;;;;:::i;:::-;16170:63;;16263:4;16244:23;;;;;:::i;:::-;;;16286:15;16303:8;16313:10;16325:4;16278:52;;;;;;;;;;;;15876:462;;;;;:::o;1237:136::-;1295:7;1322:43;1326:1;1329;1322:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1315:50;;1237:136;;;;:::o;15423:130::-;15508:37;15536:8;15508;:23;15525:4;15508:23;;;;;;;;;;;;;;;;:27;;:37;;;;:::i;:::-;15482:8;:23;15499:4;15482:23;;;;;;;;;;;;;;;:63;;;;15423:130;:::o;15565:136::-;15654:39;15682:10;15654:8;:23;15671:4;15654:23;;;;;;;;;;;;;;;;:27;;:39;;;;:::i;:::-;15628:8;:23;15645:4;15628:23;;;;;;;;;;;;;;;:65;;;;15565:136;:::o;15713:118::-;15790:33;15818:4;15790:8;:23;15807:4;15790:23;;;;;;;;;;;;;;;;:27;;:33;;;;:::i;:::-;15764:8;:23;15781:4;15764:23;;;;;;;;;;;;;;;:59;;;;15713:118;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:139::-;347:5;385:6;372:20;363:29;;401:33;428:5;401:33;:::i;:::-;353:87;;;;:::o;446:262::-;505:6;554:2;542:9;533:7;529:23;525:32;522:2;;;570:1;567;560:12;522:2;613:1;638:53;683:7;674:6;663:9;659:22;638:53;:::i;:::-;628:63;;584:117;512:196;;;;:::o;714:284::-;784:6;833:2;821:9;812:7;808:23;804:32;801:2;;;849:1;846;839:12;801:2;892:1;917:64;973:7;964:6;953:9;949:22;917:64;:::i;:::-;907:74;;863:128;791:207;;;;:::o;1004:407::-;1072:6;1080;1129:2;1117:9;1108:7;1104:23;1100:32;1097:2;;;1145:1;1142;1135:12;1097:2;1188:1;1213:53;1258:7;1249:6;1238:9;1234:22;1213:53;:::i;:::-;1203:63;;1159:117;1315:2;1341:53;1386:7;1377:6;1366:9;1362:22;1341:53;:::i;:::-;1331:63;;1286:118;1087:324;;;;;:::o;1417:552::-;1494:6;1502;1510;1559:2;1547:9;1538:7;1534:23;1530:32;1527:2;;;1575:1;1572;1565:12;1527:2;1618:1;1643:53;1688:7;1679:6;1668:9;1664:22;1643:53;:::i;:::-;1633:63;;1589:117;1745:2;1771:53;1816:7;1807:6;1796:9;1792:22;1771:53;:::i;:::-;1761:63;;1716:118;1873:2;1899:53;1944:7;1935:6;1924:9;1920:22;1899:53;:::i;:::-;1889:63;;1844:118;1517:452;;;;;:::o;1975:407::-;2043:6;2051;2100:2;2088:9;2079:7;2075:23;2071:32;2068:2;;;2116:1;2113;2106:12;2068:2;2159:1;2184:53;2229:7;2220:6;2209:9;2205:22;2184:53;:::i;:::-;2174:63;;2130:117;2286:2;2312:53;2357:7;2348:6;2337:9;2333:22;2312:53;:::i;:::-;2302:63;;2257:118;2058:324;;;;;:::o;2388:262::-;2447:6;2496:2;2484:9;2475:7;2471:23;2467:32;2464:2;;;2512:1;2509;2502:12;2464:2;2555:1;2580:53;2625:7;2616:6;2605:9;2601:22;2580:53;:::i;:::-;2570:63;;2526:117;2454:196;;;;:::o;2656:407::-;2724:6;2732;2781:2;2769:9;2760:7;2756:23;2752:32;2749:2;;;2797:1;2794;2787:12;2749:2;2840:1;2865:53;2910:7;2901:6;2890:9;2886:22;2865:53;:::i;:::-;2855:63;;2811:117;2967:2;2993:53;3038:7;3029:6;3018:9;3014:22;2993:53;:::i;:::-;2983:63;;2938:118;2739:324;;;;;:::o;3069:552::-;3146:6;3154;3162;3211:2;3199:9;3190:7;3186:23;3182:32;3179:2;;;3227:1;3224;3217:12;3179:2;3270:1;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3241:117;3397:2;3423:53;3468:7;3459:6;3448:9;3444:22;3423:53;:::i;:::-;3413:63;;3368:118;3525:2;3551:53;3596:7;3587:6;3576:9;3572:22;3551:53;:::i;:::-;3541:63;;3496:118;3169:452;;;;;:::o;3627:179::-;3696:10;3717:46;3759:3;3751:6;3717:46;:::i;:::-;3795:4;3790:3;3786:14;3772:28;;3707:99;;;;:::o;3812:108::-;3889:24;3907:5;3889:24;:::i;:::-;3884:3;3877:37;3867:53;;:::o;3926:118::-;4013:24;4031:5;4013:24;:::i;:::-;4008:3;4001:37;3991:53;;:::o;4080:732::-;4199:3;4228:54;4276:5;4228:54;:::i;:::-;4298:86;4377:6;4372:3;4298:86;:::i;:::-;4291:93;;4408:56;4458:5;4408:56;:::i;:::-;4487:7;4518:1;4503:284;4528:6;4525:1;4522:13;4503:284;;;4604:6;4598:13;4631:63;4690:3;4675:13;4631:63;:::i;:::-;4624:70;;4717:60;4770:6;4717:60;:::i;:::-;4707:70;;4563:224;4550:1;4547;4543:9;4538:14;;4503:284;;;4507:14;4803:3;4796:10;;4204:608;;;;;;;:::o;4818:109::-;4899:21;4914:5;4899:21;:::i;:::-;4894:3;4887:34;4877:50;;:::o;4933:147::-;5028:45;5067:5;5028:45;:::i;:::-;5023:3;5016:58;5006:74;;:::o;5086:364::-;5174:3;5202:39;5235:5;5202:39;:::i;:::-;5257:71;5321:6;5316:3;5257:71;:::i;:::-;5250:78;;5337:52;5382:6;5377:3;5370:4;5363:5;5359:16;5337:52;:::i;:::-;5414:29;5436:6;5414:29;:::i;:::-;5409:3;5405:39;5398:46;;5178:272;;;;;:::o;5456:366::-;5598:3;5619:67;5683:2;5678:3;5619:67;:::i;:::-;5612:74;;5695:93;5784:3;5695:93;:::i;:::-;5813:2;5808:3;5804:12;5797:19;;5602:220;;;:::o;5828:366::-;5970:3;5991:67;6055:2;6050:3;5991:67;:::i;:::-;5984:74;;6067:93;6156:3;6067:93;:::i;:::-;6185:2;6180:3;6176:12;6169:19;;5974:220;;;:::o;6200:366::-;6342:3;6363:67;6427:2;6422:3;6363:67;:::i;:::-;6356:74;;6439:93;6528:3;6439:93;:::i;:::-;6557:2;6552:3;6548:12;6541:19;;6346:220;;;:::o;6572:366::-;6714:3;6735:67;6799:2;6794:3;6735:67;:::i;:::-;6728:74;;6811:93;6900:3;6811:93;:::i;:::-;6929:2;6924:3;6920:12;6913:19;;6718:220;;;:::o;6944:366::-;7086:3;7107:67;7171:2;7166:3;7107:67;:::i;:::-;7100:74;;7183:93;7272:3;7183:93;:::i;:::-;7301:2;7296:3;7292:12;7285:19;;7090:220;;;:::o;7316:366::-;7458:3;7479:67;7543:2;7538:3;7479:67;:::i;:::-;7472:74;;7555:93;7644:3;7555:93;:::i;:::-;7673:2;7668:3;7664:12;7657:19;;7462:220;;;:::o;7688:366::-;7830:3;7851:67;7915:2;7910:3;7851:67;:::i;:::-;7844:74;;7927:93;8016:3;7927:93;:::i;:::-;8045:2;8040:3;8036:12;8029:19;;7834:220;;;:::o;8060:366::-;8202:3;8223:67;8287:2;8282:3;8223:67;:::i;:::-;8216:74;;8299:93;8388:3;8299:93;:::i;:::-;8417:2;8412:3;8408:12;8401:19;;8206:220;;;:::o;8432:366::-;8574:3;8595:67;8659:2;8654:3;8595:67;:::i;:::-;8588:74;;8671:93;8760:3;8671:93;:::i;:::-;8789:2;8784:3;8780:12;8773:19;;8578:220;;;:::o;8804:366::-;8946:3;8967:67;9031:2;9026:3;8967:67;:::i;:::-;8960:74;;9043:93;9132:3;9043:93;:::i;:::-;9161:2;9156:3;9152:12;9145:19;;8950:220;;;:::o;9176:366::-;9318:3;9339:67;9403:2;9398:3;9339:67;:::i;:::-;9332:74;;9415:93;9504:3;9415:93;:::i;:::-;9533:2;9528:3;9524:12;9517:19;;9322:220;;;:::o;9548:118::-;9635:24;9653:5;9635:24;:::i;:::-;9630:3;9623:37;9613:53;;:::o;9672:112::-;9755:22;9771:5;9755:22;:::i;:::-;9750:3;9743:35;9733:51;;:::o;9790:222::-;9883:4;9921:2;9910:9;9906:18;9898:26;;9934:71;10002:1;9991:9;9987:17;9978:6;9934:71;:::i;:::-;9888:124;;;;:::o;10018:210::-;10105:4;10143:2;10132:9;10128:18;10120:26;;10156:65;10218:1;10207:9;10203:17;10194:6;10156:65;:::i;:::-;10110:118;;;;:::o;10234:313::-;10347:4;10385:2;10374:9;10370:18;10362:26;;10434:9;10428:4;10424:20;10420:1;10409:9;10405:17;10398:47;10462:78;10535:4;10526:6;10462:78;:::i;:::-;10454:86;;10352:195;;;;:::o;10553:419::-;10719:4;10757:2;10746:9;10742:18;10734:26;;10806:9;10800:4;10796:20;10792:1;10781:9;10777:17;10770:47;10834:131;10960:4;10834:131;:::i;:::-;10826:139;;10724:248;;;:::o;10978:419::-;11144:4;11182:2;11171:9;11167:18;11159:26;;11231:9;11225:4;11221:20;11217:1;11206:9;11202:17;11195:47;11259:131;11385:4;11259:131;:::i;:::-;11251:139;;11149:248;;;:::o;11403:419::-;11569:4;11607:2;11596:9;11592:18;11584:26;;11656:9;11650:4;11646:20;11642:1;11631:9;11627:17;11620:47;11684:131;11810:4;11684:131;:::i;:::-;11676:139;;11574:248;;;:::o;11828:419::-;11994:4;12032:2;12021:9;12017:18;12009:26;;12081:9;12075:4;12071:20;12067:1;12056:9;12052:17;12045:47;12109:131;12235:4;12109:131;:::i;:::-;12101:139;;11999:248;;;:::o;12253:419::-;12419:4;12457:2;12446:9;12442:18;12434:26;;12506:9;12500:4;12496:20;12492:1;12481:9;12477:17;12470:47;12534:131;12660:4;12534:131;:::i;:::-;12526:139;;12424:248;;;:::o;12678:419::-;12844:4;12882:2;12871:9;12867:18;12859:26;;12931:9;12925:4;12921:20;12917:1;12906:9;12902:17;12895:47;12959:131;13085:4;12959:131;:::i;:::-;12951:139;;12849:248;;;:::o;13103:419::-;13269:4;13307:2;13296:9;13292:18;13284:26;;13356:9;13350:4;13346:20;13342:1;13331:9;13327:17;13320:47;13384:131;13510:4;13384:131;:::i;:::-;13376:139;;13274:248;;;:::o;13528:419::-;13694:4;13732:2;13721:9;13717:18;13709:26;;13781:9;13775:4;13771:20;13767:1;13756:9;13752:17;13745:47;13809:131;13935:4;13809:131;:::i;:::-;13801:139;;13699:248;;;:::o;13953:419::-;14119:4;14157:2;14146:9;14142:18;14134:26;;14206:9;14200:4;14196:20;14192:1;14181:9;14177:17;14170:47;14234:131;14360:4;14234:131;:::i;:::-;14226:139;;14124:248;;;:::o;14378:419::-;14544:4;14582:2;14571:9;14567:18;14559:26;;14631:9;14625:4;14621:20;14617:1;14606:9;14602:17;14595:47;14659:131;14785:4;14659:131;:::i;:::-;14651:139;;14549:248;;;:::o;14803:419::-;14969:4;15007:2;14996:9;14992:18;14984:26;;15056:9;15050:4;15046:20;15042:1;15031:9;15027:17;15020:47;15084:131;15210:4;15084:131;:::i;:::-;15076:139;;14974:248;;;:::o;15228:222::-;15321:4;15359:2;15348:9;15344:18;15336:26;;15372:71;15440:1;15429:9;15425:17;15416:6;15372:71;:::i;:::-;15326:124;;;;:::o;15456:831::-;15719:4;15757:3;15746:9;15742:19;15734:27;;15771:71;15839:1;15828:9;15824:17;15815:6;15771:71;:::i;:::-;15852:80;15928:2;15917:9;15913:18;15904:6;15852:80;:::i;:::-;15979:9;15973:4;15969:20;15964:2;15953:9;15949:18;15942:48;16007:108;16110:4;16101:6;16007:108;:::i;:::-;15999:116;;16125:72;16193:2;16182:9;16178:18;16169:6;16125:72;:::i;:::-;16207:73;16275:3;16264:9;16260:19;16251:6;16207:73;:::i;:::-;15724:563;;;;;;;;:::o;16293:332::-;16414:4;16452:2;16441:9;16437:18;16429:26;;16465:71;16533:1;16522:9;16518:17;16509:6;16465:71;:::i;:::-;16546:72;16614:2;16603:9;16599:18;16590:6;16546:72;:::i;:::-;16419:206;;;;;:::o;16631:442::-;16780:4;16818:2;16807:9;16803:18;16795:26;;16831:71;16899:1;16888:9;16884:17;16875:6;16831:71;:::i;:::-;16912:72;16980:2;16969:9;16965:18;16956:6;16912:72;:::i;:::-;16994;17062:2;17051:9;17047:18;17038:6;16994:72;:::i;:::-;16785:288;;;;;;:::o;17079:214::-;17168:4;17206:2;17195:9;17191:18;17183:26;;17219:67;17283:1;17272:9;17268:17;17259:6;17219:67;:::i;:::-;17173:120;;;;:::o;17299:132::-;17366:4;17389:3;17381:11;;17419:4;17414:3;17410:14;17402:22;;17371:60;;;:::o;17437:114::-;17504:6;17538:5;17532:12;17522:22;;17511:40;;;:::o;17557:99::-;17609:6;17643:5;17637:12;17627:22;;17616:40;;;:::o;17662:113::-;17732:4;17764;17759:3;17755:14;17747:22;;17737:38;;;:::o;17781:184::-;17880:11;17914:6;17909:3;17902:19;17954:4;17949:3;17945:14;17930:29;;17892:73;;;;:::o;17971:169::-;18055:11;18089:6;18084:3;18077:19;18129:4;18124:3;18120:14;18105:29;;18067:73;;;;:::o;18146:305::-;18186:3;18205:20;18223:1;18205:20;:::i;:::-;18200:25;;18239:20;18257:1;18239:20;:::i;:::-;18234:25;;18393:1;18325:66;18321:74;18318:1;18315:81;18312:2;;;18399:18;;:::i;:::-;18312:2;18443:1;18440;18436:9;18429:16;;18190:261;;;;:::o;18457:185::-;18497:1;18514:20;18532:1;18514:20;:::i;:::-;18509:25;;18548:20;18566:1;18548:20;:::i;:::-;18543:25;;18587:1;18577:2;;18592:18;;:::i;:::-;18577:2;18634:1;18631;18627:9;18622:14;;18499:143;;;;:::o;18648:348::-;18688:7;18711:20;18729:1;18711:20;:::i;:::-;18706:25;;18745:20;18763:1;18745:20;:::i;:::-;18740:25;;18933:1;18865:66;18861:74;18858:1;18855:81;18850:1;18843:9;18836:17;18832:105;18829:2;;;18940:18;;:::i;:::-;18829:2;18988:1;18985;18981:9;18970:20;;18696:300;;;;:::o;19002:191::-;19042:4;19062:20;19080:1;19062:20;:::i;:::-;19057:25;;19096:20;19114:1;19096:20;:::i;:::-;19091:25;;19135:1;19132;19129:8;19126:2;;;19140:18;;:::i;:::-;19126:2;19185:1;19182;19178:9;19170:17;;19047:146;;;;:::o;19199:96::-;19236:7;19265:24;19283:5;19265:24;:::i;:::-;19254:35;;19244:51;;;:::o;19301:90::-;19335:7;19378:5;19371:13;19364:21;19353:32;;19343:48;;;:::o;19397:126::-;19434:7;19474:42;19467:5;19463:54;19452:65;;19442:81;;;:::o;19529:77::-;19566:7;19595:5;19584:16;;19574:32;;;:::o;19612:86::-;19647:7;19687:4;19680:5;19676:16;19665:27;;19655:43;;;:::o;19704:121::-;19762:9;19795:24;19813:5;19795:24;:::i;:::-;19782:37;;19772:53;;;:::o;19831:307::-;19899:1;19909:113;19923:6;19920:1;19917:13;19909:113;;;20008:1;20003:3;19999:11;19993:18;19989:1;19984:3;19980:11;19973:39;19945:2;19942:1;19938:10;19933:15;;19909:113;;;20040:6;20037:1;20034:13;20031:2;;;20120:1;20111:6;20106:3;20102:16;20095:27;20031:2;19880:258;;;;:::o;20144:180::-;20192:77;20189:1;20182:88;20289:4;20286:1;20279:15;20313:4;20310:1;20303:15;20330:180;20378:77;20375:1;20368:88;20475:4;20472:1;20465:15;20499:4;20496:1;20489:15;20516:102;20557:6;20608:2;20604:7;20599:2;20592:5;20588:14;20584:28;20574:38;;20564:54;;;:::o;20624:222::-;20764:34;20760:1;20752:6;20748:14;20741:58;20833:5;20828:2;20820:6;20816:15;20809:30;20730:116;:::o;20852:221::-;20992:34;20988:1;20980:6;20976:14;20969:58;21061:4;21056:2;21048:6;21044:15;21037:29;20958:115;:::o;21079:177::-;21219:29;21215:1;21207:6;21203:14;21196:53;21185:71;:::o;21262:179::-;21402:31;21398:1;21390:6;21386:14;21379:55;21368:73;:::o;21447:226::-;21587:34;21583:1;21575:6;21571:14;21564:58;21656:9;21651:2;21643:6;21639:15;21632:34;21553:120;:::o;21679:220::-;21819:34;21815:1;21807:6;21803:14;21796:58;21888:3;21883:2;21875:6;21871:15;21864:28;21785:114;:::o;21905:182::-;22045:34;22041:1;22033:6;22029:14;22022:58;22011:76;:::o;22093:228::-;22233:34;22229:1;22221:6;22217:14;22210:58;22302:11;22297:2;22289:6;22285:15;22278:36;22199:122;:::o;22327:180::-;22467:32;22463:1;22455:6;22451:14;22444:56;22433:74;:::o;22513:224::-;22653:34;22649:1;22641:6;22637:14;22630:58;22722:7;22717:2;22709:6;22705:15;22698:32;22619:118;:::o;22743:223::-;22883:34;22879:1;22871:6;22867:14;22860:58;22952:6;22947:2;22939:6;22935:15;22928:31;22849:117;:::o;22972:122::-;23045:24;23063:5;23045:24;:::i;:::-;23038:5;23035:35;23025:2;;23084:1;23081;23074:12;23025:2;23015:79;:::o;23100:122::-;23173:24;23191:5;23173:24;:::i;:::-;23166:5;23163:35;23153:2;;23212:1;23209;23202:12;23153:2;23143:79;:::o

Swarm Source

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