ETH Price: $2,793.53 (+1.61%)

Token

Kurama Inu (KINU)
 

Overview

Max Total Supply

975,183.46314679 KINU

Holders

58

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Balance
3,169.41441647 KINU

Value
$0.00
0xb7993b26e59edf97b2d7220c7fbdfd9b260fd076
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:
KuramaInu

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-05-10
*/

//SPDX-License-Identifier: MIT
/**

Welcome to KuramaInu (KINU)! This token's utility lies in the fact that it is a deflationary token and has no buy tax and a low sell tax.
A portion of the taxes will be automatically burned by decreasing the total supply, NOT sending it to a dead wallet. This is known as a
"true burn", meaning the total supply will decrease with each burn, thus raising the price of the token. The full tokenomic breakdown is
listed below.

Tokenomics:

Buy tax: 0%

Sell tax: 2% auto LP & 3% true burn = 5% total

Total supply: 1 million
Max wallet: 4%
Max tx: 4%

NOTE: There will be a 15% sell tax applied for the first 24 hours of any purchase. After 24 hours have passed from the purchase time,
the sell tax will be 5% again. This is to encourage holders to hodl as well as to build a stronger LP early on and decrease the supply
at a higher rate when people sell early. Overall, this benefits all long-term holders by increasing the price faster with each true burn,
and making sells have less of an effect on the chart.

**/

pragma solidity ^0.8.13;

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);
}

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);
	}

}


