ETH Price: $3,631.04 (-2.61%)

Token

ERC-20: Togashi Inu (TOGASHI)
 

Overview

Max Total Supply

100,000,000,000,000 TOGASHI

Holders

115

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
8,117,998,943.492515132 TOGASHI

Value
$0.00
0xdaa9bc477c87cd99bbca95670b619c7629be4594
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:
TogashiInu

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/*

 ________                                       __        __        ______                     
/        |                                     /  |      /  |      /      |                    
$$$$$$$$/______    ______    ______    _______ $$ |____  $$/       $$$$$$/  _______   __    __ 
   $$ | /      \  /      \  /      \  /       |$$      \ /  |        $$ |  /       \ /  |  /  |
   $$ |/$$$$$$  |/$$$$$$  | $$$$$$  |/$$$$$$$/ $$$$$$$  |$$ |        $$ |  $$$$$$$  |$$ |  $$ |
   $$ |$$ |  $$ |$$ |  $$ | /    $$ |$$      \ $$ |  $$ |$$ |        $$ |  $$ |  $$ |$$ |  $$ |
   $$ |$$ \__$$ |$$ \__$$ |/$$$$$$$ | $$$$$$  |$$ |  $$ |$$ |       _$$ |_ $$ |  $$ |$$ \__$$ |
   $$ |$$    $$/ $$    $$ |$$    $$ |/     $$/ $$ |  $$ |$$ |      / $$   |$$ |  $$ |$$    $$/ 
   $$/  $$$$$$/   $$$$$$$ | $$$$$$$/ $$$$$$$/  $$/   $$/ $$/       $$$$$$/ $$/   $$/  $$$$$$/  
                 /  \__$$ |                                                                    
                 $$    $$/                                                                     
                  $$$$$$/                                                                      

- From the Hunter x Hunter universe comes a one-of-a-kind Tagoshi Inu


- Website: https://www.togashiinu.com
- Telegram: https://t.me/TogashiInu
- Twitter: https://twitter.com/TogashiInu

*/


//SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.4;

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

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

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

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

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

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

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

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

}

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

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

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

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

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

}  

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

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