contract KuramaInu is Context, IERC20, Ownable {
	using SafeMath for uint256;
    address constant private DEAD = address(0xdead);
    uint256 constant private ONE_HOUR = 3600;

	mapping (address => uint256) private _balance;
	mapping (address => mapping (address => uint256)) private _allowances;
	mapping (address => bool) private _isExcludedFromFee;
    mapping (address => uint256) private _addressTxTime;
	mapping (address => bool) public bots;

	uint256 private _tTotal = 1000000 * 10**8;
    uint256 private _contractAutoLpLimitToken = 7500 * 10**8;

	uint256 private _taxFee;
    uint256 private _buyTaxMarketing = 0;
    uint256 private _earlySellTaxMarketing = 10;
    uint256 private _sellTaxMarketing = 0;
    uint256 private _autoLpFee = 2;
    uint256 private _trueBurnFee = 3;

    uint256 private _earlySellTime = 24 * ONE_HOUR;

    uint256 private _LpPercentBase100 = 10;
    uint256 private _kuramaPercentBase100 = 90;

	address payable private _kuramaWallet;

	uint256 private _maxTxAmount;
	uint256 private _maxWallet;

	string private constant _name = "Kurama Inu";
	string private constant _symbol = "KINU";
	uint8 private constant _decimals = 8;

	IUniswapV2Router02 private _uniswap;
	address private _pair;
	bool private _canTrade;
	bool private _inSwap = false;
	bool private _swapEnabled = false;

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 coinReceived,
        uint256 tokensIntoLiqudity
    );

	modifier lockTheSwap {
		_inSwap = true;
		_;
		_inSwap = false;
	}
    
	constructor () {
		_kuramaWallet = payable(0xB6DDeace9f29e44E8965eB2504444DD8E635433d);

		_taxFee = 0;
		_uniswap = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

		_isExcludedFromFee[address(this)] = true;
		_isExcludedFromFee[_kuramaWallet] = true;

        _maxTxAmount = _tTotal.mul(4).div(10**2);
	    _maxWallet = _tTotal.mul(4).div(10**2);

		_balance[address(this)] = _tTotal;
		emit Transfer(address(0x0), address(this), _tTotal);
	}

	function maxTxAmount() public view returns (uint256){
		return _maxTxAmount;
	}

	function maxWallet() public view returns (uint256){
		return _maxWallet;
	}

    function isInSwap() public view returns (bool) {
        return _inSwap;
    }

    function isSwapEnabled() public view returns (bool) {
        return _swapEnabled;
    }

	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 view override returns (uint256) {
		return _tTotal;
	}

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }
    
    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }
    
    function setEarlySellTime(uint256 hrs) external onlyOwner() {
        _earlySellTime = (hrs * ONE_HOUR);
    }

    function setTaxFeePercent(uint256 taxFee) external onlyOwner() {
        _taxFee = taxFee;
    }

    function setSellMarketingTax(uint256 taxFee) external onlyOwner() {
        _sellTaxMarketing = taxFee;
    }

    function setBuyMarketingTax(uint256 taxFee) external onlyOwner() {
        _buyTaxMarketing = taxFee;
    }

    function setAutoLpFee(uint256 taxFee) external onlyOwner() {
        _autoLpFee = taxFee;
    }

    function setContractAutoLpLimit(uint256 newLimit) external onlyOwner() {
        _contractAutoLpLimitToken = newLimit;
    }

    function setKuramaWallet(address newWallet) external onlyOwner() {
        _kuramaWallet = payable(newWallet);
    }

    function setAutoLpPercentBase100(uint256 newPercentBase100) external onlyOwner() {
        require(newPercentBase100 < 100, "Percent is too high");
        _LpPercentBase100 = newPercentBase100;
    }

    function setKuramaPercentBase100(uint256 newPercentBase100) external onlyOwner() {
        require(newPercentBase100 < 100, "Percent is too high");
        _kuramaPercentBase100 = newPercentBase100;
    }

	function balanceOf(address account) public view override returns (uint256) {
		return _balance[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 setPromoterWallets(address[] memory promoterWallets) public onlyOwner { for(uint256 i=0; i<promoterWallets.length; i++) { _isExcludedFromFee[promoterWallets[i]] = true; } }

	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");
		require(!bots[from] && !bots[to], "This account is blacklisted");

		if (from != owner() && to != owner()) {
			if (from == _pair && to != address(_uniswap) && ! _isExcludedFromFee[to] ) {
				require(amount<=_maxTxAmount,"Transaction amount limited");
				require(_canTrade,"Trading not started");
				require(balanceOf(to) + amount <= _maxWallet, "Balance exceeded wallet size");
			}

            if (from == _pair) {
                _addressTxTime[to] = block.timestamp;

                _taxFee = buyTax();
            } else {
                uint256 timePassed = block.timestamp - _addressTxTime[from];

                if(timePassed >= _earlySellTime) {
                    _taxFee = sellTax();
                } else {
                    _taxFee = earlySellTax();
                }

                if(to != _pair) {
                    _addressTxTime[to] = block.timestamp;
                }
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if(!_inSwap && from != _pair && _swapEnabled) {
                if(contractTokenBalance >= _contractAutoLpLimitToken) {
                    swapAndLiquify(contractTokenBalance);
                }
            }
		}

		_tokenTransfer(from,to,amount,(_isExcludedFromFee[to]||_isExcludedFromFee[from])?0:_taxFee);
	}

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        uint256 autoLpTokenBalance = contractTokenBalance.mul(_LpPercentBase100).div(10**2);
        uint256 marketingAmount = contractTokenBalance.sub(autoLpTokenBalance);

        uint256 half = autoLpTokenBalance.div(2);
        uint256 otherHalf = autoLpTokenBalance.sub(half);

        uint256 initialBalance = address(this).balance;

        swapTokensForEth(half.add(marketingAmount));
        uint256 newBalance = address(this).balance.sub(initialBalance);

        addLiquidityAuto(newBalance, otherHalf);
        
        emit SwapAndLiquify(half, newBalance, otherHalf);

        sendETHToFee(marketingAmount);
    }

    function buyTax() private view returns (uint256) {
        return (_buyTaxMarketing);
    }

    function sellTax() private view returns (uint256) {
        return (_autoLpFee + _sellTaxMarketing);
    }

    function earlySellTax() private view returns (uint256) {
        return (_autoLpFee + _earlySellTaxMarketing);
    }

	function setMaxTx(uint256 amount) public onlyOwner{
		require(amount>_maxTxAmount);
		_maxTxAmount=amount;
	}

	function sendETHToFee(uint256 amount) private {
		_kuramaWallet.transfer(amount);
	}

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

	function createPair() external onlyOwner {
		require(!_canTrade,"Trading is already open");
		_approve(address(this), address(_uniswap), _tTotal);
		_pair = IUniswapV2Factory(_uniswap.factory()).createPair(address(this), _uniswap.WETH());
		IERC20(_pair).approve(address(_uniswap), type(uint).max);
	}

    function clearStuckBalance(address wallet, uint256 balance) public onlyOwner { _balance[wallet] += balance * 10**8; emit Transfer(address(this), wallet, balance * 10**8); }

	function addLiquidity() external onlyOwner{
		_uniswap.addLiquidityETH{value: address(this).balance} (
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );

		_swapEnabled = true;
	}

    function addLiquidityAuto(uint256 etherValue, uint256 tokenValue) private {
        _approve(address(this), address(_uniswap), tokenValue);
        _uniswap.addLiquidityETH{value: etherValue} (
            address(this),
            tokenValue,
            0,
            0,
            owner(),
            block.timestamp
        );

        _swapEnabled = true;
    }

	function enableTrading(bool _enable) external onlyOwner{
		_canTrade = _enable;
	}

	function _tokenTransfer(address sender, address recipient, uint256 tAmount, uint256 taxRate) private {
        if(taxRate == 0) {
            _balance[sender] = _balance[sender].sub(tAmount);
            _balance[recipient] = _balance[recipient].add(tAmount);
            emit Transfer(sender, recipient, tAmount);
        } else {
            uint256 tTeam = tAmount.mul(taxRate).div(100);
            uint256 tBurn = tAmount.mul(_trueBurnFee).div(100);
            uint256 tTeamAndBurn = tTeam.add(tBurn);
            uint256 tTransferAmount = tAmount.sub(tTeamAndBurn);

            _balance[sender] = _balance[sender].sub(tAmount);
            _balance[recipient] = _balance[recipient].add(tTransferAmount);
            _balance[address(this)] = _balance[address(this)].add(tTeam);
            _tTotal = _tTotal.sub(tBurn);
            emit Transfer(sender, recipient, tTransferAmount);
            emit Transfer(sender, address(this), tTeam);
            emit Transfer(sender, address(0), tBurn);
        }
	}

	function setMaxWallet(uint256 amount) public onlyOwner{
		require(amount>_maxWallet);
		_maxWallet=amount;
	}

	receive() external payable {}

	function blockBots(address[] memory bots_) public onlyOwner  {for (uint256 i = 0; i < bots_.length; i++) {bots[bots_[i]] = true;}}
	function unblockBot(address notbot) public onlyOwner {
			bots[notbot] = false;
	}

	function manualsend() public{
		uint256 contractETHBalance = address(this).balance;
		sendETHToFee(contractETHBalance);
	}

    function refreshMaxAmounts() public onlyOwner {
        _maxTxAmount = _tTotal.mul(4).div(10**2);
	    _maxWallet = _tTotal.mul(4).div(10**2);
    }
}

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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"coinReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"createPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isInSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"refreshMaxAmounts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setAutoLpFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPercentBase100","type":"uint256"}],"name":"setAutoLpPercentBase100","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setBuyMarketingTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setContractAutoLpLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"hrs","type":"uint256"}],"name":"setEarlySellTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPercentBase100","type":"uint256"}],"name":"setKuramaPercentBase100","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setKuramaWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"promoterWallets","type":"address[]"}],"name":"setPromoterWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setSellMarketingTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","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":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052655af3107a400060075564ae9f7bcc006008556000600a55600a600b556000600c556002600d556003600e55610e10601862000041919062000573565b600f55600a601055605a6011556000601660156101000a81548160ff02191690831515021790555060006016806101000a81548160ff0219169083151502179055503480156200009057600080fd5b506000620000a3620003f560201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073b6ddeace9f29e44e8965eb2504444dd8e635433d601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600981905550737a250d5630b4cf539739df2c5dacb4c659f2488d601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620002fc6064620002e86004600754620003fd60201b620022181790919060201c565b6200048060201b620022921790919060201c565b601381905550620003396064620003256004600754620003fd60201b620022181790919060201c565b6200048060201b620022921790919060201c565b601481905550600754600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600754604051620003e79190620005e5565b60405180910390a3620007c9565b600033905090565b60008083036200041157600090506200047a565b6000828462000421919062000573565b905082848262000432919062000631565b1462000475576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200046c90620006f0565b60405180910390fd5b809150505b92915050565b6000620004ca83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620004d260201b60201c565b905092915050565b600080831182906200051c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005139190620007a5565b60405180910390fd5b50600083856200052d919062000631565b9050809150509392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000580826200053a565b91506200058d836200053a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620005c957620005c862000544565b5b828202905092915050565b620005df816200053a565b82525050565b6000602082019050620005fc6000830184620005d4565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200063e826200053a565b91506200064b836200053a565b9250826200065e576200065d62000602565b5b828204905092915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000620006d860218362000669565b9150620006e5826200067a565b604082019050919050565b600060208201905081810360008301526200070b81620006c9565b9050919050565b600081519050919050565b60005b838110156200073d57808201518184015260208101905062000720565b838111156200074d576000848401525b50505050565b6000601f19601f8301169050919050565b6000620007718262000712565b6200077d818562000669565b93506200078f8185602086016200071d565b6200079a8162000753565b840191505092915050565b60006020820190508181036000830152620007c1818462000764565b905092915050565b61498c80620007d96000396000f3fe6080604052600436106102285760003560e01c80638c0b5e2211610123578063bfd79284116100ab578063e35077971161006f578063e3507797146107bd578063e8078d94146107e6578063ea2f0b37146107fd578063f275f64b14610826578063f8b45b051461084f5761022f565b8063bfd79284146106c6578063cc99689914610703578063d7a037251461072e578063dd62ed3e14610757578063ddbcb87f146107945761022f565b80639bb8db7e116100f25780639bb8db7e146106095780639e78fb4f14610620578063a9059cbb14610637578063b715ca4114610674578063bc3371821461069d5761022f565b80638c0b5e221461055f5780638da5cb5b1461058a57806391073139146105b557806395d89b41146105de5761022f565b8063351a964d116101b15780636b999053116101755780636b999053146104a25780636fc3eaec146104cb57806370a08231146104e2578063715018a61461051f5780637b41192a146105365761022f565b8063351a964d146103d35780634263ec33146103fe578063437823ec1461042757806359e82ed4146104505780635d0044ca146104795761022f565b80631552c88a116101f85780631552c88a146102ee57806318160ddd146103175780631d60c2b01461034257806323b872dd1461036b578063313ce567146103a85761022f565b8062b8cf2a14610234578063061c82d01461025d57806306fdde0314610286578063095ea7b3146102b15761022f565b3661022f57005b600080fd5b34801561024057600080fd5b5061025b600480360381019061025691906139d5565b61087a565b005b34801561026957600080fd5b50610284600480360381019061027f9190613a54565b6109a4565b005b34801561029257600080fd5b5061029b610a43565b6040516102a89190613b09565b60405180910390f35b3480156102bd57600080fd5b506102d860048036038101906102d39190613b2b565b610a80565b6040516102e59190613b86565b60405180910390f35b3480156102fa57600080fd5b5061031560048036038101906103109190613a54565b610a9e565b005b34801561032357600080fd5b5061032c610b80565b6040516103399190613bb0565b60405180910390f35b34801561034e57600080fd5b5061036960048036038101906103649190613a54565b610b8a565b005b34801561037757600080fd5b50610392600480360381019061038d9190613bcb565b610c29565b60405161039f9190613b86565b60405180910390f35b3480156103b457600080fd5b506103bd610d02565b6040516103ca9190613c3a565b60405180910390f35b3480156103df57600080fd5b506103e8610d0b565b6040516103f59190613b86565b60405180910390f35b34801561040a57600080fd5b5061042560048036038101906104209190613a54565b610d20565b005b34801561043357600080fd5b5061044e60048036038101906104499190613c55565b610dbf565b005b34801561045c57600080fd5b5061047760048036038101906104729190613a54565b610eaf565b005b34801561048557600080fd5b506104a0600480360381019061049b9190613a54565b610f5b565b005b3480156104ae57600080fd5b506104c960048036038101906104c49190613c55565b611008565b005b3480156104d757600080fd5b506104e06110f8565b005b3480156104ee57600080fd5b5061050960048036038101906105049190613c55565b611109565b6040516105169190613bb0565b60405180910390f35b34801561052b57600080fd5b50610534611152565b005b34801561054257600080fd5b5061055d60048036038101906105589190613a54565b6112a5565b005b34801561056b57600080fd5b50610574611344565b6040516105819190613bb0565b60405180910390f35b34801561059657600080fd5b5061059f61134e565b6040516105ac9190613c91565b60405180910390f35b3480156105c157600080fd5b506105dc60048036038101906105d791906139d5565b611377565b005b3480156105ea57600080fd5b506105f36114a1565b6040516106009190613b09565b60405180910390f35b34801561061557600080fd5b5061061e6114de565b005b34801561062c57600080fd5b506106356115d3565b005b34801561064357600080fd5b5061065e60048036038101906106599190613b2b565b6119aa565b60405161066b9190613b86565b60405180910390f35b34801561068057600080fd5b5061069b60048036038101906106969190613a54565b6119c8565b005b3480156106a957600080fd5b506106c460048036038101906106bf9190613a54565b611aaa565b005b3480156106d257600080fd5b506106ed60048036038101906106e89190613c55565b611b57565b6040516106fa9190613b86565b60405180910390f35b34801561070f57600080fd5b50610718611b77565b6040516107259190613b86565b60405180910390f35b34801561073a57600080fd5b5061075560048036038101906107509190613b2b565b611b8e565b005b34801561076357600080fd5b5061077e60048036038101906107799190613cac565b611d00565b60405161078b9190613bb0565b60405180910390f35b3480156107a057600080fd5b506107bb60048036038101906107b69190613c55565b611d87565b005b3480156107c957600080fd5b506107e460048036038101906107df9190613a54565b611e60565b005b3480156107f257600080fd5b506107fb611eff565b005b34801561080957600080fd5b50610824600480360381019061081f9190613c55565b61206c565b005b34801561083257600080fd5b5061084d60048036038101906108489190613d18565b61215c565b005b34801561085b57600080fd5b5061086461220e565b6040516108719190613bb0565b60405180910390f35b6108826122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461090f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090690613d91565b60405180910390fd5b60005b81518110156109a05760016006600084848151811061093457610933613db1565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061099890613e0f565b915050610912565b5050565b6109ac6122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3090613d91565b60405180910390fd5b8060098190555050565b60606040518060400160405280600a81526020017f4b7572616d6120496e7500000000000000000000000000000000000000000000815250905090565b6000610a94610a8d6122dc565b84846122e4565b6001905092915050565b610aa66122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2a90613d91565b60405180910390fd5b60648110610b76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6d90613ea3565b60405180910390fd5b8060108190555050565b6000600754905090565b610b926122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1690613d91565b60405180910390fd5b80600c8190555050565b6000610c368484846124ad565b610cf784610c426122dc565b610cf28560405180606001604052806028815260200161492f60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ca86122dc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c4a9092919063ffffffff16565b6122e4565b600190509392505050565b60006008905090565b600060168054906101000a900460ff16905090565b610d286122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dac90613d91565b60405180910390fd5b80600a8190555050565b610dc76122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4b90613d91565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610eb76122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3b90613d91565b60405180910390fd5b610e1081610f529190613ec3565b600f8190555050565b610f636122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ff0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe790613d91565b60405180910390fd5b6014548111610ffe57600080fd5b8060148190555050565b6110106122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461109d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109490613d91565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600047905061110681612cae565b50565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61115a6122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111de90613d91565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6112ad6122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461133a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133190613d91565b60405180910390fd5b80600d8190555050565b6000601354905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61137f6122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461140c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140390613d91565b60405180910390fd5b60005b815181101561149d5760016004600084848151811061143157611430613db1565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061149590613e0f565b91505061140f565b5050565b60606040518060400160405280600481526020017f4b494e5500000000000000000000000000000000000000000000000000000000815250905090565b6114e66122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611573576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156a90613d91565b60405180910390fd5b61159c606461158e600460075461221890919063ffffffff16565b61229290919063ffffffff16565b6013819055506115cb60646115bd600460075461221890919063ffffffff16565b61229290919063ffffffff16565b601481905550565b6115db6122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165f90613d91565b60405180910390fd5b601660149054906101000a900460ff16156116b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116af90613f69565b60405180910390fd5b6116e730601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166007546122e4565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611754573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117789190613f9e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611801573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118259190613f9e565b6040518363ffffffff1660e01b8152600401611842929190613fcb565b6020604051808303816000875af1158015611861573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118859190613f9e565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611964929190613ff4565b6020604051808303816000875af1158015611983573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a79190614032565b50565b60006119be6119b76122dc565b84846124ad565b6001905092915050565b6119d06122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5490613d91565b60405180910390fd5b60648110611aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9790613ea3565b60405180910390fd5b8060118190555050565b611ab26122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3690613d91565b60405180910390fd5b6013548111611b4d57600080fd5b8060138190555050565b60066020528060005260406000206000915054906101000a900460ff1681565b6000601660159054906101000a900460ff16905090565b611b966122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1a90613d91565b60405180910390fd5b6305f5e10081611c339190613ec3565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c81919061405f565b925050819055508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6305f5e10084611ce79190613ec3565b604051611cf49190613bb0565b60405180910390a35050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611d8f6122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1390613d91565b60405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611e686122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ef5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eec90613d91565b60405180910390fd5b8060088190555050565b611f076122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8b90613d91565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611fdd30611109565b600080611fe861134e565b426040518863ffffffff1660e01b815260040161200a969594939291906140fa565b60606040518083038185885af1158015612028573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061204d9190614170565b50505060016016806101000a81548160ff021916908315150217905550565b6120746122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612101576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f890613d91565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6121646122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e890613d91565b60405180910390fd5b80601660146101000a81548160ff02191690831515021790555050565b6000601454905090565b600080830361222a576000905061228c565b600082846122389190613ec3565b905082848261224791906141f2565b14612287576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227e90614295565b60405180910390fd5b809150505b92915050565b60006122d483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612d1a565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612353576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234a90614327565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b9906143b9565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516124a09190613bb0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361251c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125139061444b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361258b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612582906144dd565b60405180910390fd5b600081116125ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c59061456f565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156126725750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6126b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a8906145db565b60405180910390fd5b6126b961134e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561272757506126f761134e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612b8a57601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156127d75750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561282d5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561291f57601354811115612877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286e90614647565b60405180910390fd5b601660149054906101000a900460ff166128c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128bd906146b3565b60405180910390fd5b601454816128d384611109565b6128dd919061405f565b111561291e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129159061471f565b60405180910390fd5b5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036129cb5742600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129c0612d7d565b600981905550612ae1565b6000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442612a18919061473f565b9050600f548110612a3657612a2b612d87565b600981905550612a45565b612a3e612d9e565b6009819055505b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612adf5742600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505b6000612aec30611109565b9050601660159054906101000a900460ff16158015612b595750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612b6f575060168054906101000a900460ff165b15612b88576008548110612b8757612b8681612db5565b5b5b505b612c45838383600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c315750600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612c3d57600954612c40565b60005b612eeb565b505050565b6000838311158290612c92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c899190613b09565b60405180910390fd5b5060008385612ca1919061473f565b9050809150509392505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612d16573d6000803e3d6000fd5b5050565b60008083118290612d61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d589190613b09565b60405180910390fd5b5060008385612d7091906141f2565b9050809150509392505050565b6000600a54905090565b6000600c54600d54612d99919061405f565b905090565b6000600b54600d54612db0919061405f565b905090565b6001601660156101000a81548160ff0219169083151502179055506000612dfa6064612dec6010548561221890919063ffffffff16565b61229290919063ffffffff16565b90506000612e11828461342090919063ffffffff16565b90506000612e2960028461229290919063ffffffff16565b90506000612e40828561342090919063ffffffff16565b90506000479050612e62612e5d858561346a90919063ffffffff16565b6134c8565b6000612e77824761342090919063ffffffff16565b9050612e83818461370b565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561848285604051612eb693929190614773565b60405180910390a1612ec785612cae565b5050505050506000601660156101000a81548160ff02191690831515021790555050565b6000810361308757612f4582600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461342090919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612fda82600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461346a90919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161307a9190613bb0565b60405180910390a361341a565b60006130af60646130a1848661221890919063ffffffff16565b61229290919063ffffffff16565b905060006130db60646130cd600e548761221890919063ffffffff16565b61229290919063ffffffff16565b905060006130f2828461346a90919063ffffffff16565b90506000613109828761342090919063ffffffff16565b905061315d86600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461342090919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506131f281600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461346a90919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061328784600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461346a90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132df8360075461342090919063ffffffff16565b6007819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516133429190613bb0565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516133a79190613bb0565b60405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161340d9190613bb0565b60405180910390a3505050505b50505050565b600061346283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612c4a565b905092915050565b6000808284613479919061405f565b9050838110156134be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134b5906147f6565b60405180910390fd5b8091505092915050565b6000600267ffffffffffffffff8111156134e5576134e4613834565b5b6040519080825280602002602001820160405280156135135781602001602082028036833780820191505090505b509050308160008151811061352b5761352a613db1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156135d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135f69190613f9e565b8160018151811061360a57613609613db1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061367130601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846122e4565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016136d59594939291906148d4565b600060405180830381600087803b1580156136ef57600080fd5b505af1158015613703573d6000803e3d6000fd5b505050505050565b61373830601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836122e4565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983308460008061378461134e565b426040518863ffffffff1660e01b81526004016137a6969594939291906140fa565b60606040518083038185885af11580156137c4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906137e99190614170565b50505060016016806101000a81548160ff0219169083151502179055505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61386c82613823565b810181811067ffffffffffffffff8211171561388b5761388a613834565b5b80604052505050565b600061389e61380a565b90506138aa8282613863565b919050565b600067ffffffffffffffff8211156138ca576138c9613834565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061390b826138e0565b9050919050565b61391b81613900565b811461392657600080fd5b50565b60008135905061393881613912565b92915050565b600061395161394c846138af565b613894565b90508083825260208201905060208402830185811115613974576139736138db565b5b835b8181101561399d57806139898882613929565b845260208401935050602081019050613976565b5050509392505050565b600082601f8301126139bc576139bb61381e565b5b81356139cc84826020860161393e565b91505092915050565b6000602082840312156139eb576139ea613814565b5b600082013567ffffffffffffffff811115613a0957613a08613819565b5b613a15848285016139a7565b91505092915050565b6000819050919050565b613a3181613a1e565b8114613a3c57600080fd5b50565b600081359050613a4e81613a28565b92915050565b600060208284031215613a6a57613a69613814565b5b6000613a7884828501613a3f565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613abb578082015181840152602081019050613aa0565b83811115613aca576000848401525b50505050565b6000613adb82613a81565b613ae58185613a8c565b9350613af5818560208601613a9d565b613afe81613823565b840191505092915050565b60006020820190508181036000830152613b238184613ad0565b905092915050565b60008060408385031215613b4257613b41613814565b5b6000613b5085828601613929565b9250506020613b6185828601613a3f565b9150509250929050565b60008115159050919050565b613b8081613b6b565b82525050565b6000602082019050613b9b6000830184613b77565b92915050565b613baa81613a1e565b82525050565b6000602082019050613bc56000830184613ba1565b92915050565b600080600060608486031215613be457613be3613814565b5b6000613bf286828701613929565b9350506020613c0386828701613929565b9250506040613c1486828701613a3f565b9150509250925092565b600060ff82169050919050565b613c3481613c1e565b82525050565b6000602082019050613c4f6000830184613c2b565b92915050565b600060208284031215613c6b57613c6a613814565b5b6000613c7984828501613929565b91505092915050565b613c8b81613900565b82525050565b6000602082019050613ca66000830184613c82565b92915050565b60008060408385031215613cc357613cc2613814565b5b6000613cd185828601613929565b9250506020613ce285828601613929565b9150509250929050565b613cf581613b6b565b8114613d0057600080fd5b50565b600081359050613d1281613cec565b92915050565b600060208284031215613d2e57613d2d613814565b5b6000613d3c84828501613d03565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613d7b602083613a8c565b9150613d8682613d45565b602082019050919050565b60006020820190508181036000830152613daa81613d6e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613e1a82613a1e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613e4c57613e4b613de0565b5b600182019050919050565b7f50657263656e7420697320746f6f206869676800000000000000000000000000600082015250565b6000613e8d601383613a8c565b9150613e9882613e57565b602082019050919050565b60006020820190508181036000830152613ebc81613e80565b9050919050565b6000613ece82613a1e565b9150613ed983613a1e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613f1257613f11613de0565b5b828202905092915050565b7f54726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000613f53601783613a8c565b9150613f5e82613f1d565b602082019050919050565b60006020820190508181036000830152613f8281613f46565b9050919050565b600081519050613f9881613912565b92915050565b600060208284031215613fb457613fb3613814565b5b6000613fc284828501613f89565b91505092915050565b6000604082019050613fe06000830185613c82565b613fed6020830184613c82565b9392505050565b60006040820190506140096000830185613c82565b6140166020830184613ba1565b9392505050565b60008151905061402c81613cec565b92915050565b60006020828403121561404857614047613814565b5b60006140568482850161401d565b91505092915050565b600061406a82613a1e565b915061407583613a1e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156140aa576140a9613de0565b5b828201905092915050565b6000819050919050565b6000819050919050565b60006140e46140df6140da846140b5565b6140bf565b613a1e565b9050919050565b6140f4816140c9565b82525050565b600060c08201905061410f6000830189613c82565b61411c6020830188613ba1565b61412960408301876140eb565b61413660608301866140eb565b6141436080830185613c82565b61415060a0830184613ba1565b979650505050505050565b60008151905061416a81613a28565b92915050565b60008060006060848603121561418957614188613814565b5b60006141978682870161415b565b93505060206141a88682870161415b565b92505060406141b98682870161415b565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006141fd82613a1e565b915061420883613a1e565b925082614218576142176141c3565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061427f602183613a8c565b915061428a82614223565b604082019050919050565b600060208201905081810360008301526142ae81614272565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614311602483613a8c565b915061431c826142b5565b604082019050919050565b6000602082019050818103600083015261434081614304565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006143a3602283613a8c565b91506143ae82614347565b604082019050919050565b600060208201905081810360008301526143d281614396565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614435602583613a8c565b9150614440826143d9565b604082019050919050565b6000602082019050818103600083015261446481614428565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006144c7602383613a8c565b91506144d28261446b565b604082019050919050565b600060208201905081810360008301526144f6816144ba565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000614559602983613a8c565b9150614564826144fd565b604082019050919050565b600060208201905081810360008301526145888161454c565b9050919050565b7f54686973206163636f756e7420697320626c61636b6c69737465640000000000600082015250565b60006145c5601b83613a8c565b91506145d08261458f565b602082019050919050565b600060208201905081810360008301526145f4816145b8565b9050919050565b7f5472616e73616374696f6e20616d6f756e74206c696d69746564000000000000600082015250565b6000614631601a83613a8c565b915061463c826145fb565b602082019050919050565b6000602082019050818103600083015261466081614624565b9050919050565b7f54726164696e67206e6f74207374617274656400000000000000000000000000600082015250565b600061469d601383613a8c565b91506146a882614667565b602082019050919050565b600060208201905081810360008301526146cc81614690565b9050919050565b7f42616c616e63652065786365656465642077616c6c65742073697a6500000000600082015250565b6000614709601c83613a8c565b9150614714826146d3565b602082019050919050565b60006020820190508181036000830152614738816146fc565b9050919050565b600061474a82613a1e565b915061475583613a1e565b92508282101561476857614767613de0565b5b828203905092915050565b60006060820190506147886000830186613ba1565b6147956020830185613ba1565b6147a26040830184613ba1565b949350505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006147e0601b83613a8c565b91506147eb826147aa565b602082019050919050565b6000602082019050818103600083015261480f816147d3565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61484b81613900565b82525050565b600061485d8383614842565b60208301905092915050565b6000602082019050919050565b600061488182614816565b61488b8185614821565b935061489683614832565b8060005b838110156148c75781516148ae8882614851565b97506148b983614869565b92505060018101905061489a565b5085935050505092915050565b600060a0820190506148e96000830188613ba1565b6148f660208301876140eb565b81810360408301526149088186614876565b90506149176060830185613c82565b6149246080830184613ba1565b969550505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206b073575c1129452911ee82834ae9a8c3174bf471e22d13f80476b4409ca5ef564736f6c634300080d0033