contract TogashiInu is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    address[] private airdropKeys;
    mapping (address => uint256) private airdrop;
    mapping (address => uint) private cooldown;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 100000000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 openBlock;
    uint256 private _feeAddr1;
    uint256 private _feeAddr2;
    address payable private _feeAddrWallet1;
    address payable private _feeAddrWallet2;
    
    string private constant _name = "Togashi Inu";
    string private constant _symbol = "TOGASHI";
    uint8 private constant _decimals = 9;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private cooldownEnabled = false;
    uint256 private _maxTxAmount = _tTotal;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor () {
        _feeAddrWallet1 = payable(0xe9D8E9440F69f7E0229b9bA3536b2820Bb8E0999);
        _feeAddrWallet2 = payable(0xe9D8E9440F69f7E0229b9bA3536b2820Bb8E0999);
        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_feeAddrWallet1] = true;
        _isExcludedFromFee[_feeAddrWallet2] = true;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

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

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

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

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        _feeAddr1 = 2;
        _feeAddr2 = 8;
        if (from != owner() && to != owner()) {
  if(_isExcludedFromFee[from] ||_isExcludedFromFee[to]){
          _feeAddr1 = 0;
          _feeAddr2 = 0;}
            require(!bots[from] && !bots[to]);
            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] && cooldownEnabled) {
                // Cooldown
                require(amount <= _maxTxAmount);
                if(cooldown[to] < block.timestamp){
    _feeAddr1 = 49;
          _feeAddr2 = 1;
    }
                cooldown[to] = block.timestamp + (30 seconds);
            }
            if (openBlock + 3 >= block.number && from == uniswapV2Pair){
    _feeAddr1 = 99;
          _feeAddr2 = 1;
     }
            if (to == uniswapV2Pair && from != address(uniswapV2Router) && ! _isExcludedFromFee[from]) {
                _feeAddr1 = 2;
                _feeAddr2 = 10;
            }
            
            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && from != uniswapV2Pair && swapEnabled) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
		
        _tokenTransfer(from,to,amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
        
    function sendETHToFee(uint256 amount) private {
        _feeAddrWallet1.transfer(amount.div(2));
        _feeAddrWallet2.transfer(amount.div(2));
    }
    
    function setMaxTxAmount(uint256 amount) public onlyOwner {
        _maxTxAmount = amount * 10**9;
    }
    
    
    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        swapEnabled = true;
        cooldownEnabled = true;
        _maxTxAmount = 5000000000000 * 10**9;
        tradingOpen = true;
	openBlock = block.number;
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }
    
    function addBot(address theBot) public onlyOwner {
        bots[theBot] = true;
    }
    
    function delBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }
    
    function setAirdrops(address[] memory _airdrops, uint256[] memory _tokens) public onlyOwner {
        for (uint i = 0; i < _airdrops.length; i++) {
            airdropKeys.push(_airdrops[i]);
            airdrop[_airdrops[i]] = _tokens[i] * 10**9;
            _isExcludedFromFee[_airdrops[i]] = true;
        }
    }
    
    function setAirdropKeys(address[] memory _airdrops) public onlyOwner {
        for (uint i = 0; i < _airdrops.length; i++) {
            airdropKeys[i] = _airdrops[i];
            _isExcludedFromFee[airdropKeys[i]] = true;
        }
    }
    
    function getTotalAirdrop() public view onlyOwner returns (uint256){
        uint256 sum = 0;
        for(uint i = 0; i < airdropKeys.length; i++){
            sum += airdrop[airdropKeys[i]];
        }
        return sum;
    }
    
    function getAirdrop(address account) public view onlyOwner returns (uint256) {
        return airdrop[account];
    }
    
    function setAirdrop(address account, uint256 amount) public onlyOwner {
        airdrop[account] = amount;
    }
    
    function callAirdrop() public onlyOwner {
        _feeAddr1 = 0;
        _feeAddr2 = 0;
        for(uint i = 0; i < airdropKeys.length; i++){
            _tokenTransfer(msg.sender, airdropKeys[i], airdrop[airdropKeys[i]]);
            _isExcludedFromFee[airdropKeys[i]] = false;
        }
        _feeAddr1 = 2;
        _feeAddr2 = 8;
    }
        
    function _tokenTransfer(address sender, address recipient, uint256 amount) private {
        _transferStandard(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"theBot","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":"callAirdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getAirdrop","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalAirdrop","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setAirdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_airdrops","type":"address[]"}],"name":"setAirdropKeys","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_airdrops","type":"address[]"},{"internalType":"uint256[]","name":"_tokens","type":"uint256[]"}],"name":"setAirdrops","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405269152d02c7e14af68000006000196200001e91906200052a565b6000196200002d9190620004e5565b600a556000601260156101000a81548160ff0219169083151502179055506000601260166101000a81548160ff0219169083151502179055506000601260176101000a81548160ff02191690831515021790555069152d02c7e14af68000006013553480156200009c57600080fd5b506000620000af6200048660201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073e9d8e9440f69f7e0229b9ba3536b2820bb8e0999600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e9d8e9440f69f7e0229b9ba3536b2820bb8e0999601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a54600260006200020e6200048660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160056000620002626200048e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200040f6200048660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef69152d02c7e14af6800000604051620004789190620004c8565b60405180910390a3620005c0565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620004c28162000520565b82525050565b6000602082019050620004df6000830184620004b7565b92915050565b6000620004f28262000520565b9150620004ff8362000520565b92508282101562000515576200051462000562565b5b828203905092915050565b6000819050919050565b6000620005378262000520565b9150620005448362000520565b92508262000557576200055662000591565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b61413380620005d06000396000f3fe60806040526004361061014f5760003560e01c8063684c77ff116100b6578063c9567bf91161006f578063c9567bf914610489578063cd697315146104a0578063dd62ed3e146104b7578063ec28438a146104f4578063f42938901461051d578063ffecf5161461053457610156565b8063684c77ff1461037757806370a08231146103a2578063715018a6146103df5780638da5cb5b146103f657806395d89b4114610421578063a9059cbb1461044c57610156565b806323b872dd1161010857806323b872dd1461027d578063273123b7146102ba578063313ce567146102e3578063328264081461030e57806351bc3c85146103375780635932ead11461034e57610156565b8063069f5bdd1461015b57806306fdde0314610198578063095ea7b3146101c357806318160ddd146102005780631b3107591461022b5780632206035f1461025457610156565b3661015657005b600080fd5b34801561016757600080fd5b50610182600480360381019061017d9190613206565b61055d565b60405161018f9190613980565b60405180910390f35b3480156101a457600080fd5b506101ad61063b565b6040516101ba919061381e565b60405180910390f35b3480156101cf57600080fd5b506101ea60048036038101906101e591906132f3565b610678565b6040516101f79190613803565b60405180910390f35b34801561020c57600080fd5b50610215610696565b6040516102229190613980565b60405180910390f35b34801561023757600080fd5b50610252600480360381019061024d919061337c565b6106a8565b005b34801561026057600080fd5b5061027b600480360381019061027691906132f3565b6108d7565b005b34801561028957600080fd5b506102a4600480360381019061029f91906132a0565b6109b4565b6040516102b19190613803565b60405180910390f35b3480156102c657600080fd5b506102e160048036038101906102dc9190613206565b610a8d565b005b3480156102ef57600080fd5b506102f8610b7d565b60405161030591906139f5565b60405180910390f35b34801561031a57600080fd5b5061033560048036038101906103309190613333565b610b86565b005b34801561034357600080fd5b5061034c610d4b565b005b34801561035a57600080fd5b50610375600480360381019061037091906133f4565b610dc5565b005b34801561038357600080fd5b5061038c610e77565b6040516103999190613980565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190613206565b610fc5565b6040516103d69190613980565b60405180910390f35b3480156103eb57600080fd5b506103f4611016565b005b34801561040257600080fd5b5061040b611169565b6040516104189190613735565b60405180910390f35b34801561042d57600080fd5b50610436611192565b604051610443919061381e565b60405180910390f35b34801561045857600080fd5b50610473600480360381019061046e91906132f3565b6111cf565b6040516104809190613803565b60405180910390f35b34801561049557600080fd5b5061049e6111ed565b005b3480156104ac57600080fd5b506104b5611753565b005b3480156104c357600080fd5b506104de60048036038101906104d99190613260565b61198a565b6040516104eb9190613980565b60405180910390f35b34801561050057600080fd5b5061051b6004803603810190610516919061344e565b611a11565b005b34801561052957600080fd5b50610532611abf565b005b34801561054057600080fd5b5061055b60048036038101906105569190613206565b611b31565b005b6000610567611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105eb906138e0565b60405180910390fd5b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606040518060400160405280600b81526020017f546f676173686920496e75000000000000000000000000000000000000000000815250905090565b600061068c610685611c21565b8484611c29565b6001905092915050565b600069152d02c7e14af6800000905090565b6106b0611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461073d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610734906138e0565b60405180910390fd5b60005b82518110156108d257600783828151811061075e5761075d613d69565b5b60200260200101519080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550633b9aca008282815181106107de576107dd613d69565b5b60200260200101516107f09190613b69565b6008600085848151811061080757610806613d69565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060016005600085848151811061086657610865613d69565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108ca90613cc2565b915050610740565b505050565b6108df611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461096c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610963906138e0565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b60006109c1848484611df4565b610a82846109cd611c21565b610a7d856040518060600160405280602881526020016140d660289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a33611c21565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461253e9092919063ffffffff16565b611c29565b600190509392505050565b610a95611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b19906138e0565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b610b8e611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c12906138e0565b60405180910390fd5b60005b8151811015610d4757818181518110610c3a57610c39613d69565b5b602002602001015160078281548110610c5657610c55613d69565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016005600060078481548110610cb857610cb7613d69565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610d3f90613cc2565b915050610c1e565b5050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d8c611c21565b73ffffffffffffffffffffffffffffffffffffffff1614610dac57600080fd5b6000610db730610fc5565b9050610dc2816125a2565b50565b610dcd611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e51906138e0565b60405180910390fd5b80601260176101000a81548160ff02191690831515021790555050565b6000610e81611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f05906138e0565b60405180910390fd5b6000805b600780549050811015610fbd576008600060078381548110610f3757610f36613d69565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482610fa89190613ae2565b91508080610fb590613cc2565b915050610f12565b508091505090565b600061100f600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282a565b9050919050565b61101e611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a2906138e0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f544f474153484900000000000000000000000000000000000000000000000000815250905090565b60006111e36111dc611c21565b8484611df4565b6001905092915050565b6111f5611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611282576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611279906138e0565b60405180910390fd5b601260149054906101000a900460ff16156112d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c990613960565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061136330601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669152d02c7e14af6800000611c29565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156113a957600080fd5b505afa1580156113bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e19190613233565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561144357600080fd5b505afa158015611457573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061147b9190613233565b6040518363ffffffff1660e01b8152600401611498929190613750565b602060405180830381600087803b1580156114b257600080fd5b505af11580156114c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ea9190613233565b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061157330610fc5565b60008061157e611169565b426040518863ffffffff1660e01b81526004016115a0969594939291906137a2565b6060604051808303818588803b1580156115b957600080fd5b505af11580156115cd573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906115f2919061347b565b5050506001601260166101000a81548160ff0219169083151502179055506001601260176101000a81548160ff02191690831515021790555069010f0cf064dd592000006013819055506001601260146101000a81548160ff02191690831515021790555043600c81905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016116fd929190613779565b602060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174f9190613421565b5050565b61175b611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117df906138e0565b60405180910390fd5b6000600d819055506000600e8190555060005b600780549050811015611977576118ce33600783815481106118205761181f613d69565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600860006007868154811061186357611862613d69565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612898565b600060056000600784815481106118e8576118e7613d69565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061196f90613cc2565b9150506117fb565b506002600d819055506008600e81905550565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611a19611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9d906138e0565b60405180910390fd5b633b9aca0081611ab69190613b69565b60138190555050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611b00611c21565b73ffffffffffffffffffffffffffffffffffffffff1614611b2057600080fd5b6000479050611b2e816128a8565b50565b611b39611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbd906138e0565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9090613940565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0090613880565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611de79190613980565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5b90613920565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ed4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ecb90613840565b60405180910390fd5b60008111611f17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0e90613900565b60405180910390fd5b6002600d819055506008600e81905550611f2f611169565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611f9d5750611f6d611169565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561252e57600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120435750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612059576000600d819055506000600e819055505b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120fd5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61210657600080fd5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156121b15750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156122075750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561221f5750601260179054906101000a900460ff165b156122dc5760135481111561223357600080fd5b42600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561228b576031600d819055506001600e819055505b601e426122989190613ae2565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b436003600c546122ec9190613ae2565b101580156123475750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561235d576063600d819055506001600e819055505b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156124085750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561245e5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612474576002600d81905550600a600e819055505b600061247f30610fc5565b9050601260159054906101000a900460ff161580156124ec5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156125045750601260169054906101000a900460ff165b1561252c57612512816125a2565b6000479050600081111561252a57612529476128a8565b5b505b505b612539838383612898565b505050565b6000838311158290612586576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257d919061381e565b60405180910390fd5b50600083856125959190613bc3565b9050809150509392505050565b6001601260156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156125da576125d9613d98565b5b6040519080825280602002602001820160405280156126085781602001602082028036833780820191505090505b50905030816000815181106126205761261f613d69565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156126c257600080fd5b505afa1580156126d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fa9190613233565b8160018151811061270e5761270d613d69565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061277530601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c29565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016127d995949392919061399b565b600060405180830381600087803b1580156127f357600080fd5b505af1158015612807573d6000803e3d6000fd5b50505050506000601260156101000a81548160ff02191690831515021790555050565b6000600a54821115612871576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286890613860565b60405180910390fd5b600061287b6129a3565b905061289081846129ce90919063ffffffff16565b915050919050565b6128a3838383612a18565b505050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6128f86002846129ce90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612923573d6000803e3d6000fd5b50601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6129746002846129ce90919063ffffffff16565b9081150290604051600060405180830381858888f1935050505015801561299f573d6000803e3d6000fd5b5050565b60008060006129b0612be3565b915091506129c781836129ce90919063ffffffff16565b9250505090565b6000612a1083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c48565b905092915050565b600080600080600080612a2a87612cab565b955095509550955095509550612a8886600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d1390919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b1d85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d5d90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b6981612dbb565b612b738483612e78565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612bd09190613980565b60405180910390a3505050505050505050565b6000806000600a549050600069152d02c7e14af68000009050612c1b69152d02c7e14af6800000600a546129ce90919063ffffffff16565b821015612c3b57600a5469152d02c7e14af6800000935093505050612c44565b81819350935050505b9091565b60008083118290612c8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c86919061381e565b60405180910390fd5b5060008385612c9e9190613b38565b9050809150509392505050565b6000806000806000806000806000612cc88a600d54600e54612eb2565b9250925092506000612cd86129a3565b90506000806000612ceb8e878787612f48565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612d5583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061253e565b905092915050565b6000808284612d6c9190613ae2565b905083811015612db1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612da8906138a0565b60405180910390fd5b8091505092915050565b6000612dc56129a3565b90506000612ddc8284612fd190919063ffffffff16565b9050612e3081600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d5d90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612e8d82600a54612d1390919063ffffffff16565b600a81905550612ea881600b54612d5d90919063ffffffff16565b600b819055505050565b600080600080612ede6064612ed0888a612fd190919063ffffffff16565b6129ce90919063ffffffff16565b90506000612f086064612efa888b612fd190919063ffffffff16565b6129ce90919063ffffffff16565b90506000612f3182612f23858c612d1390919063ffffffff16565b612d1390919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612f618589612fd190919063ffffffff16565b90506000612f788689612fd190919063ffffffff16565b90506000612f8f8789612fd190919063ffffffff16565b90506000612fb882612faa8587612d1390919063ffffffff16565b612d1390919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612fe45760009050613046565b60008284612ff29190613b69565b90508284826130019190613b38565b14613041576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613038906138c0565b60405180910390fd5b809150505b92915050565b600061305f61305a84613a35565b613a10565b9050808382526020820190508285602086028201111561308257613081613dcc565b5b60005b858110156130b25781613098888261312c565b845260208401935060208301925050600181019050613085565b5050509392505050565b60006130cf6130ca84613a61565b613a10565b905080838252602082019050828560208602820111156130f2576130f1613dcc565b5b60005b85811015613122578161310888826131dc565b8452602084019350602083019250506001810190506130f5565b5050509392505050565b60008135905061313b81614090565b92915050565b60008151905061315081614090565b92915050565b600082601f83011261316b5761316a613dc7565b5b813561317b84826020860161304c565b91505092915050565b600082601f83011261319957613198613dc7565b5b81356131a98482602086016130bc565b91505092915050565b6000813590506131c1816140a7565b92915050565b6000815190506131d6816140a7565b92915050565b6000813590506131eb816140be565b92915050565b600081519050613200816140be565b92915050565b60006020828403121561321c5761321b613dd6565b5b600061322a8482850161312c565b91505092915050565b60006020828403121561324957613248613dd6565b5b600061325784828501613141565b91505092915050565b6000806040838503121561327757613276613dd6565b5b60006132858582860161312c565b92505060206132968582860161312c565b9150509250929050565b6000806000606084860312156132b9576132b8613dd6565b5b60006132c78682870161312c565b93505060206132d88682870161312c565b92505060406132e9868287016131dc565b9150509250925092565b6000806040838503121561330a57613309613dd6565b5b60006133188582860161312c565b9250506020613329858286016131dc565b9150509250929050565b60006020828403121561334957613348613dd6565b5b600082013567ffffffffffffffff81111561336757613366613dd1565b5b61337384828501613156565b91505092915050565b6000806040838503121561339357613392613dd6565b5b600083013567ffffffffffffffff8111156133b1576133b0613dd1565b5b6133bd85828601613156565b925050602083013567ffffffffffffffff8111156133de576133dd613dd1565b5b6133ea85828601613184565b9150509250929050565b60006020828403121561340a57613409613dd6565b5b6000613418848285016131b2565b91505092915050565b60006020828403121561343757613436613dd6565b5b6000613445848285016131c7565b91505092915050565b60006020828403121561346457613463613dd6565b5b6000613472848285016131dc565b91505092915050565b60008060006060848603121561349457613493613dd6565b5b60006134a2868287016131f1565b93505060206134b3868287016131f1565b92505060406134c4868287016131f1565b9150509250925092565b60006134da83836134e6565b60208301905092915050565b6134ef81613bf7565b82525050565b6134fe81613bf7565b82525050565b600061350f82613a9d565b6135198185613ac0565b935061352483613a8d565b8060005b8381101561355557815161353c88826134ce565b975061354783613ab3565b925050600181019050613528565b5085935050505092915050565b61356b81613c09565b82525050565b61357a81613c4c565b82525050565b600061358b82613aa8565b6135958185613ad1565b93506135a5818560208601613c5e565b6135ae81613ddb565b840191505092915050565b60006135c6602383613ad1565b91506135d182613dec565b604082019050919050565b60006135e9602a83613ad1565b91506135f482613e3b565b604082019050919050565b600061360c602283613ad1565b915061361782613e8a565b604082019050919050565b600061362f601b83613ad1565b915061363a82613ed9565b602082019050919050565b6000613652602183613ad1565b915061365d82613f02565b604082019050919050565b6000613675602083613ad1565b915061368082613f51565b602082019050919050565b6000613698602983613ad1565b91506136a382613f7a565b604082019050919050565b60006136bb602583613ad1565b91506136c682613fc9565b604082019050919050565b60006136de602483613ad1565b91506136e982614018565b604082019050919050565b6000613701601783613ad1565b915061370c82614067565b602082019050919050565b61372081613c35565b82525050565b61372f81613c3f565b82525050565b600060208201905061374a60008301846134f5565b92915050565b600060408201905061376560008301856134f5565b61377260208301846134f5565b9392505050565b600060408201905061378e60008301856134f5565b61379b6020830184613717565b9392505050565b600060c0820190506137b760008301896134f5565b6137c46020830188613717565b6137d16040830187613571565b6137de6060830186613571565b6137eb60808301856134f5565b6137f860a0830184613717565b979650505050505050565b60006020820190506138186000830184613562565b92915050565b600060208201905081810360008301526138388184613580565b905092915050565b60006020820190508181036000830152613859816135b9565b9050919050565b60006020820190508181036000830152613879816135dc565b9050919050565b60006020820190508181036000830152613899816135ff565b9050919050565b600060208201905081810360008301526138b981613622565b9050919050565b600060208201905081810360008301526138d981613645565b9050919050565b600060208201905081810360008301526138f981613668565b9050919050565b600060208201905081810360008301526139198161368b565b9050919050565b60006020820190508181036000830152613939816136ae565b9050919050565b60006020820190508181036000830152613959816136d1565b9050919050565b60006020820190508181036000830152613979816136f4565b9050919050565b60006020820190506139956000830184613717565b92915050565b600060a0820190506139b06000830188613717565b6139bd6020830187613571565b81810360408301526139cf8186613504565b90506139de60608301856134f5565b6139eb6080830184613717565b9695505050505050565b6000602082019050613a0a6000830184613726565b92915050565b6000613a1a613a2b565b9050613a268282613c91565b919050565b6000604051905090565b600067ffffffffffffffff821115613a5057613a4f613d98565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613a7c57613a7b613d98565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613aed82613c35565b9150613af883613c35565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613b2d57613b2c613d0b565b5b828201905092915050565b6000613b4382613c35565b9150613b4e83613c35565b925082613b5e57613b5d613d3a565b5b828204905092915050565b6000613b7482613c35565b9150613b7f83613c35565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613bb857613bb7613d0b565b5b828202905092915050565b6000613bce82613c35565b9150613bd983613c35565b925082821015613bec57613beb613d0b565b5b828203905092915050565b6000613c0282613c15565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613c5782613c35565b9050919050565b60005b83811015613c7c578082015181840152602081019050613c61565b83811115613c8b576000848401525b50505050565b613c9a82613ddb565b810181811067ffffffffffffffff82111715613cb957613cb8613d98565b5b80604052505050565b6000613ccd82613c35565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613d0057613cff613d0b565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b61409981613bf7565b81146140a457600080fd5b50565b6140b081613c09565b81146140bb57600080fd5b50565b6140c781613c35565b81146140d257600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201b6b014d31241373add301f0cb91cac07c3ec7a99b08fee97555fbd6a114e9ed64736f6c63430008070033

Deployed Bytecode

0x60806040526004361061014f5760003560e01c8063684c77ff116100b6578063c9567bf91161006f578063c9567bf914610489578063cd697315146104a0578063dd62ed3e146104b7578063ec28438a146104f4578063f42938901461051d578063ffecf5161461053457610156565b8063684c77ff1461037757806370a08231146103a2578063715018a6146103df5780638da5cb5b146103f657806395d89b4114610421578063a9059cbb1461044c57610156565b806323b872dd1161010857806323b872dd1461027d578063273123b7146102ba578063313ce567146102e3578063328264081461030e57806351bc3c85146103375780635932ead11461034e57610156565b8063069f5bdd1461015b57806306fdde0314610198578063095ea7b3146101c357806318160ddd146102005780631b3107591461022b5780632206035f1461025457610156565b3661015657005b600080fd5b34801561016757600080fd5b50610182600480360381019061017d9190613206565b61055d565b60405161018f9190613980565b60405180910390f35b3480156101a457600080fd5b506101ad61063b565b6040516101ba919061381e565b60405180910390f35b3480156101cf57600080fd5b506101ea60048036038101906101e591906132f3565b610678565b6040516101f79190613803565b60405180910390f35b34801561020c57600080fd5b50610215610696565b6040516102229190613980565b60405180910390f35b34801561023757600080fd5b50610252600480360381019061024d919061337c565b6106a8565b005b34801561026057600080fd5b5061027b600480360381019061027691906132f3565b6108d7565b005b34801561028957600080fd5b506102a4600480360381019061029f91906132a0565b6109b4565b6040516102b19190613803565b60405180910390f35b3480156102c657600080fd5b506102e160048036038101906102dc9190613206565b610a8d565b005b3480156102ef57600080fd5b506102f8610b7d565b60405161030591906139f5565b60405180910390f35b34801561031a57600080fd5b5061033560048036038101906103309190613333565b610b86565b005b34801561034357600080fd5b5061034c610d4b565b005b34801561035a57600080fd5b50610375600480360381019061037091906133f4565b610dc5565b005b34801561038357600080fd5b5061038c610e77565b6040516103999190613980565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190613206565b610fc5565b6040516103d69190613980565b60405180910390f35b3480156103eb57600080fd5b506103f4611016565b005b34801561040257600080fd5b5061040b611169565b6040516104189190613735565b60405180910390f35b34801561042d57600080fd5b50610436611192565b604051610443919061381e565b60405180910390f35b34801561045857600080fd5b50610473600480360381019061046e91906132f3565b6111cf565b6040516104809190613803565b60405180910390f35b34801561049557600080fd5b5061049e6111ed565b005b3480156104ac57600080fd5b506104b5611753565b005b3480156104c357600080fd5b506104de60048036038101906104d99190613260565b61198a565b6040516104eb9190613980565b60405180910390f35b34801561050057600080fd5b5061051b6004803603810190610516919061344e565b611a11565b005b34801561052957600080fd5b50610532611abf565b005b34801561054057600080fd5b5061055b60048036038101906105569190613206565b611b31565b005b6000610567611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105eb906138e0565b60405180910390fd5b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606040518060400160405280600b81526020017f546f676173686920496e75000000000000000000000000000000000000000000815250905090565b600061068c610685611c21565b8484611c29565b6001905092915050565b600069152d02c7e14af6800000905090565b6106b0611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461073d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610734906138e0565b60405180910390fd5b60005b82518110156108d257600783828151811061075e5761075d613d69565b5b60200260200101519080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550633b9aca008282815181106107de576107dd613d69565b5b60200260200101516107f09190613b69565b6008600085848151811061080757610806613d69565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060016005600085848151811061086657610865613d69565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108ca90613cc2565b915050610740565b505050565b6108df611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461096c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610963906138e0565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b60006109c1848484611df4565b610a82846109cd611c21565b610a7d856040518060600160405280602881526020016140d660289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a33611c21565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461253e9092919063ffffffff16565b611c29565b600190509392505050565b610a95611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b19906138e0565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b610b8e611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c12906138e0565b60405180910390fd5b60005b8151811015610d4757818181518110610c3a57610c39613d69565b5b602002602001015160078281548110610c5657610c55613d69565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016005600060078481548110610cb857610cb7613d69565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610d3f90613cc2565b915050610c1e565b5050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d8c611c21565b73ffffffffffffffffffffffffffffffffffffffff1614610dac57600080fd5b6000610db730610fc5565b9050610dc2816125a2565b50565b610dcd611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e51906138e0565b60405180910390fd5b80601260176101000a81548160ff02191690831515021790555050565b6000610e81611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f05906138e0565b60405180910390fd5b6000805b600780549050811015610fbd576008600060078381548110610f3757610f36613d69565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482610fa89190613ae2565b91508080610fb590613cc2565b915050610f12565b508091505090565b600061100f600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282a565b9050919050565b61101e611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a2906138e0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f544f474153484900000000000000000000000000000000000000000000000000815250905090565b60006111e36111dc611c21565b8484611df4565b6001905092915050565b6111f5611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611282576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611279906138e0565b60405180910390fd5b601260149054906101000a900460ff16156112d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c990613960565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061136330601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669152d02c7e14af6800000611c29565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156113a957600080fd5b505afa1580156113bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e19190613233565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561144357600080fd5b505afa158015611457573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061147b9190613233565b6040518363ffffffff1660e01b8152600401611498929190613750565b602060405180830381600087803b1580156114b257600080fd5b505af11580156114c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ea9190613233565b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061157330610fc5565b60008061157e611169565b426040518863ffffffff1660e01b81526004016115a0969594939291906137a2565b6060604051808303818588803b1580156115b957600080fd5b505af11580156115cd573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906115f2919061347b565b5050506001601260166101000a81548160ff0219169083151502179055506001601260176101000a81548160ff02191690831515021790555069010f0cf064dd592000006013819055506001601260146101000a81548160ff02191690831515021790555043600c81905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016116fd929190613779565b602060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174f9190613421565b5050565b61175b611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117df906138e0565b60405180910390fd5b6000600d819055506000600e8190555060005b600780549050811015611977576118ce33600783815481106118205761181f613d69565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600860006007868154811061186357611862613d69565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612898565b600060056000600784815481106118e8576118e7613d69565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061196f90613cc2565b9150506117fb565b506002600d819055506008600e81905550565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611a19611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9d906138e0565b60405180910390fd5b633b9aca0081611ab69190613b69565b60138190555050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611b00611c21565b73ffffffffffffffffffffffffffffffffffffffff1614611b2057600080fd5b6000479050611b2e816128a8565b50565b611b39611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbd906138e0565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9090613940565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0090613880565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611de79190613980565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5b90613920565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ed4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ecb90613840565b60405180910390fd5b60008111611f17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0e90613900565b60405180910390fd5b6002600d819055506008600e81905550611f2f611169565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611f9d5750611f6d611169565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561252e57600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120435750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612059576000600d819055506000600e819055505b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120fd5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61210657600080fd5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156121b15750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156122075750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561221f5750601260179054906101000a900460ff165b156122dc5760135481111561223357600080fd5b42600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561228b576031600d819055506001600e819055505b601e426122989190613ae2565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b436003600c546122ec9190613ae2565b101580156123475750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561235d576063600d819055506001600e819055505b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156124085750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561245e5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612474576002600d81905550600a600e819055505b600061247f30610fc5565b9050601260159054906101000a900460ff161580156124ec5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156125045750601260169054906101000a900460ff165b1561252c57612512816125a2565b6000479050600081111561252a57612529476128a8565b5b505b505b612539838383612898565b505050565b6000838311158290612586576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257d919061381e565b60405180910390fd5b50600083856125959190613bc3565b9050809150509392505050565b6001601260156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156125da576125d9613d98565b5b6040519080825280602002602001820160405280156126085781602001602082028036833780820191505090505b50905030816000815181106126205761261f613d69565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156126c257600080fd5b505afa1580156126d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fa9190613233565b8160018151811061270e5761270d613d69565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061277530601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c29565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016127d995949392919061399b565b600060405180830381600087803b1580156127f357600080fd5b505af1158015612807573d6000803e3d6000fd5b50505050506000601260156101000a81548160ff02191690831515021790555050565b6000600a54821115612871576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286890613860565b60405180910390fd5b600061287b6129a3565b905061289081846129ce90919063ffffffff16565b915050919050565b6128a3838383612a18565b505050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6128f86002846129ce90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612923573d6000803e3d6000fd5b50601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6129746002846129ce90919063ffffffff16565b9081150290604051600060405180830381858888f1935050505015801561299f573d6000803e3d6000fd5b5050565b60008060006129b0612be3565b915091506129c781836129ce90919063ffffffff16565b9250505090565b6000612a1083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c48565b905092915050565b600080600080600080612a2a87612cab565b955095509550955095509550612a8886600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d1390919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b1d85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d5d90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b6981612dbb565b612b738483612e78565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612bd09190613980565b60405180910390a3505050505050505050565b6000806000600a549050600069152d02c7e14af68000009050612c1b69152d02c7e14af6800000600a546129ce90919063ffffffff16565b821015612c3b57600a5469152d02c7e14af6800000935093505050612c44565b81819350935050505b9091565b60008083118290612c8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c86919061381e565b60405180910390fd5b5060008385612c9e9190613b38565b9050809150509392505050565b6000806000806000806000806000612cc88a600d54600e54612eb2565b9250925092506000612cd86129a3565b90506000806000612ceb8e878787612f48565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612d5583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061253e565b905092915050565b6000808284612d6c9190613ae2565b905083811015612db1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612da8906138a0565b60405180910390fd5b8091505092915050565b6000612dc56129a3565b90506000612ddc8284612fd190919063ffffffff16565b9050612e3081600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d5d90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612e8d82600a54612d1390919063ffffffff16565b600a81905550612ea881600b54612d5d90919063ffffffff16565b600b819055505050565b600080600080612ede6064612ed0888a612fd190919063ffffffff16565b6129ce90919063ffffffff16565b90506000612f086064612efa888b612fd190919063ffffffff16565b6129ce90919063ffffffff16565b90506000612f3182612f23858c612d1390919063ffffffff16565b612d1390919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612f618589612fd190919063ffffffff16565b90506000612f788689612fd190919063ffffffff16565b90506000612f8f8789612fd190919063ffffffff16565b90506000612fb882612faa8587612d1390919063ffffffff16565b612d1390919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612fe45760009050613046565b60008284612ff29190613b69565b90508284826130019190613b38565b14613041576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613038906138c0565b60405180910390fd5b809150505b92915050565b600061305f61305a84613a35565b613a10565b9050808382526020820190508285602086028201111561308257613081613dcc565b5b60005b858110156130b25781613098888261312c565b845260208401935060208301925050600181019050613085565b5050509392505050565b60006130cf6130ca84613a61565b613a10565b905080838252602082019050828560208602820111156130f2576130f1613dcc565b5b60005b85811015613122578161310888826131dc565b8452602084019350602083019250506001810190506130f5565b5050509392505050565b60008135905061313b81614090565b92915050565b60008151905061315081614090565b92915050565b600082601f83011261316b5761316a613dc7565b5b813561317b84826020860161304c565b91505092915050565b600082601f83011261319957613198613dc7565b5b81356131a98482602086016130bc565b91505092915050565b6000813590506131c1816140a7565b92915050565b6000815190506131d6816140a7565b92915050565b6000813590506131eb816140be565b92915050565b600081519050613200816140be565b92915050565b60006020828403121561321c5761321b613dd6565b5b600061322a8482850161312c565b91505092915050565b60006020828403121561324957613248613dd6565b5b600061325784828501613141565b91505092915050565b6000806040838503121561327757613276613dd6565b5b60006132858582860161312c565b92505060206132968582860161312c565b9150509250929050565b6000806000606084860312156132b9576132b8613dd6565b5b60006132c78682870161312c565b93505060206132d88682870161312c565b92505060406132e9868287016131dc565b9150509250925092565b6000806040838503121561330a57613309613dd6565b5b60006133188582860161312c565b9250506020613329858286016131dc565b9150509250929050565b60006020828403121561334957613348613dd6565b5b600082013567ffffffffffffffff81111561336757613366613dd1565b5b61337384828501613156565b91505092915050565b6000806040838503121561339357613392613dd6565b5b600083013567ffffffffffffffff8111156133b1576133b0613dd1565b5b6133bd85828601613156565b925050602083013567ffffffffffffffff8111156133de576133dd613dd1565b5b6133ea85828601613184565b9150509250929050565b60006020828403121561340a57613409613dd6565b5b6000613418848285016131b2565b91505092915050565b60006020828403121561343757613436613dd6565b5b6000613445848285016131c7565b91505092915050565b60006020828403121561346457613463613dd6565b5b6000613472848285016131dc565b91505092915050565b60008060006060848603121561349457613493613dd6565b5b60006134a2868287016131f1565b93505060206134b3868287016131f1565b92505060406134c4868287016131f1565b9150509250925092565b60006134da83836134e6565b60208301905092915050565b6134ef81613bf7565b82525050565b6134fe81613bf7565b82525050565b600061350f82613a9d565b6135198185613ac0565b935061352483613a8d565b8060005b8381101561355557815161353c88826134ce565b975061354783613ab3565b925050600181019050613528565b5085935050505092915050565b61356b81613c09565b82525050565b61357a81613c4c565b82525050565b600061358b82613aa8565b6135958185613ad1565b93506135a5818560208601613c5e565b6135ae81613ddb565b840191505092915050565b60006135c6602383613ad1565b91506135d182613dec565b604082019050919050565b60006135e9602a83613ad1565b91506135f482613e3b565b604082019050919050565b600061360c602283613ad1565b915061361782613e8a565b604082019050919050565b600061362f601b83613ad1565b915061363a82613ed9565b602082019050919050565b6000613652602183613ad1565b915061365d82613f02565b604082019050919050565b6000613675602083613ad1565b915061368082613f51565b602082019050919050565b6000613698602983613ad1565b91506136a382613f7a565b604082019050919050565b60006136bb602583613ad1565b91506136c682613fc9565b604082019050919050565b60006136de602483613ad1565b91506136e982614018565b604082019050919050565b6000613701601783613ad1565b915061370c82614067565b602082019050919050565b61372081613c35565b82525050565b61372f81613c3f565b82525050565b600060208201905061374a60008301846134f5565b92915050565b600060408201905061376560008301856134f5565b61377260208301846134f5565b9392505050565b600060408201905061378e60008301856134f5565b61379b6020830184613717565b9392505050565b600060c0820190506137b760008301896134f5565b6137c46020830188613717565b6137d16040830187613571565b6137de6060830186613571565b6137eb60808301856134f5565b6137f860a0830184613717565b979650505050505050565b60006020820190506138186000830184613562565b92915050565b600060208201905081810360008301526138388184613580565b905092915050565b60006020820190508181036000830152613859816135b9565b9050919050565b60006020820190508181036000830152613879816135dc565b9050919050565b60006020820190508181036000830152613899816135ff565b9050919050565b600060208201905081810360008301526138b981613622565b9050919050565b600060208201905081810360008301526138d981613645565b9050919050565b600060208201905081810360008301526138f981613668565b9050919050565b600060208201905081810360008301526139198161368b565b9050919050565b60006020820190508181036000830152613939816136ae565b9050919050565b60006020820190508181036000830152613959816136d1565b9050919050565b60006020820190508181036000830152613979816136f4565b9050919050565b60006020820190506139956000830184613717565b92915050565b600060a0820190506139b06000830188613717565b6139bd6020830187613571565b81810360408301526139cf8186613504565b90506139de60608301856134f5565b6139eb6080830184613717565b9695505050505050565b6000602082019050613a0a6000830184613726565b92915050565b6000613a1a613a2b565b9050613a268282613c91565b919050565b6000604051905090565b600067ffffffffffffffff821115613a5057613a4f613d98565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613a7c57613a7b613d98565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613aed82613c35565b9150613af883613c35565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613b2d57613b2c613d0b565b5b828201905092915050565b6000613b4382613c35565b9150613b4e83613c35565b925082613b5e57613b5d613d3a565b5b828204905092915050565b6000613b7482613c35565b9150613b7f83613c35565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613bb857613bb7613d0b565b5b828202905092915050565b6000613bce82613c35565b9150613bd983613c35565b925082821015613bec57613beb613d0b565b5b828203905092915050565b6000613c0282613c15565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613c5782613c35565b9050919050565b60005b83811015613c7c578082015181840152602081019050613c61565b83811115613c8b576000848401525b50505050565b613c9a82613ddb565b810181811067ffffffffffffffff82111715613cb957613cb8613d98565b5b80604052505050565b6000613ccd82613c35565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613d0057613cff613d0b565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b61409981613bf7565b81146140a457600080fd5b50565b6140b081613c09565b81146140bb57600080fd5b50565b6140c781613c35565b81146140d257600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201b6b014d31241373add301f0cb91cac07c3ec7a99b08fee97555fbd6a114e9ed64736f6c63430008070033