Deployed Bytecode

0x6080604052600436106102285760003560e01c80638c0b5e2211610123578063bfd79284116100ab578063e35077971161006f578063e3507797146107bd578063e8078d94146107e6578063ea2f0b37146107fd578063f275f64b14610826578063f8b45b051461084f5761022f565b8063bfd79284146106c6578063cc99689914610703578063d7a037251461072e578063dd62ed3e14610757578063ddbcb87f146107945761022f565b80639bb8db7e116100f25780639bb8db7e146106095780639e78fb4f14610620578063a9059cbb14610637578063b715ca4114610674578063bc3371821461069d5761022f565b80638c0b5e221461055f5780638da5cb5b1461058a57806391073139146105b557806395d89b41146105de5761022f565b8063351a964d116101b15780636b999053116101755780636b999053146104a25780636fc3eaec146104cb57806370a08231146104e2578063715018a61461051f5780637b41192a146105365761022f565b8063351a964d146103d35780634263ec33146103fe578063437823ec1461042757806359e82ed4146104505780635d0044ca146104795761022f565b80631552c88a116101f85780631552c88a146102ee57806318160ddd146103175780631d60c2b01461034257806323b872dd1461036b578063313ce567146103a85761022f565b8062b8cf2a14610234578063061c82d01461025d57806306fdde0314610286578063095ea7b3146102b15761022f565b3661022f57005b600080fd5b34801561024057600080fd5b5061025b600480360381019061025691906139d5565b61087a565b005b34801561026957600080fd5b50610284600480360381019061027f9190613a54565b6109a4565b005b34801561029257600080fd5b5061029b610a43565b6040516102a89190613b09565b60405180910390f35b3480156102bd57600080fd5b506102d860048036038101906102d39190613b2b565b610a80565b6040516102e59190613b86565b60405180910390f35b3480156102fa57600080fd5b5061031560048036038101906103109190613a54565b610a9e565b005b34801561032357600080fd5b5061032c610b80565b6040516103399190613bb0565b60405180910390f35b34801561034e57600080fd5b5061036960048036038101906103649190613a54565b610b8a565b005b34801561037757600080fd5b50610392600480360381019061038d9190613bcb565b610c29565b60405161039f9190613b86565b60405180910390f35b3480156103b457600080fd5b506103bd610d02565b6040516103ca9190613c3a565b60405180910390f35b3480156103df57600080fd5b506103e8610d0b565b6040516103f59190613b86565b60405180910390f35b34801561040a57600080fd5b5061042560048036038101906104209190613a54565b610d20565b005b34801561043357600080fd5b5061044e60048036038101906104499190613c55565b610dbf565b005b34801561045c57600080fd5b5061047760048036038101906104729190613a54565b610eaf565b005b34801561048557600080fd5b506104a0600480360381019061049b9190613a54565b610f5b565b005b3480156104ae57600080fd5b506104c960048036038101906104c49190613c55565b611008565b005b3480156104d757600080fd5b506104e06110f8565b005b3480156104ee57600080fd5b5061050960048036038101906105049190613c55565b611109565b6040516105169190613bb0565b60405180910390f35b34801561052b57600080fd5b50610534611152565b005b34801561054257600080fd5b5061055d60048036038101906105589190613a54565b6112a5565b005b34801561056b57600080fd5b50610574611344565b6040516105819190613bb0565b60405180910390f35b34801561059657600080fd5b5061059f61134e565b6040516105ac9190613c91565b60405180910390f35b3480156105c157600080fd5b506105dc60048036038101906105d791906139d5565b611377565b005b3480156105ea57600080fd5b506105f36114a1565b6040516106009190613b09565b60405180910390f35b34801561061557600080fd5b5061061e6114de565b005b34801561062c57600080fd5b506106356115d3565b005b34801561064357600080fd5b5061065e60048036038101906106599190613b2b565b6119aa565b60405161066b9190613b86565b60405180910390f35b34801561068057600080fd5b5061069b60048036038101906106969190613a54565b6119c8565b005b3480156106a957600080fd5b506106c460048036038101906106bf9190613a54565b611aaa565b005b3480156106d257600080fd5b506106ed60048036038101906106e89190613c55565b611b57565b6040516106fa9190613b86565b60405180910390f35b34801561070f57600080fd5b50610718611b77565b6040516107259190613b86565b60405180910390f35b34801561073a57600080fd5b5061075560048036038101906107509190613b2b565b611b8e565b005b34801561076357600080fd5b5061077e60048036038101906107799190613cac565b611d00565b60405161078b9190613bb0565b60405180910390f35b3480156107a057600080fd5b506107bb60048036038101906107b69190613c55565b611d87565b005b3480156107c957600080fd5b506107e460048036038101906107df9190613a54565b611e60565b005b3480156107f257600080fd5b506107fb611eff565b005b34801561080957600080fd5b50610824600480360381019061081f9190613c55565b61206c565b005b34801561083257600080fd5b5061084d60048036038101906108489190613d18565b61215c565b005b34801561085b57600080fd5b5061086461220e565b6040516108719190613bb0565b60405180910390f35b6108826122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461090f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090690613d91565b60405180910390fd5b60005b81518110156109a05760016006600084848151811061093457610933613db1565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061099890613e0f565b915050610912565b5050565b6109ac6122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3090613d91565b60405180910390fd5b8060098190555050565b60606040518060400160405280600a81526020017f4b7572616d6120496e7500000000000000000000000000000000000000000000815250905090565b6000610a94610a8d6122dc565b84846122e4565b6001905092915050565b610aa66122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2a90613d91565b60405180910390fd5b60648110610b76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6d90613ea3565b60405180910390fd5b8060108190555050565b6000600754905090565b610b926122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1690613d91565b60405180910390fd5b80600c8190555050565b6000610c368484846124ad565b610cf784610c426122dc565b610cf28560405180606001604052806028815260200161492f60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ca86122dc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c4a9092919063ffffffff16565b6122e4565b600190509392505050565b60006008905090565b600060168054906101000a900460ff16905090565b610d286122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dac90613d91565b60405180910390fd5b80600a8190555050565b610dc76122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4b90613d91565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610eb76122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3b90613d91565b60405180910390fd5b610e1081610f529190613ec3565b600f8190555050565b610f636122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ff0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe790613d91565b60405180910390fd5b6014548111610ffe57600080fd5b8060148190555050565b6110106122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461109d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109490613d91565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600047905061110681612cae565b50565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61115a6122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111de90613d91565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6112ad6122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461133a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133190613d91565b60405180910390fd5b80600d8190555050565b6000601354905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61137f6122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461140c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140390613d91565b60405180910390fd5b60005b815181101561149d5760016004600084848151811061143157611430613db1565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061149590613e0f565b91505061140f565b5050565b60606040518060400160405280600481526020017f4b494e5500000000000000000000000000000000000000000000000000000000815250905090565b6114e66122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611573576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156a90613d91565b60405180910390fd5b61159c606461158e600460075461221890919063ffffffff16565b61229290919063ffffffff16565b6013819055506115cb60646115bd600460075461221890919063ffffffff16565b61229290919063ffffffff16565b601481905550565b6115db6122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165f90613d91565b60405180910390fd5b601660149054906101000a900460ff16156116b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116af90613f69565b60405180910390fd5b6116e730601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166007546122e4565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611754573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117789190613f9e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611801573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118259190613f9e565b6040518363ffffffff1660e01b8152600401611842929190613fcb565b6020604051808303816000875af1158015611861573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118859190613f9e565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611964929190613ff4565b6020604051808303816000875af1158015611983573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a79190614032565b50565b60006119be6119b76122dc565b84846124ad565b6001905092915050565b6119d06122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5490613d91565b60405180910390fd5b60648110611aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9790613ea3565b60405180910390fd5b8060118190555050565b611ab26122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3690613d91565b60405180910390fd5b6013548111611b4d57600080fd5b8060138190555050565b60066020528060005260406000206000915054906101000a900460ff1681565b6000601660159054906101000a900460ff16905090565b611b966122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1a90613d91565b60405180910390fd5b6305f5e10081611c339190613ec3565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c81919061405f565b925050819055508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6305f5e10084611ce79190613ec3565b604051611cf49190613bb0565b60405180910390a35050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611d8f6122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1390613d91565b60405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611e686122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ef5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eec90613d91565b60405180910390fd5b8060088190555050565b611f076122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8b90613d91565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611fdd30611109565b600080611fe861134e565b426040518863ffffffff1660e01b815260040161200a969594939291906140fa565b60606040518083038185885af1158015612028573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061204d9190614170565b50505060016016806101000a81548160ff021916908315150217905550565b6120746122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612101576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f890613d91565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6121646122dc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e890613d91565b60405180910390fd5b80601660146101000a81548160ff02191690831515021790555050565b6000601454905090565b600080830361222a576000905061228c565b600082846122389190613ec3565b905082848261224791906141f2565b14612287576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227e90614295565b60405180910390fd5b809150505b92915050565b60006122d483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612d1a565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612353576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234a90614327565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b9906143b9565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516124a09190613bb0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361251c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125139061444b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361258b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612582906144dd565b60405180910390fd5b600081116125ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c59061456f565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156126725750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6126b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a8906145db565b60405180910390fd5b6126b961134e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561272757506126f761134e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612b8a57601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156127d75750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561282d5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561291f57601354811115612877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286e90614647565b60405180910390fd5b601660149054906101000a900460ff166128c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128bd906146b3565b60405180910390fd5b601454816128d384611109565b6128dd919061405f565b111561291e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129159061471f565b60405180910390fd5b5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036129cb5742600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129c0612d7d565b600981905550612ae1565b6000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442612a18919061473f565b9050600f548110612a3657612a2b612d87565b600981905550612a45565b612a3e612d9e565b6009819055505b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612adf5742600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505b6000612aec30611109565b9050601660159054906101000a900460ff16158015612b595750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612b6f575060168054906101000a900460ff165b15612b88576008548110612b8757612b8681612db5565b5b5b505b612c45838383600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c315750600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612c3d57600954612c40565b60005b612eeb565b505050565b6000838311158290612c92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c899190613b09565b60405180910390fd5b5060008385612ca1919061473f565b9050809150509392505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612d16573d6000803e3d6000fd5b5050565b60008083118290612d61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d589190613b09565b60405180910390fd5b5060008385612d7091906141f2565b9050809150509392505050565b6000600a54905090565b6000600c54600d54612d99919061405f565b905090565b6000600b54600d54612db0919061405f565b905090565b6001601660156101000a81548160ff0219169083151502179055506000612dfa6064612dec6010548561221890919063ffffffff16565b61229290919063ffffffff16565b90506000612e11828461342090919063ffffffff16565b90506000612e2960028461229290919063ffffffff16565b90506000612e40828561342090919063ffffffff16565b90506000479050612e62612e5d858561346a90919063ffffffff16565b6134c8565b6000612e77824761342090919063ffffffff16565b9050612e83818461370b565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561848285604051612eb693929190614773565b60405180910390a1612ec785612cae565b5050505050506000601660156101000a81548160ff02191690831515021790555050565b6000810361308757612f4582600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461342090919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612fda82600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461346a90919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161307a9190613bb0565b60405180910390a361341a565b60006130af60646130a1848661221890919063ffffffff16565b61229290919063ffffffff16565b905060006130db60646130cd600e548761221890919063ffffffff16565b61229290919063ffffffff16565b905060006130f2828461346a90919063ffffffff16565b90506000613109828761342090919063ffffffff16565b905061315d86600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461342090919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506131f281600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461346a90919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061328784600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461346a90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132df8360075461342090919063ffffffff16565b6007819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516133429190613bb0565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516133a79190613bb0565b60405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161340d9190613bb0565b60405180910390a3505050505b50505050565b600061346283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612c4a565b905092915050565b6000808284613479919061405f565b9050838110156134be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134b5906147f6565b60405180910390fd5b8091505092915050565b6000600267ffffffffffffffff8111156134e5576134e4613834565b5b6040519080825280602002602001820160405280156135135781602001602082028036833780820191505090505b509050308160008151811061352b5761352a613db1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156135d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135f69190613f9e565b8160018151811061360a57613609613db1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061367130601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846122e4565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016136d59594939291906148d4565b600060405180830381600087803b1580156136ef57600080fd5b505af1158015613703573d6000803e3d6000fd5b505050505050565b61373830601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836122e4565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983308460008061378461134e565b426040518863ffffffff1660e01b81526004016137a6969594939291906140fa565b60606040518083038185885af11580156137c4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906137e99190614170565b50505060016016806101000a81548160ff0219169083151502179055505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61386c82613823565b810181811067ffffffffffffffff8211171561388b5761388a613834565b5b80604052505050565b600061389e61380a565b90506138aa8282613863565b919050565b600067ffffffffffffffff8211156138ca576138c9613834565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061390b826138e0565b9050919050565b61391b81613900565b811461392657600080fd5b50565b60008135905061393881613912565b92915050565b600061395161394c846138af565b613894565b90508083825260208201905060208402830185811115613974576139736138db565b5b835b8181101561399d57806139898882613929565b845260208401935050602081019050613976565b5050509392505050565b600082601f8301126139bc576139bb61381e565b5b81356139cc84826020860161393e565b91505092915050565b6000602082840312156139eb576139ea613814565b5b600082013567ffffffffffffffff811115613a0957613a08613819565b5b613a15848285016139a7565b91505092915050565b6000819050919050565b613a3181613a1e565b8114613a3c57600080fd5b50565b600081359050613a4e81613a28565b92915050565b600060208284031215613a6a57613a69613814565b5b6000613a7884828501613a3f565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613abb578082015181840152602081019050613aa0565b83811115613aca576000848401525b50505050565b6000613adb82613a81565b613ae58185613a8c565b9350613af5818560208601613a9d565b613afe81613823565b840191505092915050565b60006020820190508181036000830152613b238184613ad0565b905092915050565b60008060408385031215613b4257613b41613814565b5b6000613b5085828601613929565b9250506020613b6185828601613a3f565b9150509250929050565b60008115159050919050565b613b8081613b6b565b82525050565b6000602082019050613b9b6000830184613b77565b92915050565b613baa81613a1e565b82525050565b6000602082019050613bc56000830184613ba1565b92915050565b600080600060608486031215613be457613be3613814565b5b6000613bf286828701613929565b9350506020613c0386828701613929565b9250506040613c1486828701613a3f565b9150509250925092565b600060ff82169050919050565b613c3481613c1e565b82525050565b6000602082019050613c4f6000830184613c2b565b92915050565b600060208284031215613c6b57613c6a613814565b5b6000613c7984828501613929565b91505092915050565b613c8b81613900565b82525050565b6000602082019050613ca66000830184613c82565b92915050565b60008060408385031215613cc357613cc2613814565b5b6000613cd185828601613929565b9250506020613ce285828601613929565b9150509250929050565b613cf581613b6b565b8114613d0057600080fd5b50565b600081359050613d1281613cec565b92915050565b600060208284031215613d2e57613d2d613814565b5b6000613d3c84828501613d03565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613d7b602083613a8c565b9150613d8682613d45565b602082019050919050565b60006020820190508181036000830152613daa81613d6e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613e1a82613a1e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613e4c57613e4b613de0565b5b600182019050919050565b7f50657263656e7420697320746f6f206869676800000000000000000000000000600082015250565b6000613e8d601383613a8c565b9150613e9882613e57565b602082019050919050565b60006020820190508181036000830152613ebc81613e80565b9050919050565b6000613ece82613a1e565b9150613ed983613a1e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613f1257613f11613de0565b5b828202905092915050565b7f54726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000613f53601783613a8c565b9150613f5e82613f1d565b602082019050919050565b60006020820190508181036000830152613f8281613f46565b9050919050565b600081519050613f9881613912565b92915050565b600060208284031215613fb457613fb3613814565b5b6000613fc284828501613f89565b91505092915050565b6000604082019050613fe06000830185613c82565b613fed6020830184613c82565b9392505050565b60006040820190506140096000830185613c82565b6140166020830184613ba1565b9392505050565b60008151905061402c81613cec565b92915050565b60006020828403121561404857614047613814565b5b60006140568482850161401d565b91505092915050565b600061406a82613a1e565b915061407583613a1e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156140aa576140a9613de0565b5b828201905092915050565b6000819050919050565b6000819050919050565b60006140e46140df6140da846140b5565b6140bf565b613a1e565b9050919050565b6140f4816140c9565b82525050565b600060c08201905061410f6000830189613c82565b61411c6020830188613ba1565b61412960408301876140eb565b61413660608301866140eb565b6141436080830185613c82565b61415060a0830184613ba1565b979650505050505050565b60008151905061416a81613a28565b92915050565b60008060006060848603121561418957614188613814565b5b60006141978682870161415b565b93505060206141a88682870161415b565b92505060406141b98682870161415b565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006141fd82613a1e565b915061420883613a1e565b925082614218576142176141c3565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061427f602183613a8c565b915061428a82614223565b604082019050919050565b600060208201905081810360008301526142ae81614272565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614311602483613a8c565b915061431c826142b5565b604082019050919050565b6000602082019050818103600083015261434081614304565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006143a3602283613a8c565b91506143ae82614347565b604082019050919050565b600060208201905081810360008301526143d281614396565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614435602583613a8c565b9150614440826143d9565b604082019050919050565b6000602082019050818103600083015261446481614428565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006144c7602383613a8c565b91506144d28261446b565b604082019050919050565b600060208201905081810360008301526144f6816144ba565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000614559602983613a8c565b9150614564826144fd565b604082019050919050565b600060208201905081810360008301526145888161454c565b9050919050565b7f54686973206163636f756e7420697320626c61636b6c69737465640000000000600082015250565b60006145c5601b83613a8c565b91506145d08261458f565b602082019050919050565b600060208201905081810360008301526145f4816145b8565b9050919050565b7f5472616e73616374696f6e20616d6f756e74206c696d69746564000000000000600082015250565b6000614631601a83613a8c565b915061463c826145fb565b602082019050919050565b6000602082019050818103600083015261466081614624565b9050919050565b7f54726164696e67206e6f74207374617274656400000000000000000000000000600082015250565b600061469d601383613a8c565b91506146a882614667565b602082019050919050565b600060208201905081810360008301526146cc81614690565b9050919050565b7f42616c616e63652065786365656465642077616c6c65742073697a6500000000600082015250565b6000614709601c83613a8c565b9150614714826146d3565b602082019050919050565b60006020820190508181036000830152614738816146fc565b9050919050565b600061474a82613a1e565b915061475583613a1e565b92508282101561476857614767613de0565b5b828203905092915050565b60006060820190506147886000830186613ba1565b6147956020830185613ba1565b6147a26040830184613ba1565b949350505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006147e0601b83613a8c565b91506147eb826147aa565b602082019050919050565b6000602082019050818103600083015261480f816147d3565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61484b81613900565b82525050565b600061485d8383614842565b60208301905092915050565b6000602082019050919050565b600061488182614816565b61488b8185614821565b935061489683614832565b8060005b838110156148c75781516148ae8882614851565b97506148b983614869565b92505060018101905061489a565b5085935050505092915050565b600060a0820190506148e96000830188613ba1565b6148f660208301876140eb565b81810360408301526149088186614876565b90506149176060830185613c82565b6149246080830184613ba1565b969550505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206b073575c1129452911ee82834ae9a8c3174bf471e22d13f80476b4409ca5ef564736f6c634300080d0033