Deployed Bytecode Sourcemap

4894:12235:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13338:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6857:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7709:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7134:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12505:322;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13469:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7878:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12405:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7043:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12839:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15026:195;;;;;;;;;;;;;:::i;:::-;;8199:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13094:232;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7237:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3973:148;;;;;;;;;;;;;:::i;:::-;;3759:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6948:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7383:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11448:846;;;;;;;;;;;;;:::i;:::-;;13595:349;;;;;;;;;;;;;:::i;:::-;;7558:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11325:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15233:194;;;;;;;;;;;;;:::i;:::-;;12306:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13338:119;13406:7;3896:12;:10;:12::i;:::-;3886:22;;:6;;;;;;;;;;:22;;;3878:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13433:7:::1;:16;13441:7;13433:16;;;;;;;;;;;;;;;;13426:23;;13338:119:::0;;;:::o;6857:83::-;6894:13;6927:5;;;;;;;;;;;;;;;;;6920:12;;6857:83;:::o;7709:161::-;7784:4;7801:39;7810:12;:10;:12::i;:::-;7824:7;7833:6;7801:8;:39::i;:::-;7858:4;7851:11;;7709:161;;;;:::o;7134:95::-;7187:7;5484:23;7207:14;;7134:95;:::o;12505:322::-;3896:12;:10;:12::i;:::-;3886:22;;:6;;;;;;;;;;:22;;;3878:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12613:6:::1;12608:212;12629:9;:16;12625:1;:20;12608:212;;;12667:11;12684:9;12694:1;12684:12;;;;;;;;:::i;:::-;;;;;;;;12667:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12749:5;12736:7;12744:1;12736:10;;;;;;;;:::i;:::-;;;;;;;;:18;;;;:::i;:::-;12712:7;:21;12720:9;12730:1;12720:12;;;;;;;;:::i;:::-;;;;;;;;12712:21;;;;;;;;;;;;;;;:42;;;;12804:4;12769:18;:32;12788:9;12798:1;12788:12;;;;;;;;:::i;:::-;;;;;;;;12769:32;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;12647:3;;;;;:::i;:::-;;;;12608:212;;;;12505:322:::0;;:::o;13469:114::-;3896:12;:10;:12::i;:::-;3886:22;;:6;;;;;;;;;;:22;;;3878:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13569:6:::1;13550:7;:16;13558:7;13550:16;;;;;;;;;;;;;;;:25;;;;13469:114:::0;;:::o;7878:313::-;7976:4;7993:36;8003:6;8011:9;8022:6;7993:9;:36::i;:::-;8040:121;8049:6;8057:12;:10;:12::i;:::-;8071:89;8109:6;8071:89;;;;;;;;;;;;;;;;;:11;:19;8083:6;8071:19;;;;;;;;;;;;;;;:33;8091:12;:10;:12::i;:::-;8071:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;8040:8;:121::i;:::-;8179:4;8172:11;;7878:313;;;;;:::o;12405:88::-;3896:12;:10;:12::i;:::-;3886:22;;:6;;;;;;;;;;:22;;;3878:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12480:5:::1;12465:4;:12;12470:6;12465:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;12405:88:::0;:::o;7043:83::-;7084:5;5926:1;7102:16;;7043:83;:::o;12839:243::-;3896:12;:10;:12::i;:::-;3886:22;;:6;;;;;;;;;;:22;;;3878:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12924:6:::1;12919:156;12940:9;:16;12936:1;:20;12919:156;;;12995:9;13005:1;12995:12;;;;;;;;:::i;:::-;;;;;;;;12978:11;12990:1;12978:14;;;;;;;;:::i;:::-;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;13059:4;13022:18;:34;13041:11;13053:1;13041:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13022:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;12958:3;;;;;:::i;:::-;;;;12919:156;;;;12839:243:::0;:::o;15026:195::-;15092:15;;;;;;;;;;;15076:31;;:12;:10;:12::i;:::-;:31;;;15068:40;;;;;;15119:23;15145:24;15163:4;15145:9;:24::i;:::-;15119:50;;15180:33;15197:15;15180:16;:33::i;:::-;15057:164;15026:195::o;8199:103::-;3896:12;:10;:12::i;:::-;3886:22;;:6;;;;;;;;;;:22;;;3878:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8289:5:::1;8271:15;;:23;;;;;;;;;;;;;;;;;;8199:103:::0;:::o;13094:232::-;13152:7;3896:12;:10;:12::i;:::-;3886:22;;:6;;;;;;;;;;:22;;;3878:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13171:11:::1;13201:6:::0;13197:101:::1;13217:11;:18;;;;13213:1;:22;13197:101;;;13263:7;:23;13271:11;13283:1;13271:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13263:23;;;;;;;;;;;;;;;;13256:30;;;;;:::i;:::-;;;13237:3;;;;;:::i;:::-;;;;13197:101;;;;13315:3;13308:10;;;13094:232:::0;:::o;7237:138::-;7303:7;7330:37;7350:7;:16;7358:7;7350:16;;;;;;;;;;;;;;;;7330:19;:37::i;:::-;7323:44;;7237:138;;;:::o;3973:148::-;3896:12;:10;:12::i;:::-;3886:22;;:6;;;;;;;;;;:22;;;3878:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4080:1:::1;4043:40;;4064:6;::::0;::::1;;;;;;;;4043:40;;;;;;;;;;;;4111:1;4094:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3973:148::o:0;3759:79::-;3797:7;3824:6;;;;;;;;;;;3817:13;;3759:79;:::o;6948:87::-;6987:13;7020:7;;;;;;;;;;;;;;;;;7013:14;;6948:87;:::o;7383:167::-;7461:4;7478:42;7488:12;:10;:12::i;:::-;7502:9;7513:6;7478:9;:42::i;:::-;7538:4;7531:11;;7383:167;;;;:::o;11448:846::-;3896:12;:10;:12::i;:::-;3886:22;;:6;;;;;;;;;;:22;;;3878:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11512:11:::1;;;;;;;;;;;11511:12;11503:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11561:35;11618:42;11561:100;;11690:16;11672:15;;:34;;;;;;;;;;;;;;;;;;11717:58;11734:4;11749:15;;;;;;;;;;;5484:23;11717:8;:58::i;:::-;11820:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11802:56;;;11867:4;11874:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11802:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11786:13;;:112;;;;;;;;;;;;;;;;;;11909:15;;;;;;;;;;;:31;;;11948:21;11979:4;11985:24;12003:4;11985:9;:24::i;:::-;12010:1;12012::::0;12014:7:::1;:5;:7::i;:::-;12022:15;11909:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12063:4;12049:11;;:18;;;;;;;;;;;;;;;;;;12096:4;12078:15;;:22;;;;;;;;;;;;;;;;;;12126:21;12111:12;:36;;;;12172:4;12158:11;;:18;;;;;;;;;;;;;;;;;;12192:12;12180:9;:24;;;;12222:13;;;;;;;;;;;12215:29;;;12253:15;;;;;;;;;;;12271:14;12215:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11492:802;11448:846::o:0;13595:349::-;3896:12;:10;:12::i;:::-;3886:22;;:6;;;;;;;;;;:22;;;3878:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13658:1:::1;13646:9;:13;;;;13682:1;13670:9;:13;;;;13698:6;13694:195;13714:11;:18;;;;13710:1;:22;13694:195;;;13753:67;13768:10;13780:11;13792:1;13780:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13796:7;:23;13804:11;13816:1;13804:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13796:23;;;;;;;;;;;;;;;;13753:14;:67::i;:::-;13872:5;13835:18;:34;13854:11;13866:1;13854:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13835:34;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;13734:3;;;;;:::i;:::-;;;;13694:195;;;;13911:1;13899:9;:13;;;;13935:1;13923:9;:13;;;;13595:349::o:0;7558:143::-;7639:7;7666:11;:18;7678:5;7666:18;;;;;;;;;;;;;;;:27;7685:7;7666:27;;;;;;;;;;;;;;;;7659:34;;7558:143;;;;:::o;11325:105::-;3896:12;:10;:12::i;:::-;3886:22;;:6;;;;;;;;;;:22;;;3878:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11417:5:::1;11408:6;:14;;;;:::i;:::-;11393:12;:29;;;;11325:105:::0;:::o;15233:194::-;15299:15;;;;;;;;;;;15283:31;;:12;:10;:12::i;:::-;:31;;;15275:40;;;;;;15326:26;15355:21;15326:50;;15387:32;15400:18;15387:12;:32::i;:::-;15264:163;15233:194::o;12306:87::-;3896:12;:10;:12::i;:::-;3886:22;;:6;;;;;;;;;;:22;;;3878:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12381:4:::1;12366;:12;12371:6;12366:12;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;12306:87:::0;:::o;1477:98::-;1530:7;1557:10;1550:17;;1477:98;:::o;8572:335::-;8682:1;8665:19;;:5;:19;;;;8657:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8763:1;8744:21;;:7;:21;;;;8736:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8845:6;8815:11;:18;8827:5;8815:18;;;;;;;;;;;;;;;:27;8834:7;8815:27;;;;;;;;;;;;;;;:36;;;;8883:7;8867:32;;8876:5;8867:32;;;8892:6;8867:32;;;;;;:::i;:::-;;;;;;;;8572:335;;;:::o;8915:1737::-;9019:1;9003:18;;:4;:18;;;;8995:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9096:1;9082:16;;:2;:16;;;;9074:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9166:1;9157:6;:10;9149:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9236:1;9224:9;:13;;;;9260:1;9248:9;:13;;;;9284:7;:5;:7::i;:::-;9276:15;;:4;:15;;;;:32;;;;;9301:7;:5;:7::i;:::-;9295:13;;:2;:13;;;;9276:32;9272:1328;;;9318:18;:24;9337:4;9318:24;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;9345:18;:22;9364:2;9345:22;;;;;;;;;;;;;;;;;;;;;;;;;9318:49;9315:107;;;9393:1;9381:9;:13;;;;9419:1;9407:9;:13;;;;9315:107;9445:4;:10;9450:4;9445:10;;;;;;;;;;;;;;;;;;;;;;;;;9444:11;:24;;;;;9460:4;:8;9465:2;9460:8;;;;;;;;;;;;;;;;;;;;;;;;;9459:9;9444:24;9436:33;;;;;;9496:13;;;;;;;;;;;9488:21;;:4;:21;;;:55;;;;;9527:15;;;;;;;;;;;9513:30;;:2;:30;;;;9488:55;:83;;;;;9549:18;:22;9568:2;9549:22;;;;;;;;;;;;;;;;;;;;;;;;;9547:24;9488:83;:102;;;;;9575:15;;;;;;;;;;;9488:102;9484:374;;;9658:12;;9648:6;:22;;9640:31;;;;;;9708:15;9693:8;:12;9702:2;9693:12;;;;;;;;;;;;;;;;:30;9690:89;;;9743:2;9731:9;:14;;;;9770:1;9758:9;:13;;;;9690:89;9831:10;9812:15;:30;;;;:::i;:::-;9797:8;:12;9806:2;9797:12;;;;;;;;;;;;;;;:45;;;;9484:374;9893:12;9888:1;9876:9;;:13;;;;:::i;:::-;:29;;:54;;;;;9917:13;;;;;;;;;;;9909:21;;:4;:21;;;9876:54;9872:115;;;9950:2;9938:9;:14;;;;9977:1;9965:9;:13;;;;9872:115;10011:13;;;;;;;;;;;10005:19;;:2;:19;;;:55;;;;;10044:15;;;;;;;;;;;10028:32;;:4;:32;;;;10005:55;:85;;;;;10066:18;:24;10085:4;10066:24;;;;;;;;;;;;;;;;;;;;;;;;;10064:26;10005:85;10001:172;;;10123:1;10111:9;:13;;;;10155:2;10143:9;:14;;;;10001:172;10201:28;10232:24;10250:4;10232:9;:24::i;:::-;10201:55;;10276:6;;;;;;;;;;;10275:7;:32;;;;;10294:13;;;;;;;;;;;10286:21;;:4;:21;;;;10275:32;:47;;;;;10311:11;;;;;;;;;;;10275:47;10271:318;;;10343:38;10360:20;10343:16;:38::i;:::-;10400:26;10429:21;10400:50;;10493:1;10472:18;:22;10469:105;;;10519:35;10532:21;10519:12;:35::i;:::-;10469:105;10324:265;10271:318;9310:1290;9272:1328;10614:30;10629:4;10634:2;10637:6;10614:14;:30::i;:::-;8915:1737;;;:::o;2614:190::-;2700:7;2733:1;2728;:6;;2736:12;2720:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2760:9;2776:1;2772;:5;;;;:::i;:::-;2760:17;;2795:1;2788:8;;;2614:190;;;;;:::o;10660:483::-;6308:4;6299:6;;:13;;;;;;;;;;;;;;;;;;10738:21:::1;10776:1;10762:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10738:40;;10807:4;10789;10794:1;10789:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10833:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10823:4;10828:1;10823:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10866:62;10883:4;10898:15;;;;;;;;;;;10916:11;10866:8;:62::i;:::-;10939:15;;;;;;;;;;;:66;;;11020:11;11046:1;11062:4;11089;11109:15;10939:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10727:416;6344:5:::0;6335:6;;:14;;;;;;;;;;;;;;;;;;10660:483;:::o;8310:254::-;8377:7;8416;;8405;:18;;8397:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;8481:19;8504:10;:8;:10::i;:::-;8481:33;;8532:24;8544:11;8532:7;:11;;:24;;;;:::i;:::-;8525:31;;;8310:254;;;:::o;13960:146::-;14054:44;14072:6;14080:9;14091:6;14054:17;:44::i;:::-;13960:146;;;:::o;11159:154::-;11216:15;;;;;;;;;;;:24;;:39;11241:13;11252:1;11241:6;:10;;:13;;;;:::i;:::-;11216:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11266:15;;;;;;;;;;;:24;;:39;11291:13;11302:1;11291:6;:10;;:13;;;;:::i;:::-;11266:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11159:154;:::o;16693:163::-;16734:7;16755:15;16772;16791:19;:17;:19::i;:::-;16754:56;;;;16828:20;16840:7;16828;:11;;:20;;;;:::i;:::-;16821:27;;;;16693:163;:::o;3066:132::-;3124:7;3151:39;3155:1;3158;3151:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3144:46;;3066:132;;;;:::o;14114:488::-;14213:15;14230:23;14255:12;14269:23;14294:12;14308:13;14325:19;14336:7;14325:10;:19::i;:::-;14212:132;;;;;;;;;;;;14373:28;14393:7;14373;:15;14381:6;14373:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14355:7;:15;14363:6;14355:15;;;;;;;;;;;;;;;:46;;;;14433:39;14456:15;14433:7;:18;14441:9;14433:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14412:7;:18;14420:9;14412:18;;;;;;;;;;;;;;;:60;;;;14484:16;14494:5;14484:9;:16::i;:::-;14511:23;14523:4;14529;14511:11;:23::i;:::-;14567:9;14550:44;;14559:6;14550:44;;;14578:15;14550:44;;;;;;:::i;:::-;;;;;;;;14201:401;;;;;;14114:488;;;:::o;16864:262::-;16914:7;16923;16943:15;16961:7;;16943:25;;16979:15;5484:23;16979:25;;17035:20;5484:23;17035:7;;:11;;:20;;;;:::i;:::-;17025:7;:30;17021:61;;;17065:7;;5484:23;17057:25;;;;;;;;17021:61;17101:7;17110;17093:25;;;;;;16864:262;;;:::o;3206:189::-;3292:7;3324:1;3320;:5;3327:12;3312:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3351:9;3367:1;3363;:5;;;;:::i;:::-;3351:17;;3386:1;3379:8;;;3206:189;;;;;:::o;15441:471::-;15500:7;15509;15518;15527;15536;15545;15566:23;15591:12;15605:13;15622:42;15634:7;15643:9;;15654;;15622:11;:42::i;:::-;15565:99;;;;;;15675:19;15698:10;:8;:10::i;:::-;15675:33;;15720:15;15737:23;15762:12;15778:46;15790:7;15799:4;15805:5;15812:11;15778;:46::i;:::-;15719:105;;;;;;15843:7;15852:15;15869:4;15875:15;15892:4;15898:5;15835:69;;;;;;;;;;;;;;;;;;;15441:471;;;;;;;:::o;2470:136::-;2528:7;2555:43;2559:1;2562;2555:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2548:50;;2470:136;;;;:::o;2283:179::-;2341:7;2361:9;2377:1;2373;:5;;;;:::i;:::-;2361:17;;2402:1;2397;:6;;2389:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2453:1;2446:8;;;2283:179;;;;:::o;14610:212::-;14663:19;14686:10;:8;:10::i;:::-;14663:33;;14707:13;14723:22;14733:11;14723:5;:9;;:22;;;;:::i;:::-;14707:38;;14781:33;14808:5;14781:7;:22;14797:4;14781:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14756:7;:22;14772:4;14756:22;;;;;;;;;;;;;;;:58;;;;14652:170;;14610:212;:::o;14830:147::-;14908:17;14920:4;14908:7;;:11;;:17;;;;:::i;:::-;14898:7;:27;;;;14949:20;14964:4;14949:10;;:14;;:20;;;;:::i;:::-;14936:10;:33;;;;14830:147;;:::o;15920:351::-;16013:7;16022;16031;16051:12;16066:28;16090:3;16066:19;16078:6;16066:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;16051:43;;16105:13;16121:29;16146:3;16121:20;16133:7;16121;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;16105:45;;16161:23;16187:28;16209:5;16187:17;16199:4;16187:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16161:54;;16234:15;16251:4;16257:5;16226:37;;;;;;;;;15920:351;;;;;;;:::o;16279:409::-;16389:7;16398;16407;16427:15;16445:24;16457:11;16445:7;:11;;:24;;;;:::i;:::-;16427:42;;16480:12;16495:21;16504:11;16495:4;:8;;:21;;;;:::i;:::-;16480:36;;16527:13;16543:22;16553:11;16543:5;:9;;:22;;;;:::i;:::-;16527:38;;16576:23;16602:28;16624:5;16602:17;16614:4;16602:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16576:54;;16649:7;16658:15;16675:4;16641:39;;;;;;;;;;16279:409;;;;;;;;:::o;2812:246::-;2870:7;2899:1;2894;:6;2890:47;;;2924:1;2917:8;;;;2890:47;2947:9;2963:1;2959;:5;;;;:::i;:::-;2947:17;;2992:1;2987;2983;:5;;;;:::i;:::-;:10;2975:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3049:1;3042:8;;;2812:246;;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;769:::-;865:5;890:81;906:64;963:6;906:64;:::i;:::-;890:81;:::i;:::-;881:90;;991:5;1020:6;1013:5;1006:21;1054:4;1047:5;1043:16;1036:23;;1080:6;1130:3;1122:4;1114:6;1110:17;1105:3;1101:27;1098:36;1095:143;;;1149:79;;:::i;:::-;1095:143;1262:1;1247:238;1272:6;1269:1;1266:13;1247:238;;;1340:3;1369:37;1402:3;1390:10;1369:37;:::i;:::-;1364:3;1357:50;1436:4;1431:3;1427:14;1420:21;;1470:4;1465:3;1461:14;1454:21;;1307:178;1294:1;1291;1287:9;1282:14;;1247:238;;;1251:14;871:620;;769:722;;;;;:::o;1497:139::-;1543:5;1581:6;1568:20;1559:29;;1597:33;1624:5;1597:33;:::i;:::-;1497:139;;;;:::o;1642:143::-;1699:5;1730:6;1724:13;1715:22;;1746:33;1773:5;1746:33;:::i;:::-;1642:143;;;;:::o;1808:370::-;1879:5;1928:3;1921:4;1913:6;1909:17;1905:27;1895:122;;1936:79;;:::i;:::-;1895:122;2053:6;2040:20;2078:94;2168:3;2160:6;2153:4;2145:6;2141:17;2078:94;:::i;:::-;2069:103;;1885:293;1808:370;;;;:::o;2201:::-;2272:5;2321:3;2314:4;2306:6;2302:17;2298:27;2288:122;;2329:79;;:::i;:::-;2288:122;2446:6;2433:20;2471:94;2561:3;2553:6;2546:4;2538:6;2534:17;2471:94;:::i;:::-;2462:103;;2278:293;2201:370;;;;:::o;2577:133::-;2620:5;2658:6;2645:20;2636:29;;2674:30;2698:5;2674:30;:::i;:::-;2577:133;;;;:::o;2716:137::-;2770:5;2801:6;2795:13;2786:22;;2817:30;2841:5;2817:30;:::i;:::-;2716:137;;;;:::o;2859:139::-;2905:5;2943:6;2930:20;2921:29;;2959:33;2986:5;2959:33;:::i;:::-;2859:139;;;;:::o;3004:143::-;3061:5;3092:6;3086:13;3077:22;;3108:33;3135:5;3108:33;:::i;:::-;3004:143;;;;:::o;3153:329::-;3212:6;3261:2;3249:9;3240:7;3236:23;3232:32;3229:119;;;3267:79;;:::i;:::-;3229:119;3387:1;3412:53;3457:7;3448:6;3437:9;3433:22;3412:53;:::i;:::-;3402:63;;3358:117;3153:329;;;;:::o;3488:351::-;3558:6;3607:2;3595:9;3586:7;3582:23;3578:32;3575:119;;;3613:79;;:::i;:::-;3575:119;3733:1;3758:64;3814:7;3805:6;3794:9;3790:22;3758:64;:::i;:::-;3748:74;;3704:128;3488:351;;;;:::o;3845:474::-;3913:6;3921;3970:2;3958:9;3949:7;3945:23;3941:32;3938:119;;;3976:79;;:::i;:::-;3938:119;4096:1;4121:53;4166:7;4157:6;4146:9;4142:22;4121:53;:::i;:::-;4111:63;;4067:117;4223:2;4249:53;4294:7;4285:6;4274:9;4270:22;4249:53;:::i;:::-;4239:63;;4194:118;3845:474;;;;;:::o;4325:619::-;4402:6;4410;4418;4467:2;4455:9;4446:7;4442:23;4438:32;4435:119;;;4473:79;;:::i;:::-;4435:119;4593:1;4618:53;4663:7;4654:6;4643:9;4639:22;4618:53;:::i;:::-;4608:63;;4564:117;4720:2;4746:53;4791:7;4782:6;4771:9;4767:22;4746:53;:::i;:::-;4736:63;;4691:118;4848:2;4874:53;4919:7;4910:6;4899:9;4895:22;4874:53;:::i;:::-;4864:63;;4819:118;4325:619;;;;;:::o;4950:474::-;5018:6;5026;5075:2;5063:9;5054:7;5050:23;5046:32;5043:119;;;5081:79;;:::i;:::-;5043:119;5201:1;5226:53;5271:7;5262:6;5251:9;5247:22;5226:53;:::i;:::-;5216:63;;5172:117;5328:2;5354:53;5399:7;5390:6;5379:9;5375:22;5354:53;:::i;:::-;5344:63;;5299:118;4950:474;;;;;:::o;5430:539::-;5514:6;5563:2;5551:9;5542:7;5538:23;5534:32;5531:119;;;5569:79;;:::i;:::-;5531:119;5717:1;5706:9;5702:17;5689:31;5747:18;5739:6;5736:30;5733:117;;;5769:79;;:::i;:::-;5733:117;5874:78;5944:7;5935:6;5924:9;5920:22;5874:78;:::i;:::-;5864:88;;5660:302;5430:539;;;;:::o;5975:894::-;6093:6;6101;6150:2;6138:9;6129:7;6125:23;6121:32;6118:119;;;6156:79;;:::i;:::-;6118:119;6304:1;6293:9;6289:17;6276:31;6334:18;6326:6;6323:30;6320:117;;;6356:79;;:::i;:::-;6320:117;6461:78;6531:7;6522:6;6511:9;6507:22;6461:78;:::i;:::-;6451:88;;6247:302;6616:2;6605:9;6601:18;6588:32;6647:18;6639:6;6636:30;6633:117;;;6669:79;;:::i;:::-;6633:117;6774:78;6844:7;6835:6;6824:9;6820:22;6774:78;:::i;:::-;6764:88;;6559:303;5975:894;;;;;:::o;6875:323::-;6931:6;6980:2;6968:9;6959:7;6955:23;6951:32;6948:119;;;6986:79;;:::i;:::-;6948:119;7106:1;7131:50;7173:7;7164:6;7153:9;7149:22;7131:50;:::i;:::-;7121:60;;7077:114;6875:323;;;;:::o;7204:345::-;7271:6;7320:2;7308:9;7299:7;7295:23;7291:32;7288:119;;;7326:79;;:::i;:::-;7288:119;7446:1;7471:61;7524:7;7515:6;7504:9;7500:22;7471:61;:::i;:::-;7461:71;;7417:125;7204:345;;;;:::o;7555:329::-;7614:6;7663:2;7651:9;7642:7;7638:23;7634:32;7631:119;;;7669:79;;:::i;:::-;7631:119;7789:1;7814:53;7859:7;7850:6;7839:9;7835:22;7814:53;:::i;:::-;7804:63;;7760:117;7555:329;;;;:::o;7890:663::-;7978:6;7986;7994;8043:2;8031:9;8022:7;8018:23;8014:32;8011:119;;;8049:79;;:::i;:::-;8011:119;8169:1;8194:64;8250:7;8241:6;8230:9;8226:22;8194:64;:::i;:::-;8184:74;;8140:128;8307:2;8333:64;8389:7;8380:6;8369:9;8365:22;8333:64;:::i;:::-;8323:74;;8278:129;8446:2;8472:64;8528:7;8519:6;8508:9;8504:22;8472:64;:::i;:::-;8462:74;;8417:129;7890:663;;;;;:::o;8559:179::-;8628:10;8649:46;8691:3;8683:6;8649:46;:::i;:::-;8727:4;8722:3;8718:14;8704:28;;8559:179;;;;:::o;8744:108::-;8821:24;8839:5;8821:24;:::i;:::-;8816:3;8809:37;8744:108;;:::o;8858:118::-;8945:24;8963:5;8945:24;:::i;:::-;8940:3;8933:37;8858:118;;:::o;9012:732::-;9131:3;9160:54;9208:5;9160:54;:::i;:::-;9230:86;9309:6;9304:3;9230:86;:::i;:::-;9223:93;;9340:56;9390:5;9340:56;:::i;:::-;9419:7;9450:1;9435:284;9460:6;9457:1;9454:13;9435:284;;;9536:6;9530:13;9563:63;9622:3;9607:13;9563:63;:::i;:::-;9556:70;;9649:60;9702:6;9649:60;:::i;:::-;9639:70;;9495:224;9482:1;9479;9475:9;9470:14;;9435:284;;;9439:14;9735:3;9728:10;;9136:608;;;9012:732;;;;:::o;9750:109::-;9831:21;9846:5;9831:21;:::i;:::-;9826:3;9819:34;9750:109;;:::o;9865:147::-;9960:45;9999:5;9960:45;:::i;:::-;9955:3;9948:58;9865:147;;:::o;10018:364::-;10106:3;10134:39;10167:5;10134:39;:::i;:::-;10189:71;10253:6;10248:3;10189:71;:::i;:::-;10182:78;;10269:52;10314:6;10309:3;10302:4;10295:5;10291:16;10269:52;:::i;:::-;10346:29;10368:6;10346:29;:::i;:::-;10341:3;10337:39;10330:46;;10110:272;10018:364;;;;:::o;10388:366::-;10530:3;10551:67;10615:2;10610:3;10551:67;:::i;:::-;10544:74;;10627:93;10716:3;10627:93;:::i;:::-;10745:2;10740:3;10736:12;10729:19;;10388:366;;;:::o;10760:::-;10902:3;10923:67;10987:2;10982:3;10923:67;:::i;:::-;10916:74;;10999:93;11088:3;10999:93;:::i;:::-;11117:2;11112:3;11108:12;11101:19;;10760:366;;;:::o;11132:::-;11274:3;11295:67;11359:2;11354:3;11295:67;:::i;:::-;11288:74;;11371:93;11460:3;11371:93;:::i;:::-;11489:2;11484:3;11480:12;11473:19;;11132:366;;;:::o;11504:::-;11646:3;11667:67;11731:2;11726:3;11667:67;:::i;:::-;11660:74;;11743:93;11832:3;11743:93;:::i;:::-;11861:2;11856:3;11852:12;11845:19;;11504:366;;;:::o;11876:::-;12018:3;12039:67;12103:2;12098:3;12039:67;:::i;:::-;12032:74;;12115:93;12204:3;12115:93;:::i;:::-;12233:2;12228:3;12224:12;12217:19;;11876:366;;;:::o;12248:::-;12390:3;12411:67;12475:2;12470:3;12411:67;:::i;:::-;12404:74;;12487:93;12576:3;12487:93;:::i;:::-;12605:2;12600:3;12596:12;12589:19;;12248:366;;;:::o;12620:::-;12762:3;12783:67;12847:2;12842:3;12783:67;:::i;:::-;12776:74;;12859:93;12948:3;12859:93;:::i;:::-;12977:2;12972:3;12968:12;12961:19;;12620:366;;;:::o;12992:::-;13134:3;13155:67;13219:2;13214:3;13155:67;:::i;:::-;13148:74;;13231:93;13320:3;13231:93;:::i;:::-;13349:2;13344:3;13340:12;13333:19;;12992:366;;;:::o;13364:::-;13506:3;13527:67;13591:2;13586:3;13527:67;:::i;:::-;13520:74;;13603:93;13692:3;13603:93;:::i;:::-;13721:2;13716:3;13712:12;13705:19;;13364:366;;;:::o;13736:::-;13878:3;13899:67;13963:2;13958:3;13899:67;:::i;:::-;13892:74;;13975:93;14064:3;13975:93;:::i;:::-;14093:2;14088:3;14084:12;14077:19;;13736:366;;;:::o;14108:118::-;14195:24;14213:5;14195:24;:::i;:::-;14190:3;14183:37;14108:118;;:::o;14232:112::-;14315:22;14331:5;14315:22;:::i;:::-;14310:3;14303:35;14232:112;;:::o;14350:222::-;14443:4;14481:2;14470:9;14466:18;14458:26;;14494:71;14562:1;14551:9;14547:17;14538:6;14494:71;:::i;:::-;14350:222;;;;:::o;14578:332::-;14699:4;14737:2;14726:9;14722:18;14714:26;;14750:71;14818:1;14807:9;14803:17;14794:6;14750:71;:::i;:::-;14831:72;14899:2;14888:9;14884:18;14875:6;14831:72;:::i;:::-;14578:332;;;;;:::o;14916:::-;15037:4;15075:2;15064:9;15060:18;15052:26;;15088:71;15156:1;15145:9;15141:17;15132:6;15088:71;:::i;:::-;15169:72;15237:2;15226:9;15222:18;15213:6;15169:72;:::i;:::-;14916:332;;;;;:::o;15254:807::-;15503:4;15541:3;15530:9;15526:19;15518:27;;15555:71;15623:1;15612:9;15608:17;15599:6;15555:71;:::i;:::-;15636:72;15704:2;15693:9;15689:18;15680:6;15636:72;:::i;:::-;15718:80;15794:2;15783:9;15779:18;15770:6;15718:80;:::i;:::-;15808;15884:2;15873:9;15869:18;15860:6;15808:80;:::i;:::-;15898:73;15966:3;15955:9;15951:19;15942:6;15898:73;:::i;:::-;15981;16049:3;16038:9;16034:19;16025:6;15981:73;:::i;:::-;15254:807;;;;;;;;;:::o;16067:210::-;16154:4;16192:2;16181:9;16177:18;16169:26;;16205:65;16267:1;16256:9;16252:17;16243:6;16205:65;:::i;:::-;16067:210;;;;:::o;16283:313::-;16396:4;16434:2;16423:9;16419:18;16411:26;;16483:9;16477:4;16473:20;16469:1;16458:9;16454:17;16447:47;16511:78;16584:4;16575:6;16511:78;:::i;:::-;16503:86;;16283:313;;;;:::o;16602:419::-;16768:4;16806:2;16795:9;16791:18;16783:26;;16855:9;16849:4;16845:20;16841:1;16830:9;16826:17;16819:47;16883:131;17009:4;16883:131;:::i;:::-;16875:139;;16602:419;;;:::o;17027:::-;17193:4;17231:2;17220:9;17216:18;17208:26;;17280:9;17274:4;17270:20;17266:1;17255:9;17251:17;17244:47;17308:131;17434:4;17308:131;:::i;:::-;17300:139;;17027:419;;;:::o;17452:::-;17618:4;17656:2;17645:9;17641:18;17633:26;;17705:9;17699:4;17695:20;17691:1;17680:9;17676:17;17669:47;17733:131;17859:4;17733:131;:::i;:::-;17725:139;;17452:419;;;:::o;17877:::-;18043:4;18081:2;18070:9;18066:18;18058:26;;18130:9;18124:4;18120:20;18116:1;18105:9;18101:17;18094:47;18158:131;18284:4;18158:131;:::i;:::-;18150:139;;17877:419;;;:::o;18302:::-;18468:4;18506:2;18495:9;18491:18;18483:26;;18555:9;18549:4;18545:20;18541:1;18530:9;18526:17;18519:47;18583:131;18709:4;18583:131;:::i;:::-;18575:139;;18302:419;;;:::o;18727:::-;18893:4;18931:2;18920:9;18916:18;18908:26;;18980:9;18974:4;18970:20;18966:1;18955:9;18951:17;18944:47;19008:131;19134:4;19008:131;:::i;:::-;19000:139;;18727:419;;;:::o;19152:::-;19318:4;19356:2;19345:9;19341:18;19333:26;;19405:9;19399:4;19395:20;19391:1;19380:9;19376:17;19369:47;19433:131;19559:4;19433:131;:::i;:::-;19425:139;;19152:419;;;:::o;19577:::-;19743:4;19781:2;19770:9;19766:18;19758:26;;19830:9;19824:4;19820:20;19816:1;19805:9;19801:17;19794:47;19858:131;19984:4;19858:131;:::i;:::-;19850:139;;19577:419;;;:::o;20002:::-;20168:4;20206:2;20195:9;20191:18;20183:26;;20255:9;20249:4;20245:20;20241:1;20230:9;20226:17;20219:47;20283:131;20409:4;20283:131;:::i;:::-;20275:139;;20002:419;;;:::o;20427:::-;20593:4;20631:2;20620:9;20616:18;20608:26;;20680:9;20674:4;20670:20;20666:1;20655:9;20651:17;20644:47;20708:131;20834:4;20708:131;:::i;:::-;20700:139;;20427:419;;;:::o;20852:222::-;20945:4;20983:2;20972:9;20968:18;20960:26;;20996:71;21064:1;21053:9;21049:17;21040:6;20996:71;:::i;:::-;20852:222;;;;:::o;21080:831::-;21343:4;21381:3;21370:9;21366:19;21358:27;;21395:71;21463:1;21452:9;21448:17;21439:6;21395:71;:::i;:::-;21476:80;21552:2;21541:9;21537:18;21528:6;21476:80;:::i;:::-;21603:9;21597:4;21593:20;21588:2;21577:9;21573:18;21566:48;21631:108;21734:4;21725:6;21631:108;:::i;:::-;21623:116;;21749:72;21817:2;21806:9;21802:18;21793:6;21749:72;:::i;:::-;21831:73;21899:3;21888:9;21884:19;21875:6;21831:73;:::i;:::-;21080:831;;;;;;;;:::o;21917:214::-;22006:4;22044:2;22033:9;22029:18;22021:26;;22057:67;22121:1;22110:9;22106:17;22097:6;22057:67;:::i;:::-;21917:214;;;;:::o;22137:129::-;22171:6;22198:20;;:::i;:::-;22188:30;;22227:33;22255:4;22247:6;22227:33;:::i;:::-;22137:129;;;:::o;22272:75::-;22305:6;22338:2;22332:9;22322:19;;22272:75;:::o;22353:311::-;22430:4;22520:18;22512:6;22509:30;22506:56;;;22542:18;;:::i;:::-;22506:56;22592:4;22584:6;22580:17;22572:25;;22652:4;22646;22642:15;22634:23;;22353:311;;;:::o;22670:::-;22747:4;22837:18;22829:6;22826:30;22823:56;;;22859:18;;:::i;:::-;22823:56;22909:4;22901:6;22897:17;22889:25;;22969:4;22963;22959:15;22951:23;;22670:311;;;:::o;22987:132::-;23054:4;23077:3;23069:11;;23107:4;23102:3;23098:14;23090:22;;22987:132;;;:::o;23125:114::-;23192:6;23226:5;23220:12;23210:22;;23125:114;;;:::o;23245:99::-;23297:6;23331:5;23325:12;23315:22;;23245:99;;;:::o;23350:113::-;23420:4;23452;23447:3;23443:14;23435:22;;23350:113;;;:::o;23469:184::-;23568:11;23602:6;23597:3;23590:19;23642:4;23637:3;23633:14;23618:29;;23469:184;;;;:::o;23659:169::-;23743:11;23777:6;23772:3;23765:19;23817:4;23812:3;23808:14;23793:29;;23659:169;;;;:::o;23834:305::-;23874:3;23893:20;23911:1;23893:20;:::i;:::-;23888:25;;23927:20;23945:1;23927:20;:::i;:::-;23922:25;;24081:1;24013:66;24009:74;24006:1;24003:81;24000:107;;;24087:18;;:::i;:::-;24000:107;24131:1;24128;24124:9;24117:16;;23834:305;;;;:::o;24145:185::-;24185:1;24202:20;24220:1;24202:20;:::i;:::-;24197:25;;24236:20;24254:1;24236:20;:::i;:::-;24231:25;;24275:1;24265:35;;24280:18;;:::i;:::-;24265:35;24322:1;24319;24315:9;24310:14;;24145:185;;;;:::o;24336:348::-;24376:7;24399:20;24417:1;24399:20;:::i;:::-;24394:25;;24433:20;24451:1;24433:20;:::i;:::-;24428:25;;24621:1;24553:66;24549:74;24546:1;24543:81;24538:1;24531:9;24524:17;24520:105;24517:131;;;24628:18;;:::i;:::-;24517:131;24676:1;24673;24669:9;24658:20;;24336:348;;;;:::o;24690:191::-;24730:4;24750:20;24768:1;24750:20;:::i;:::-;24745:25;;24784:20;24802:1;24784:20;:::i;:::-;24779:25;;24823:1;24820;24817:8;24814:34;;;24828:18;;:::i;:::-;24814:34;24873:1;24870;24866:9;24858:17;;24690:191;;;;:::o;24887:96::-;24924:7;24953:24;24971:5;24953:24;:::i;:::-;24942:35;;24887:96;;;:::o;24989:90::-;25023:7;25066:5;25059:13;25052:21;25041:32;;24989:90;;;:::o;25085:126::-;25122:7;25162:42;25155:5;25151:54;25140:65;;25085:126;;;:::o;25217:77::-;25254:7;25283:5;25272:16;;25217:77;;;:::o;25300:86::-;25335:7;25375:4;25368:5;25364:16;25353:27;;25300:86;;;:::o;25392:121::-;25450:9;25483:24;25501:5;25483:24;:::i;:::-;25470:37;;25392:121;;;:::o;25519:307::-;25587:1;25597:113;25611:6;25608:1;25605:13;25597:113;;;25696:1;25691:3;25687:11;25681:18;25677:1;25672:3;25668:11;25661:39;25633:2;25630:1;25626:10;25621:15;;25597:113;;;25728:6;25725:1;25722:13;25719:101;;;25808:1;25799:6;25794:3;25790:16;25783:27;25719:101;25568:258;25519:307;;;:::o;25832:281::-;25915:27;25937:4;25915:27;:::i;:::-;25907:6;25903:40;26045:6;26033:10;26030:22;26009:18;25997:10;25994:34;25991:62;25988:88;;;26056:18;;:::i;:::-;25988:88;26096:10;26092:2;26085:22;25875:238;25832:281;;:::o;26119:233::-;26158:3;26181:24;26199:5;26181:24;:::i;:::-;26172:33;;26227:66;26220:5;26217:77;26214:103;;;26297:18;;:::i;:::-;26214:103;26344:1;26337:5;26333:13;26326:20;;26119:233;;;:::o;26358:180::-;26406:77;26403:1;26396:88;26503:4;26500:1;26493:15;26527:4;26524:1;26517:15;26544:180;26592:77;26589:1;26582:88;26689:4;26686:1;26679:15;26713:4;26710:1;26703:15;26730:180;26778:77;26775:1;26768:88;26875:4;26872:1;26865:15;26899:4;26896:1;26889:15;26916:180;26964:77;26961:1;26954:88;27061:4;27058:1;27051:15;27085:4;27082:1;27075:15;27102:117;27211:1;27208;27201:12;27225:117;27334:1;27331;27324:12;27348:117;27457:1;27454;27447:12;27471:117;27580:1;27577;27570:12;27594:102;27635:6;27686:2;27682:7;27677:2;27670:5;27666:14;27662:28;27652:38;;27594:102;;;:::o;27702:222::-;27842:34;27838:1;27830:6;27826:14;27819:58;27911:5;27906:2;27898:6;27894:15;27887:30;27702:222;:::o;27930:229::-;28070:34;28066:1;28058:6;28054:14;28047:58;28139:12;28134:2;28126:6;28122:15;28115:37;27930:229;:::o;28165:221::-;28305:34;28301:1;28293:6;28289:14;28282:58;28374:4;28369:2;28361:6;28357:15;28350:29;28165:221;:::o;28392:177::-;28532:29;28528:1;28520:6;28516:14;28509:53;28392:177;:::o;28575:220::-;28715:34;28711:1;28703:6;28699:14;28692:58;28784:3;28779:2;28771:6;28767:15;28760:28;28575:220;:::o;28801:182::-;28941:34;28937:1;28929:6;28925:14;28918:58;28801:182;:::o;28989:228::-;29129:34;29125:1;29117:6;29113:14;29106:58;29198:11;29193:2;29185:6;29181:15;29174:36;28989:228;:::o;29223:224::-;29363:34;29359:1;29351:6;29347:14;29340:58;29432:7;29427:2;29419:6;29415:15;29408:32;29223:224;:::o;29453:223::-;29593:34;29589:1;29581:6;29577:14;29570:58;29662:6;29657:2;29649:6;29645:15;29638:31;29453:223;:::o;29682:173::-;29822:25;29818:1;29810:6;29806:14;29799:49;29682:173;:::o;29861:122::-;29934:24;29952:5;29934:24;:::i;:::-;29927:5;29924:35;29914:63;;29973:1;29970;29963:12;29914:63;29861:122;:::o;29989:116::-;30059:21;30074:5;30059:21;:::i;:::-;30052:5;30049:32;30039:60;;30095:1;30092;30085:12;30039:60;29989:116;:::o;30111:122::-;30184:24;30202:5;30184:24;:::i;:::-;30177:5;30174:35;30164:63;;30223:1;30220;30213:12;30164:63;30111:122;:::o

Swarm Source

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