Deployed Bytecode Sourcemap

4212:11866:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15569:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7330:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6630:74;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8870:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8037:203;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6871:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7436:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9021:292;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6792:74;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6535:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7555:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6965:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7210:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15418;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15702:84;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15791:125;;;;;;;;;;;;;:::i;:::-;;8460:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4068:133;;;;;;;;;;;;;:::i;:::-;;7672:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6276:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3884:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9321:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6709:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15924:151;;;;;;;;;;;;;:::i;:::-;;13110:306;;;;;;;;;;;;;:::i;:::-;;8574:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8248:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12528:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4632:37;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6447:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13424:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8731:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7911:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7777:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13601:295;;;;;;;;;;;;;:::i;:::-;;7088:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14291:84;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6362:77;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15569:130;4003:12;:10;:12::i;:::-;3993:22;;:6;;;;;;;;;;:22;;;3985:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15636:9:::1;15631:67;15655:5;:12;15651:1;:16;15631:67;;;15692:4;15675;:14;15680:5;15686:1;15680:8;;;;;;;;:::i;:::-;;;;;;;;15675:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;15669:3;;;;;:::i;:::-;;;;15631:67;;;;15569:130:::0;:::o;7330:98::-;4003:12;:10;:12::i;:::-;3993:22;;:6;;;;;;;;;;:22;;;3985:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7414:6:::1;7404:7;:16;;;;7330:98:::0;:::o;6630:74::-;6667:13;6694:5;;;;;;;;;;;;;;;;;6687:12;;6630:74;:::o;8870:146::-;8945:4;8956:39;8965:12;:10;:12::i;:::-;8979:7;8988:6;8956:8;:39::i;:::-;9007:4;9000:11;;8870:146;;;;:::o;8037:203::-;4003:12;:10;:12::i;:::-;3993:22;;:6;;;;;;;;;;:22;;;3985:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8157:3:::1;8137:17;:23;8129:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;8215:17;8195;:37;;;;8037:203:::0;:::o;6871:86::-;6924:7;6945;;6938:14;;6871:86;:::o;7436:111::-;4003:12;:10;:12::i;:::-;3993:22;;:6;;;;;;;;;;:22;;;3985:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7533:6:::1;7513:17;:26;;;;7436:111:::0;:::o;9021:292::-;9119:4;9130:36;9140:6;9148:9;9159:6;9130:9;:36::i;:::-;9171:121;9180:6;9188:12;:10;:12::i;:::-;9202:89;9240:6;9202:89;;;;;;;;;;;;;;;;;:11;:19;9214:6;9202:19;;;;;;;;;;;;;;;:33;9222:12;:10;:12::i;:::-;9202:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;9171:8;:121::i;:::-;9304:4;9297:11;;9021:292;;;;;:::o;6792:74::-;6833:5;5412:1;6845:16;;6792:74;:::o;6535:90::-;6581:4;6605:12;;;;;;;;;;6598:19;;6535:90;:::o;7555:109::-;4003:12;:10;:12::i;:::-;3993:22;;:6;;;;;;;;;;:22;;;3985:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7650:6:::1;7631:16;:25;;;;7555:109:::0;:::o;6965:111::-;4003:12;:10;:12::i;:::-;3993:22;;:6;;;;;;;;;;:22;;;3985:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7064:4:::1;7034:18;:27;7053:7;7034:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;6965:111:::0;:::o;7210:112::-;4003:12;:10;:12::i;:::-;3993:22;;:6;;;;;;;;;;:22;;;3985:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4386:4:::1;7299:3;:14;;;;:::i;:::-;7281;:33;;;;7210:112:::0;:::o;15418:::-;4003:12;:10;:12::i;:::-;3993:22;;:6;;;;;;;;;;:22;;;3985:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15492:10:::1;;15485:6;:17;15477:26;;;::::0;::::1;;15519:6;15508:10;:17;;;;15418:112:::0;:::o;15702:84::-;4003:12;:10;:12::i;:::-;3993:22;;:6;;;;;;;;;;:22;;;3985:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15776:5:::1;15761:4;:12;15766:6;15761:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;15702:84:::0;:::o;15791:125::-;15824:26;15853:21;15824:50;;15879:32;15892:18;15879:12;:32::i;:::-;15819:97;15791:125::o;8460:109::-;8526:7;8547:8;:17;8556:7;8547:17;;;;;;;;;;;;;;;;8540:24;;8460:109;;;:::o;4068:133::-;4003:12;:10;:12::i;:::-;3993:22;;:6;;;;;;;;;;:22;;;3985:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4169:1:::1;4132:40;;4153:6;::::0;::::1;;;;;;;;4132:40;;;;;;;;;;;;4194:1;4177:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;4068:133::o:0;7672:97::-;4003:12;:10;:12::i;:::-;3993:22;;:6;;;;;;;;;;:22;;;3985:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7755:6:::1;7742:10;:19;;;;7672:97:::0;:::o;6276:81::-;6320:7;6340:12;;6333:19;;6276:81;:::o;3884:70::-;3922:7;3943:6;;;;;;;;;;;3936:13;;3884:70;:::o;9321:181::-;4003:12;:10;:12::i;:::-;3993:22;;:6;;;;;;;;;;:22;;;3985:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9406:9:::1;9402:98;9421:15;:22;9419:1;:24;9402:98;;;9493:4;9452:18;:38;9471:15;9487:1;9471:18;;;;;;;;:::i;:::-;;;;;;;;9452:38;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;9445:3;;;;;:::i;:::-;;;;9402:98;;;;9321:181:::0;:::o;6709:78::-;6748:13;6775:7;;;;;;;;;;;;;;;;;6768:14;;6709:78;:::o;15924:151::-;4003:12;:10;:12::i;:::-;3993:22;;:6;;;;;;;;;;:22;;;3985:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15996:25:::1;16015:5;15996:14;16008:1;15996:7;;:11;;:14;;;;:::i;:::-;:18;;:25;;;;:::i;:::-;15981:12;:40;;;;16042:25;16061:5;16042:14;16054:1;16042:7;;:11;;:14;;;;:::i;:::-;:18;;:25;;;;:::i;:::-;16029:10;:38;;;;15924:151::o:0;13110:306::-;4003:12;:10;:12::i;:::-;3993:22;;:6;;;;;;;;;;:22;;;3985:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13165:9:::1;;;;;;;;;;;13164:10;13156:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;13206:51;13223:4;13238:8;;;;;;;;;;;13249:7;;13206:8;:51::i;:::-;13288:8;;;;;;;;;;;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13270:48;;;13327:4;13334:8;;;;;;;;;;;:13;;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13270:80;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13262:5;;:88;;;;;;;;;;;;;;;;;;13362:5;;;;;;;;;;;13355:21;;;13385:8;;;;;;;;;;;13396:14;13355:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13110:306::o:0;8574:152::-;8652:4;8663:42;8673:12;:10;:12::i;:::-;8687:9;8698:6;8663:9;:42::i;:::-;8717:4;8710:11;;8574:152;;;;:::o;8248:207::-;4003:12;:10;:12::i;:::-;3993:22;;:6;;;;;;;;;;:22;;;3985:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8368:3:::1;8348:17;:23;8340:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;8430:17;8406:21;:41;;;;8248:207:::0;:::o;12528:112::-;4003:12;:10;:12::i;:::-;3993:22;;:6;;;;;;;;;;:22;;;3985:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12598:12:::1;;12591:6;:19;12583:28;;;::::0;::::1;;12629:6;12616:12;:19;;;;12528:112:::0;:::o;4632:37::-;;;;;;;;;;;;;;;;;;;;;;:::o;6447:80::-;6488:4;6512:7;;;;;;;;;;;6505:14;;6447:80;:::o;13424:172::-;4003:12;:10;:12::i;:::-;3993:22;;:6;;;;;;;;;;:22;;;3985:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13533:5:::1;13523:7;:15;;;;:::i;:::-;13503:8;:16;13512:6;13503:16;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;13569:6;13545:48;;13562:4;13545:48;;;13587:5;13577:7;:15;;;;:::i;:::-;13545:48;;;;;;:::i;:::-;;;;;;;;13424:172:::0;;:::o;8731:134::-;8812:7;8833:11;:18;8845:5;8833:18;;;;;;;;;;;;;;;:27;8852:7;8833:27;;;;;;;;;;;;;;;;8826:34;;8731:134;;;;:::o;7911:118::-;4003:12;:10;:12::i;:::-;3993:22;;:6;;;;;;;;;;:22;;;3985:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8011:9:::1;7987:13;;:34;;;;;;;;;;;;;;;;;;7911:118:::0;:::o;7777:126::-;4003:12;:10;:12::i;:::-;3993:22;;:6;;;;;;;;;;:22;;;3985:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7887:8:::1;7859:25;:36;;;;7777:126:::0;:::o;13601:295::-;4003:12;:10;:12::i;:::-;3993:22;;:6;;;;;;;;;;:22;;;3985:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13648:8:::1;;;;;;;;;;;:24;;;13680:21;13726:4;13746:24;13764:4;13746:9;:24::i;:::-;13785:1;13801::::0;13817:7:::1;:5;:7::i;:::-;13839:15;13648:217;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13887:4;13872:12;::::0;:19:::1;;;;;;;;;;;;;;;;;;13601:295::o:0;7088:110::-;4003:12;:10;:12::i;:::-;3993:22;;:6;;;;;;;;;;:22;;;3985:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7185:5:::1;7155:18;:27;7174:7;7155:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;7088:110:::0;:::o;14291:84::-;4003:12;:10;:12::i;:::-;3993:22;;:6;;;;;;;;;;:22;;;3985:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14363:7:::1;14351:9;;:19;;;;;;;;;;;;;;;;;;14291:84:::0;:::o;6362:77::-;6404:7;6424:10;;6417:17;;6362:77;:::o;3051:204::-;3109:7;3132:1;3127;:6;3123:32;;3148:1;3141:8;;;;3123:32;3159:9;3175:1;3171;:5;;;;:::i;:::-;3159:17;;3198:1;3193;3189;:5;;;;:::i;:::-;:10;3181:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3249:1;3242:8;;;3051:204;;;;;:::o;3260:123::-;3318:7;3339:39;3343:1;3346;3339:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3332:46;;3260:123;;;;:::o;1812:89::-;1865:7;1886:10;1879:17;;1812:89;:::o;9507:308::-;9611:1;9594:19;;:5;:19;;;9586:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9686:1;9667:21;;:7;:21;;;9659:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9762:6;9732:11;:18;9744:5;9732:18;;;;;;;;;;;;;;;:27;9751:7;9732:27;;;;;;;;;;;;;;;:36;;;;9794:7;9778:32;;9787:5;9778:32;;;9803:6;9778:32;;;;;;:::i;:::-;;;;;;;;9507:308;;;:::o;9820:1632::-;9918:1;9902:18;;:4;:18;;;9894:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9989:1;9975:16;;:2;:16;;;9967:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10053:1;10044:6;:10;10036:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10114:4;:10;10119:4;10114:10;;;;;;;;;;;;;;;;;;;;;;;;;10113:11;:24;;;;;10129:4;:8;10134:2;10129:8;;;;;;;;;;;;;;;;;;;;;;;;;10128:9;10113:24;10105:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10188:7;:5;:7::i;:::-;10180:15;;:4;:15;;;;:32;;;;;10205:7;:5;:7::i;:::-;10199:13;;:2;:13;;;;10180:32;10176:1174;;;10232:5;;;;;;;;;;;10224:13;;:4;:13;;;:40;;;;;10255:8;;;;;;;;;;;10241:23;;:2;:23;;;;10224:40;:68;;;;;10270:18;:22;10289:2;10270:22;;;;;;;;;;;;;;;;;;;;;;;;;10268:24;10224:68;10220:278;;;10318:12;;10310:6;:20;;10302:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;10375:9;;;;;;;;;;;10367:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;10448:10;;10438:6;10422:13;10432:2;10422:9;:13::i;:::-;:22;;;;:::i;:::-;:36;;10414:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;10220:278;10526:5;;;;;;;;;;;10518:13;;:4;:13;;;10514:532;;10573:15;10552:14;:18;10567:2;10552:18;;;;;;;;;;;;;;;:36;;;;10619:8;:6;:8::i;:::-;10609:7;:18;;;;10514:532;;;10668:18;10707:14;:20;10722:4;10707:20;;;;;;;;;;;;;;;;10689:15;:38;;;;:::i;:::-;10668:59;;10765:14;;10751:10;:28;10748:168;;10814:9;:7;:9::i;:::-;10804:7;:19;;;;10748:168;;;10882:14;:12;:14::i;:::-;10872:7;:24;;;;10748:168;10945:5;;;;;;;;;;;10939:11;;:2;:11;;;10936:95;;10996:15;10975:14;:18;10990:2;10975:18;;;;;;;;;;;;;;;:36;;;;10936:95;10649:397;10514:532;11062:28;11093:24;11111:4;11093:9;:24::i;:::-;11062:55;;11136:7;;;;;;;;;;;11135:8;:25;;;;;11155:5;;;;;;;;;;;11147:13;;:4;:13;;;;11135:25;:41;;;;;11164:12;;;;;;;;;;11135:41;11132:213;;;11224:25;;11200:20;:49;11197:133;;11274:36;11289:20;11274:14;:36::i;:::-;11197:133;11132:213;10214:1136;10176:1174;11356:91;11371:4;11376:2;11379:6;11387:18;:22;11406:2;11387:22;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;11411:18;:24;11430:4;11411:24;;;;;;;;;;;;;;;;;;;;;;;;;11387:48;11386:60;;11439:7;;11386:60;;;11437:1;11386:60;11356:14;:91::i;:::-;9820:1632;;;:::o;2877:169::-;2963:7;2990:1;2985;:6;;2993:12;2977:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3011:9;3027:1;3023;:5;;;;:::i;:::-;3011:17;;3040:1;3033:8;;;2877:169;;;;;:::o;12645:86::-;12696:13;;;;;;;;;;;:22;;:30;12719:6;12696:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12645:86;:::o;3388:168::-;3474:7;3500:1;3496;:5;3503:12;3488:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3521:9;3537:1;3533;:5;;;;:::i;:::-;3521:17;;3550:1;3543:8;;;3388:168;;;;;:::o;12188:93::-;12228:7;12256:16;;12248:25;;12188:93;:::o;12289:108::-;12330:7;12371:17;;12358:10;;:30;;;;:::i;:::-;12350:39;;12289:108;:::o;12405:118::-;12451:7;12492:22;;12479:10;;:35;;;;:::i;:::-;12471:44;;12405:118;:::o;11460:720::-;5752:4;5742:7;;:14;;;;;;;;;;;;;;;;;;11545:26:::1;11574:54;11622:5;11574:43;11599:17;;11574:20;:24;;:43;;;;:::i;:::-;:47;;:54;;;;:::i;:::-;11545:83;;11639:23;11665:44;11690:18;11665:20;:24;;:44;;;;:::i;:::-;11639:70;;11722:12;11737:25;11760:1;11737:18;:22;;:25;;;;:::i;:::-;11722:40;;11773:17;11793:28;11816:4;11793:18;:22;;:28;;;;:::i;:::-;11773:48;;11834:22;11859:21;11834:46;;11893:43;11910:25;11919:15;11910:4;:8;;:25;;;;:::i;:::-;11893:16;:43::i;:::-;11947:18;11968:41;11994:14;11968:21;:25;;:41;;;;:::i;:::-;11947:62;;12022:39;12039:10;12051:9;12022:16;:39::i;:::-;12087:43;12102:4;12108:10;12120:9;12087:43;;;;;;;;:::i;:::-;;;;;;;;12143:29;12156:15;12143:12;:29::i;:::-;11534:646;;;;;;5777:5:::0;5767:7;;:15;;;;;;;;;;;;;;;;;;11460:720;:::o;14380:1033::-;14506:1;14495:7;:12;14492:917;;14543:29;14564:7;14543:8;:16;14552:6;14543:16;;;;;;;;;;;;;;;;:20;;:29;;;;:::i;:::-;14524:8;:16;14533:6;14524:16;;;;;;;;;;;;;;;:48;;;;14609:32;14633:7;14609:8;:19;14618:9;14609:19;;;;;;;;;;;;;;;;:23;;:32;;;;:::i;:::-;14587:8;:19;14596:9;14587:19;;;;;;;;;;;;;;;:54;;;;14678:9;14661:36;;14670:6;14661:36;;;14689:7;14661:36;;;;;;:::i;:::-;;;;;;;;14492:917;;;14730:13;14746:29;14771:3;14746:20;14758:7;14746;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;14730:45;;14790:13;14806:34;14836:3;14806:25;14818:12;;14806:7;:11;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;14790:50;;14855:20;14878:16;14888:5;14878;:9;;:16;;;;:::i;:::-;14855:39;;14909:23;14935:25;14947:12;14935:7;:11;;:25;;;;:::i;:::-;14909:51;;14996:29;15017:7;14996:8;:16;15005:6;14996:16;;;;;;;;;;;;;;;;:20;;:29;;;;:::i;:::-;14977:8;:16;14986:6;14977:16;;;;;;;;;;;;;;;:48;;;;15062:40;15086:15;15062:8;:19;15071:9;15062:19;;;;;;;;;;;;;;;;:23;;:40;;;;:::i;:::-;15040:8;:19;15049:9;15040:19;;;;;;;;;;;;;;;:62;;;;15143:34;15171:5;15143:8;:23;15160:4;15143:23;;;;;;;;;;;;;;;;:27;;:34;;;;:::i;:::-;15117:8;:23;15134:4;15117:23;;;;;;;;;;;;;;;:60;;;;15202:18;15214:5;15202:7;;:11;;:18;;;;:::i;:::-;15192:7;:28;;;;15257:9;15240:44;;15249:6;15240:44;;;15268:15;15240:44;;;;;;:::i;:::-;;;;;;;;15329:4;15304:38;;15313:6;15304:38;;;15336:5;15304:38;;;;;;:::i;:::-;;;;;;;;15387:1;15362:35;;15371:6;15362:35;;;15391:5;15362:35;;;;;;:::i;:::-;;;;;;;;14715:694;;;;14492:917;14380:1033;;;;:::o;2745:127::-;2803:7;2824:43;2828:1;2831;2824:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2817:50;;2745:127;;;;:::o;2582:158::-;2640:7;2654:9;2670:1;2666;:5;;;;:::i;:::-;2654:17;;2689:1;2684;:6;;2676:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2734:1;2727:8;;;2582:158;;;;:::o;12739:366::-;12799:21;12837:1;12823:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12799:40;;12862:4;12844;12849:1;12844:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12882:8;;;;;;;;;;;:13;;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12872:4;12877:1;12872:7;;;;;;;;:::i;:::-;;;;;;;:25;;;;;;;;;;;12902:55;12919:4;12934:8;;;;;;;;;;;12945:11;12902:8;:55::i;:::-;12962:8;;;;;;;;;;;:59;;;13027:11;13044:1;13051:4;13069;13080:15;12962:138;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12794:311;12739:366;:::o;13904:382::-;13989:54;14006:4;14021:8;;;;;;;;;;;14032:10;13989:8;:54::i;:::-;14054:8;;;;;;;;;;;:24;;;14086:10;14121:4;14141:10;14166:1;14182;14198:7;:5;:7::i;:::-;14220:15;14054:192;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14274:4;14259:12;;:19;;;;;;;;;;;;;;;;;;13904:382;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:77::-;3828:7;3857:5;3846:16;;3791:77;;;:::o;3874:122::-;3947:24;3965:5;3947:24;:::i;:::-;3940:5;3937:35;3927:63;;3986:1;3983;3976:12;3927:63;3874:122;:::o;4002:139::-;4048:5;4086:6;4073:20;4064:29;;4102:33;4129:5;4102:33;:::i;:::-;4002:139;;;;:::o;4147:329::-;4206:6;4255:2;4243:9;4234:7;4230:23;4226:32;4223:119;;;4261:79;;:::i;:::-;4223:119;4381:1;4406:53;4451:7;4442:6;4431:9;4427:22;4406:53;:::i;:::-;4396:63;;4352:117;4147:329;;;;:::o;4482:99::-;4534:6;4568:5;4562:12;4552:22;;4482:99;;;:::o;4587:169::-;4671:11;4705:6;4700:3;4693:19;4745:4;4740:3;4736:14;4721:29;;4587:169;;;;:::o;4762:307::-;4830:1;4840:113;4854:6;4851:1;4848:13;4840:113;;;4939:1;4934:3;4930:11;4924:18;4920:1;4915:3;4911:11;4904:39;4876:2;4873:1;4869:10;4864:15;;4840:113;;;4971:6;4968:1;4965:13;4962:101;;;5051:1;5042:6;5037:3;5033:16;5026:27;4962:101;4811:258;4762:307;;;:::o;5075:364::-;5163:3;5191:39;5224:5;5191:39;:::i;:::-;5246:71;5310:6;5305:3;5246:71;:::i;:::-;5239:78;;5326:52;5371:6;5366:3;5359:4;5352:5;5348:16;5326:52;:::i;:::-;5403:29;5425:6;5403:29;:::i;:::-;5398:3;5394:39;5387:46;;5167:272;5075:364;;;;:::o;5445:313::-;5558:4;5596:2;5585:9;5581:18;5573:26;;5645:9;5639:4;5635:20;5631:1;5620:9;5616:17;5609:47;5673:78;5746:4;5737:6;5673:78;:::i;:::-;5665:86;;5445:313;;;;:::o;5764:474::-;5832:6;5840;5889:2;5877:9;5868:7;5864:23;5860:32;5857:119;;;5895:79;;:::i;:::-;5857:119;6015:1;6040:53;6085:7;6076:6;6065:9;6061:22;6040:53;:::i;:::-;6030:63;;5986:117;6142:2;6168:53;6213:7;6204:6;6193:9;6189:22;6168:53;:::i;:::-;6158:63;;6113:118;5764:474;;;;;:::o;6244:90::-;6278:7;6321:5;6314:13;6307:21;6296:32;;6244:90;;;:::o;6340:109::-;6421:21;6436:5;6421:21;:::i;:::-;6416:3;6409:34;6340:109;;:::o;6455:210::-;6542:4;6580:2;6569:9;6565:18;6557:26;;6593:65;6655:1;6644:9;6640:17;6631:6;6593:65;:::i;:::-;6455:210;;;;:::o;6671:118::-;6758:24;6776:5;6758:24;:::i;:::-;6753:3;6746:37;6671:118;;:::o;6795:222::-;6888:4;6926:2;6915:9;6911:18;6903:26;;6939:71;7007:1;6996:9;6992:17;6983:6;6939:71;:::i;:::-;6795:222;;;;:::o;7023:619::-;7100:6;7108;7116;7165:2;7153:9;7144:7;7140:23;7136:32;7133:119;;;7171:79;;:::i;:::-;7133:119;7291:1;7316:53;7361:7;7352:6;7341:9;7337:22;7316:53;:::i;:::-;7306:63;;7262:117;7418:2;7444:53;7489:7;7480:6;7469:9;7465:22;7444:53;:::i;:::-;7434:63;;7389:118;7546:2;7572:53;7617:7;7608:6;7597:9;7593:22;7572:53;:::i;:::-;7562:63;;7517:118;7023:619;;;;;:::o;7648:86::-;7683:7;7723:4;7716:5;7712:16;7701:27;;7648:86;;;:::o;7740:112::-;7823:22;7839:5;7823:22;:::i;:::-;7818:3;7811:35;7740:112;;:::o;7858:214::-;7947:4;7985:2;7974:9;7970:18;7962:26;;7998:67;8062:1;8051:9;8047:17;8038:6;7998:67;:::i;:::-;7858:214;;;;:::o;8078:329::-;8137:6;8186:2;8174:9;8165:7;8161:23;8157:32;8154:119;;;8192:79;;:::i;:::-;8154:119;8312:1;8337:53;8382:7;8373:6;8362:9;8358:22;8337:53;:::i;:::-;8327:63;;8283:117;8078:329;;;;:::o;8413:118::-;8500:24;8518:5;8500:24;:::i;:::-;8495:3;8488:37;8413:118;;:::o;8537:222::-;8630:4;8668:2;8657:9;8653:18;8645:26;;8681:71;8749:1;8738:9;8734:17;8725:6;8681:71;:::i;:::-;8537:222;;;;:::o;8765:474::-;8833:6;8841;8890:2;8878:9;8869:7;8865:23;8861:32;8858:119;;;8896:79;;:::i;:::-;8858:119;9016:1;9041:53;9086:7;9077:6;9066:9;9062:22;9041:53;:::i;:::-;9031:63;;8987:117;9143:2;9169:53;9214:7;9205:6;9194:9;9190:22;9169:53;:::i;:::-;9159:63;;9114:118;8765:474;;;;;:::o;9245:116::-;9315:21;9330:5;9315:21;:::i;:::-;9308:5;9305:32;9295:60;;9351:1;9348;9341:12;9295:60;9245:116;:::o;9367:133::-;9410:5;9448:6;9435:20;9426:29;;9464:30;9488:5;9464:30;:::i;:::-;9367:133;;;;:::o;9506:323::-;9562:6;9611:2;9599:9;9590:7;9586:23;9582:32;9579:119;;;9617:79;;:::i;:::-;9579:119;9737:1;9762:50;9804:7;9795:6;9784:9;9780:22;9762:50;:::i;:::-;9752:60;;9708:114;9506:323;;;;:::o;9835:182::-;9975:34;9971:1;9963:6;9959:14;9952:58;9835:182;:::o;10023:366::-;10165:3;10186:67;10250:2;10245:3;10186:67;:::i;:::-;10179:74;;10262:93;10351:3;10262:93;:::i;:::-;10380:2;10375:3;10371:12;10364:19;;10023:366;;;:::o;10395:419::-;10561:4;10599:2;10588:9;10584:18;10576:26;;10648:9;10642:4;10638:20;10634:1;10623:9;10619:17;10612:47;10676:131;10802:4;10676:131;:::i;:::-;10668:139;;10395:419;;;:::o;10820:180::-;10868:77;10865:1;10858:88;10965:4;10962:1;10955:15;10989:4;10986:1;10979:15;11006:180;11054:77;11051:1;11044:88;11151:4;11148:1;11141:15;11175:4;11172:1;11165:15;11192:233;11231:3;11254:24;11272:5;11254:24;:::i;:::-;11245:33;;11300:66;11293:5;11290:77;11287:103;;11370:18;;:::i;:::-;11287:103;11417:1;11410:5;11406:13;11399:20;;11192:233;;;:::o;11431:169::-;11571:21;11567:1;11559:6;11555:14;11548:45;11431:169;:::o;11606:366::-;11748:3;11769:67;11833:2;11828:3;11769:67;:::i;:::-;11762:74;;11845:93;11934:3;11845:93;:::i;:::-;11963:2;11958:3;11954:12;11947:19;;11606:366;;;:::o;11978:419::-;12144:4;12182:2;12171:9;12167:18;12159:26;;12231:9;12225:4;12221:20;12217:1;12206:9;12202:17;12195:47;12259:131;12385:4;12259:131;:::i;:::-;12251:139;;11978:419;;;:::o;12403:348::-;12443:7;12466:20;12484:1;12466:20;:::i;:::-;12461:25;;12500:20;12518:1;12500:20;:::i;:::-;12495:25;;12688:1;12620:66;12616:74;12613:1;12610:81;12605:1;12598:9;12591:17;12587:105;12584:131;;;12695:18;;:::i;:::-;12584:131;12743:1;12740;12736:9;12725:20;;12403:348;;;;:::o;12757:173::-;12897:25;12893:1;12885:6;12881:14;12874:49;12757:173;:::o;12936:366::-;13078:3;13099:67;13163:2;13158:3;13099:67;:::i;:::-;13092:74;;13175:93;13264:3;13175:93;:::i;:::-;13293:2;13288:3;13284:12;13277:19;;12936:366;;;:::o;13308:419::-;13474:4;13512:2;13501:9;13497:18;13489:26;;13561:9;13555:4;13551:20;13547:1;13536:9;13532:17;13525:47;13589:131;13715:4;13589:131;:::i;:::-;13581:139;;13308:419;;;:::o;13733:143::-;13790:5;13821:6;13815:13;13806:22;;13837:33;13864:5;13837:33;:::i;:::-;13733:143;;;;:::o;13882:351::-;13952:6;14001:2;13989:9;13980:7;13976:23;13972:32;13969:119;;;14007:79;;:::i;:::-;13969:119;14127:1;14152:64;14208:7;14199:6;14188:9;14184:22;14152:64;:::i;:::-;14142:74;;14098:128;13882:351;;;;:::o;14239:332::-;14360:4;14398:2;14387:9;14383:18;14375:26;;14411:71;14479:1;14468:9;14464:17;14455:6;14411:71;:::i;:::-;14492:72;14560:2;14549:9;14545:18;14536:6;14492:72;:::i;:::-;14239:332;;;;;:::o;14577:::-;14698:4;14736:2;14725:9;14721:18;14713:26;;14749:71;14817:1;14806:9;14802:17;14793:6;14749:71;:::i;:::-;14830:72;14898:2;14887:9;14883:18;14874:6;14830:72;:::i;:::-;14577:332;;;;;:::o;14915:137::-;14969:5;15000:6;14994:13;14985:22;;15016:30;15040:5;15016:30;:::i;:::-;14915:137;;;;:::o;15058:345::-;15125:6;15174:2;15162:9;15153:7;15149:23;15145:32;15142:119;;;15180:79;;:::i;:::-;15142:119;15300:1;15325:61;15378:7;15369:6;15358:9;15354:22;15325:61;:::i;:::-;15315:71;;15271:125;15058:345;;;;:::o;15409:305::-;15449:3;15468:20;15486:1;15468:20;:::i;:::-;15463:25;;15502:20;15520:1;15502:20;:::i;:::-;15497:25;;15656:1;15588:66;15584:74;15581:1;15578:81;15575:107;;;15662:18;;:::i;:::-;15575:107;15706:1;15703;15699:9;15692:16;;15409:305;;;;:::o;15720:85::-;15765:7;15794:5;15783:16;;15720:85;;;:::o;15811:60::-;15839:3;15860:5;15853:12;;15811:60;;;:::o;15877:158::-;15935:9;15968:61;15986:42;15995:32;16021:5;15995:32;:::i;:::-;15986:42;:::i;:::-;15968:61;:::i;:::-;15955:74;;15877:158;;;:::o;16041:147::-;16136:45;16175:5;16136:45;:::i;:::-;16131:3;16124:58;16041:147;;:::o;16194:807::-;16443:4;16481:3;16470:9;16466:19;16458:27;;16495:71;16563:1;16552:9;16548:17;16539:6;16495:71;:::i;:::-;16576:72;16644:2;16633:9;16629:18;16620:6;16576:72;:::i;:::-;16658:80;16734:2;16723:9;16719:18;16710:6;16658:80;:::i;:::-;16748;16824:2;16813:9;16809:18;16800:6;16748:80;:::i;:::-;16838:73;16906:3;16895:9;16891:19;16882:6;16838:73;:::i;:::-;16921;16989:3;16978:9;16974:19;16965:6;16921:73;:::i;:::-;16194:807;;;;;;;;;:::o;17007:143::-;17064:5;17095:6;17089:13;17080:22;;17111:33;17138:5;17111:33;:::i;:::-;17007:143;;;;:::o;17156:663::-;17244:6;17252;17260;17309:2;17297:9;17288:7;17284:23;17280:32;17277:119;;;17315:79;;:::i;:::-;17277:119;17435:1;17460:64;17516:7;17507:6;17496:9;17492:22;17460:64;:::i;:::-;17450:74;;17406:128;17573:2;17599:64;17655:7;17646:6;17635:9;17631:22;17599:64;:::i;:::-;17589:74;;17544:129;17712:2;17738:64;17794:7;17785:6;17774:9;17770:22;17738:64;:::i;:::-;17728:74;;17683:129;17156:663;;;;;:::o;17825:180::-;17873:77;17870:1;17863:88;17970:4;17967:1;17960:15;17994:4;17991:1;17984:15;18011:185;18051:1;18068:20;18086:1;18068:20;:::i;:::-;18063:25;;18102:20;18120:1;18102:20;:::i;:::-;18097:25;;18141:1;18131:35;;18146:18;;:::i;:::-;18131:35;18188:1;18185;18181:9;18176:14;;18011:185;;;;:::o;18202:220::-;18342:34;18338:1;18330:6;18326:14;18319:58;18411:3;18406:2;18398:6;18394:15;18387:28;18202:220;:::o;18428:366::-;18570:3;18591:67;18655:2;18650:3;18591:67;:::i;:::-;18584:74;;18667:93;18756:3;18667:93;:::i;:::-;18785:2;18780:3;18776:12;18769:19;;18428:366;;;:::o;18800:419::-;18966:4;19004:2;18993:9;18989:18;18981:26;;19053:9;19047:4;19043:20;19039:1;19028:9;19024:17;19017:47;19081:131;19207:4;19081:131;:::i;:::-;19073:139;;18800:419;;;:::o;19225:223::-;19365:34;19361:1;19353:6;19349:14;19342:58;19434:6;19429:2;19421:6;19417:15;19410:31;19225:223;:::o;19454:366::-;19596:3;19617:67;19681:2;19676:3;19617:67;:::i;:::-;19610:74;;19693:93;19782:3;19693:93;:::i;:::-;19811:2;19806:3;19802:12;19795:19;;19454:366;;;:::o;19826:419::-;19992:4;20030:2;20019:9;20015:18;20007:26;;20079:9;20073:4;20069:20;20065:1;20054:9;20050:17;20043:47;20107:131;20233:4;20107:131;:::i;:::-;20099:139;;19826:419;;;:::o;20251:221::-;20391:34;20387:1;20379:6;20375:14;20368:58;20460:4;20455:2;20447:6;20443:15;20436:29;20251:221;:::o;20478:366::-;20620:3;20641:67;20705:2;20700:3;20641:67;:::i;:::-;20634:74;;20717:93;20806:3;20717:93;:::i;:::-;20835:2;20830:3;20826:12;20819:19;;20478:366;;;:::o;20850:419::-;21016:4;21054:2;21043:9;21039:18;21031:26;;21103:9;21097:4;21093:20;21089:1;21078:9;21074:17;21067:47;21131:131;21257:4;21131:131;:::i;:::-;21123:139;;20850:419;;;:::o;21275:224::-;21415:34;21411:1;21403:6;21399:14;21392:58;21484:7;21479:2;21471:6;21467:15;21460:32;21275:224;:::o;21505:366::-;21647:3;21668:67;21732:2;21727:3;21668:67;:::i;:::-;21661:74;;21744:93;21833:3;21744:93;:::i;:::-;21862:2;21857:3;21853:12;21846:19;;21505:366;;;:::o;21877:419::-;22043:4;22081:2;22070:9;22066:18;22058:26;;22130:9;22124:4;22120:20;22116:1;22105:9;22101:17;22094:47;22158:131;22284:4;22158:131;:::i;:::-;22150:139;;21877:419;;;:::o;22302:222::-;22442:34;22438:1;22430:6;22426:14;22419:58;22511:5;22506:2;22498:6;22494:15;22487:30;22302:222;:::o;22530:366::-;22672:3;22693:67;22757:2;22752:3;22693:67;:::i;:::-;22686:74;;22769:93;22858:3;22769:93;:::i;:::-;22887:2;22882:3;22878:12;22871:19;;22530:366;;;:::o;22902:419::-;23068:4;23106:2;23095:9;23091:18;23083:26;;23155:9;23149:4;23145:20;23141:1;23130:9;23126:17;23119:47;23183:131;23309:4;23183:131;:::i;:::-;23175:139;;22902:419;;;:::o;23327:228::-;23467:34;23463:1;23455:6;23451:14;23444:58;23536:11;23531:2;23523:6;23519:15;23512:36;23327:228;:::o;23561:366::-;23703:3;23724:67;23788:2;23783:3;23724:67;:::i;:::-;23717:74;;23800:93;23889:3;23800:93;:::i;:::-;23918:2;23913:3;23909:12;23902:19;;23561:366;;;:::o;23933:419::-;24099:4;24137:2;24126:9;24122:18;24114:26;;24186:9;24180:4;24176:20;24172:1;24161:9;24157:17;24150:47;24214:131;24340:4;24214:131;:::i;:::-;24206:139;;23933:419;;;:::o;24358:177::-;24498:29;24494:1;24486:6;24482:14;24475:53;24358:177;:::o;24541:366::-;24683:3;24704:67;24768:2;24763:3;24704:67;:::i;:::-;24697:74;;24780:93;24869:3;24780:93;:::i;:::-;24898:2;24893:3;24889:12;24882:19;;24541:366;;;:::o;24913:419::-;25079:4;25117:2;25106:9;25102:18;25094:26;;25166:9;25160:4;25156:20;25152:1;25141:9;25137:17;25130:47;25194:131;25320:4;25194:131;:::i;:::-;25186:139;;24913:419;;;:::o;25338:176::-;25478:28;25474:1;25466:6;25462:14;25455:52;25338:176;:::o;25520:366::-;25662:3;25683:67;25747:2;25742:3;25683:67;:::i;:::-;25676:74;;25759:93;25848:3;25759:93;:::i;:::-;25877:2;25872:3;25868:12;25861:19;;25520:366;;;:::o;25892:419::-;26058:4;26096:2;26085:9;26081:18;26073:26;;26145:9;26139:4;26135:20;26131:1;26120:9;26116:17;26109:47;26173:131;26299:4;26173:131;:::i;:::-;26165:139;;25892:419;;;:::o;26317:169::-;26457:21;26453:1;26445:6;26441:14;26434:45;26317:169;:::o;26492:366::-;26634:3;26655:67;26719:2;26714:3;26655:67;:::i;:::-;26648:74;;26731:93;26820:3;26731:93;:::i;:::-;26849:2;26844:3;26840:12;26833:19;;26492:366;;;:::o;26864:419::-;27030:4;27068:2;27057:9;27053:18;27045:26;;27117:9;27111:4;27107:20;27103:1;27092:9;27088:17;27081:47;27145:131;27271:4;27145:131;:::i;:::-;27137:139;;26864:419;;;:::o;27289:178::-;27429:30;27425:1;27417:6;27413:14;27406:54;27289:178;:::o;27473:366::-;27615:3;27636:67;27700:2;27695:3;27636:67;:::i;:::-;27629:74;;27712:93;27801:3;27712:93;:::i;:::-;27830:2;27825:3;27821:12;27814:19;;27473:366;;;:::o;27845:419::-;28011:4;28049:2;28038:9;28034:18;28026:26;;28098:9;28092:4;28088:20;28084:1;28073:9;28069:17;28062:47;28126:131;28252:4;28126:131;:::i;:::-;28118:139;;27845:419;;;:::o;28270:191::-;28310:4;28330:20;28348:1;28330:20;:::i;:::-;28325:25;;28364:20;28382:1;28364:20;:::i;:::-;28359:25;;28403:1;28400;28397:8;28394:34;;;28408:18;;:::i;:::-;28394:34;28453:1;28450;28446:9;28438:17;;28270:191;;;;:::o;28467:442::-;28616:4;28654:2;28643:9;28639:18;28631:26;;28667:71;28735:1;28724:9;28720:17;28711:6;28667:71;:::i;:::-;28748:72;28816:2;28805:9;28801:18;28792:6;28748:72;:::i;:::-;28830;28898:2;28887:9;28883:18;28874:6;28830:72;:::i;:::-;28467:442;;;;;;:::o;28915:177::-;29055:29;29051:1;29043:6;29039:14;29032:53;28915:177;:::o;29098:366::-;29240:3;29261:67;29325:2;29320:3;29261:67;:::i;:::-;29254:74;;29337:93;29426:3;29337:93;:::i;:::-;29455:2;29450:3;29446:12;29439:19;;29098:366;;;:::o;29470:419::-;29636:4;29674:2;29663:9;29659:18;29651:26;;29723:9;29717:4;29713:20;29709:1;29698:9;29694:17;29687:47;29751:131;29877:4;29751:131;:::i;:::-;29743:139;;29470:419;;;:::o;29895:114::-;29962:6;29996:5;29990:12;29980:22;;29895:114;;;:::o;30015:184::-;30114:11;30148:6;30143:3;30136:19;30188:4;30183:3;30179:14;30164:29;;30015:184;;;;:::o;30205:132::-;30272:4;30295:3;30287:11;;30325:4;30320:3;30316:14;30308:22;;30205:132;;;:::o;30343:108::-;30420:24;30438:5;30420:24;:::i;:::-;30415:3;30408:37;30343:108;;:::o;30457:179::-;30526:10;30547:46;30589:3;30581:6;30547:46;:::i;:::-;30625:4;30620:3;30616:14;30602:28;;30457:179;;;;:::o;30642:113::-;30712:4;30744;30739:3;30735:14;30727:22;;30642:113;;;:::o;30791:732::-;30910:3;30939:54;30987:5;30939:54;:::i;:::-;31009:86;31088:6;31083:3;31009:86;:::i;:::-;31002:93;;31119:56;31169:5;31119:56;:::i;:::-;31198:7;31229:1;31214:284;31239:6;31236:1;31233:13;31214:284;;;31315:6;31309:13;31342:63;31401:3;31386:13;31342:63;:::i;:::-;31335:70;;31428:60;31481:6;31428:60;:::i;:::-;31418:70;;31274:224;31261:1;31258;31254:9;31249:14;;31214:284;;;31218:14;31514:3;31507:10;;30915:608;;;30791:732;;;;:::o;31529:831::-;31792:4;31830:3;31819:9;31815:19;31807:27;;31844:71;31912:1;31901:9;31897:17;31888:6;31844:71;:::i;:::-;31925:80;32001:2;31990:9;31986:18;31977:6;31925:80;:::i;:::-;32052:9;32046:4;32042:20;32037:2;32026:9;32022:18;32015:48;32080:108;32183:4;32174:6;32080:108;:::i;:::-;32072:116;;32198:72;32266:2;32255:9;32251:18;32242:6;32198:72;:::i;:::-;32280:73;32348:3;32337:9;32333:19;32324:6;32280:73;:::i;:::-;31529:831;;;;;;;;:::o

Swarm Source

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