ETH Price: $2,539.26 (-0.87%)

Token

KuKu (KuKu)
 

Overview

Max Total Supply

10,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 KuKu

Holders

2,220

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 0 Decimals)

Balance
0 KuKu

Value
$0.00
0x48f4f85e27a51924d14aef8fb2d77237d3928b5c
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:
Token

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-26
*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.4;

abstract contract Context {

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

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

library Address {

    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly {codehash := extcodehash(account)}
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success,) = recipient.call{ value : amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{ value : weiValue}(data);
        if (success) {
            return returndata;
        } else {

            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address public _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);


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

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

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

    function getTime() public view returns (uint256) {
        return block.timestamp;
    }

}

interface IUniswapV2Factory {

    function getPair(address tokenA, address tokenB) external view returns (address pair);

    function createPair(address tokenA, address tokenB) external returns (address pair);

}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);


}

interface IUniswapV2Router02 is IUniswapV2Router01 {

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}


contract Token is Context, IERC20, Ownable {

    using SafeMath for uint256;
    using Address for address;

    string private _name;
    string private _symbol;
    uint8 private _decimals;
    address payable public marketingWalletAddress = payable(0x6996F0AAB387C80fE1E2EEcEe5d8724E516eF09E);
    address public deadAddress = 0x000000000000000000000000000000000000dEaD;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isMarketPair;


    uint256 public _totalTaxIfBuying = 0;
    uint256 public _totalTaxIfSelling = 0;

    uint256 private _totalSupply;
    uint256 private _minimumTokensBeforeSwap = 0;



    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );

    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );

    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }


    constructor (
    ) payable {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        _name = "KuKu";
        _symbol = "KuKu";
        _decimals = 0;
        _owner = 0xB26EB909Cf4Df8bcc1d5207b00a07616286918f5;
        _totalSupply = 10000000000000000000000000000000000000000000000000000000000000000000000000000;
        _minimumTokensBeforeSwap = 1000000000000000000000000000;
        uniswapV2Router = _uniswapV2Router;
        _allowances[address(this)][address(uniswapV2Router)] = _totalSupply;
        isExcludedFromFee[_owner] = true;
        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[marketingWalletAddress] = true;

        isMarketPair[address(uniswapPair)] = true;

        _balances[_owner] = _totalSupply;
        emit Transfer(address(0), _owner, _totalSupply);
    }


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

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

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

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

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

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

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function minimumTokensBeforeSwapAmount() public view returns (uint256) {
        return _minimumTokensBeforeSwap;
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return 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 setMarketPairStatus(address account, bool newValue) public onlyOwner {
        isMarketPair[account] = newValue;
    }

    function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
        _minimumTokensBeforeSwap = newLimit;
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner {
        swapAndLiquifyByLimitOnly = newValue;
    }

    function setFee(uint256 buy,uint256 sell) public onlyOwner {
        _totalTaxIfBuying = buy;
        _totalTaxIfSelling = sell;
    }

    function setMarketAddress(address addr) public onlyOwner {
        marketingWalletAddress = payable(addr);
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress));
    }

    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }
    
     //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, 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 _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        

        if(inSwapAndLiquify)
        {
            return _basicTransfer(sender, recipient, amount);
        }
        else
        {

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= _minimumTokensBeforeSwap;

            if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled)
            {
                if(swapAndLiquifyByLimitOnly)
                    contractTokenBalance = _minimumTokensBeforeSwap;
                swapAndLiquify(contractTokenBalance);
            }

            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ?
                                         amount : takeFee(sender, recipient, amount);


            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);
            return true;
        }
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }


    function swapAndLiquify(uint256 tAmount) private lockTheSwap {

        // swap token -> eth
        swapTokensForEth(tAmount);
        uint256 amountReceived = address(this).balance;
         
        if(amountReceived > 0)
            transferToAddressETH(marketingWalletAddress, amountReceived);

    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );

        emit SwapTokensForETH(tokenAmount, path);
    }



    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {

        uint256 feeAmount = 0;
        if(isMarketPair[sender]) {
            feeAmount = amount.mul(_totalTaxIfBuying).div(100);
        }
        else if(isMarketPair[recipient]) {
            feeAmount = amount.mul(_totalTaxIfSelling).div(100);
        }
        if(feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }

   
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","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":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setMarketAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052736996f0aab387c80fe1e2eecee5d8724e516ef09e600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006009556000600a556000600c556001600e60156101000a81548160ff0219169083151502179055506000600e60166101000a81548160ff0219169083151502179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200014157600080fd5b505afa15801562000156573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200017c91906200087f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620001df57600080fd5b505afa158015620001f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021a91906200087f565b6040518363ffffffff1660e01b815260040162000239929190620008d3565b602060405180830381600087803b1580156200025457600080fd5b505af115801562000269573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028f91906200087f565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600481526020017f4b754b7500000000000000000000000000000000000000000000000000000000815250600190805190602001906200031c929190620007b8565b506040518060400160405280600481526020017f4b754b7500000000000000000000000000000000000000000000000000000000815250600290805190602001906200036a929190620007b8565b506000600360006101000a81548160ff021916908360ff16021790555073b26eb909cf4df8bcc1d5207b00a07616286918f56000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f161bcca7119915b50764b4abe86529797775a5f1719510000000000000000000600b819055506b033b2e3c9fd0803ce8000000600c8190555080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b54600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600760008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600b54600560008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b54604051620007a9919062000900565b60405180910390a350620009df565b828054620007c6906200095b565b90600052602060002090601f016020900481019282620007ea576000855562000836565b82601f106200080557805160ff191683800117855562000836565b8280016001018555821562000836579182015b828111156200083557825182559160200191906001019062000818565b5b50905062000845919062000849565b5090565b5b80821115620008645760008160009055506001016200084a565b5090565b6000815190506200087981620009c5565b92915050565b600060208284031215620008985762000897620009c0565b5b6000620008a88482850162000868565b91505092915050565b620008bc816200091d565b82525050565b620008cd8162000951565b82525050565b6000604082019050620008ea6000830185620008b1565b620008f96020830184620008b1565b9392505050565b6000602082019050620009176000830184620008c2565b92915050565b60006200092a8262000931565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060028204905060018216806200097457607f821691505b602082108114156200098b576200098a62000991565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b620009d0816200091d565b8114620009dc57600080fd5b50565b61343f80620009ef6000396000f3fe6080604052600436106101fd5760003560e01c8063844d591c1161010d578063b2bdfa7b116100a0578063da00097d1161006f578063da00097d1461075a578063dd62ed3e14610785578063f0cd1dac146107c2578063f2fde38b146107ed578063fae926121461081657610204565b8063b2bdfa7b146106b0578063c49b9a80146106db578063c816841b14610704578063d158272d1461072f57610204565b8063a073d37f116100dc578063a073d37f146105e2578063a457c2d71461060d578063a5d69d1f1461064a578063a9059cbb1461067357610204565b8063844d591c1461054c5780638da5cb5b14610575578063914eb66a146105a057806395d89b41146105b757610204565b8063395093511161019057806352f7c9881161015f57806352f7c988146104535780635342acb41461047c578063557ed1ba146104b957806370a08231146104e457806382eefb431461052157610204565b806339509351146103855780633b97084a146103c25780633ecad271146103eb5780634a74bb021461042857610204565b806323b872dd116101cc57806323b872dd146102c757806327c8f835146103045780632b112e491461032f578063313ce5671461035a57610204565b806306fdde0314610209578063095ea7b3146102345780631694505e1461027157806318160ddd1461029c57610204565b3661020457005b600080fd5b34801561021557600080fd5b5061021e61083f565b60405161022b9190612b7b565b60405180910390f35b34801561024057600080fd5b5061025b600480360381019061025691906127d3565b6108d1565b6040516102689190612b45565b60405180910390f35b34801561027d57600080fd5b506102866108ef565b6040516102939190612b60565b60405180910390f35b3480156102a857600080fd5b506102b1610915565b6040516102be9190612cbd565b60405180910390f35b3480156102d357600080fd5b506102ee60048036038101906102e99190612740565b61091f565b6040516102fb9190612b45565b60405180910390f35b34801561031057600080fd5b506103196109f9565b6040516103269190612b0f565b60405180910390f35b34801561033b57600080fd5b50610344610a1f565b6040516103519190612cbd565b60405180910390f35b34801561036657600080fd5b5061036f610a65565b60405161037c9190612d62565b60405180910390f35b34801561039157600080fd5b506103ac60048036038101906103a791906127d3565b610a7c565b6040516103b99190612b45565b60405180910390f35b3480156103ce57600080fd5b506103e960048036038101906103e49190612840565b610b2f565b005b3480156103f757600080fd5b50610412600480360381019061040d91906126a6565b610bce565b60405161041f9190612b45565b60405180910390f35b34801561043457600080fd5b5061043d610bee565b60405161044a9190612b45565b60405180910390f35b34801561045f57600080fd5b5061047a6004803603810190610475919061286d565b610c01565b005b34801561048857600080fd5b506104a3600480360381019061049e91906126a6565b610ca8565b6040516104b09190612b45565b60405180910390f35b3480156104c557600080fd5b506104ce610cc8565b6040516104db9190612cbd565b60405180910390f35b3480156104f057600080fd5b5061050b600480360381019061050691906126a6565b610cd0565b6040516105189190612cbd565b60405180910390f35b34801561052d57600080fd5b50610536610d19565b6040516105439190612cbd565b60405180910390f35b34801561055857600080fd5b50610573600480360381019061056e9190612793565b610d1f565b005b34801561058157600080fd5b5061058a610e0f565b6040516105979190612b0f565b60405180910390f35b3480156105ac57600080fd5b506105b5610e38565b005b3480156105c357600080fd5b506105cc610f8b565b6040516105d99190612b7b565b60405180910390f35b3480156105ee57600080fd5b506105f761101d565b6040516106049190612cbd565b60405180910390f35b34801561061957600080fd5b50610634600480360381019061062f91906127d3565b611027565b6040516106419190612b45565b60405180910390f35b34801561065657600080fd5b50610671600480360381019061066c9190612813565b6110f4565b005b34801561067f57600080fd5b5061069a600480360381019061069591906127d3565b6111a6565b6040516106a79190612b45565b60405180910390f35b3480156106bc57600080fd5b506106c56111c5565b6040516106d29190612b0f565b60405180910390f35b3480156106e757600080fd5b5061070260048036038101906106fd9190612813565b6111e9565b005b34801561071057600080fd5b506107196112d2565b6040516107269190612b0f565b60405180910390f35b34801561073b57600080fd5b506107446112f8565b6040516107519190612b2a565b60405180910390f35b34801561076657600080fd5b5061076f61131e565b60405161077c9190612b45565b60405180910390f35b34801561079157600080fd5b506107ac60048036038101906107a79190612700565b611331565b6040516107b99190612cbd565b60405180910390f35b3480156107ce57600080fd5b506107d76113b8565b6040516107e49190612cbd565b60405180910390f35b3480156107f957600080fd5b50610814600480360381019061080f91906126a6565b6113be565b005b34801561082257600080fd5b5061083d600480360381019061083891906126a6565b611580565b005b60606001805461084e90612fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461087a90612fc9565b80156108c75780601f1061089c576101008083540402835291602001916108c7565b820191906000526020600020905b8154815290600101906020018083116108aa57829003601f168201915b5050505050905090565b60006108e56108de611659565b8484611661565b6001905092915050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b54905090565b600061092c84848461182c565b506109ee84610939611659565b6109e9856040518060600160405280602881526020016133bd60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061099f611659565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cd09092919063ffffffff16565b611661565b600190509392505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610a60610a4f600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610cd0565b600b54611d3490919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b6000610b25610a89611659565b84610b208560066000610a9a611659565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d7e90919063ffffffff16565b611661565b6001905092915050565b610b37611659565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbb90612c3d565b60405180910390fd5b80600c8190555050565b60086020528060005260406000206000915054906101000a900460ff1681565b600e60159054906101000a900460ff1681565b610c09611659565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8d90612c3d565b60405180910390fd5b8160098190555080600a819055505050565b60076020528060005260406000206000915054906101000a900460ff1681565b600042905090565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600a5481565b610d27611659565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610db4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dab90612c3d565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610e40611659565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ecd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec490612c3d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b606060028054610f9a90612fc9565b80601f0160208091040260200160405190810160405280929190818152602001828054610fc690612fc9565b80156110135780601f10610fe857610100808354040283529160200191611013565b820191906000526020600020905b815481529060010190602001808311610ff657829003601f168201915b5050505050905090565b6000600c54905090565b60006110ea611034611659565b846110e5856040518060600160405280602581526020016133e5602591396006600061105e611659565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cd09092919063ffffffff16565b611661565b6001905092915050565b6110fc611659565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611189576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118090612c3d565b60405180910390fd5b80600e60166101000a81548160ff02191690831515021790555050565b60006111ba6111b3611659565b848461182c565b506001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6111f1611659565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461127e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127590612c3d565b60405180910390fd5b80600e60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516112c79190612b45565b60405180910390a150565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e60169054906101000a900460ff1681565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b6113c6611659565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144a90612c3d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ba90612bbd565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611588611659565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160c90612c3d565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c890612c9d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611741576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173890612bdd565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161181f9190612cbd565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561189d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189490612c7d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561190d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190490612b9d565b60405180910390fd5b60008211611950576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194790612c5d565b60405180910390fd5b600e60149054906101000a900460ff161561197757611970848484611ddc565b9050611cc9565b600061198230610cd0565b90506000600c5482101590508080156119a85750600e60149054906101000a900460ff16155b80156119fe5750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611a165750600e60159054906101000a900460ff165b15611a4057600e60169054906101000a900460ff1615611a3657600c5491505b611a3f82611faf565b5b611ac9846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cd09092919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611baf5750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611bc357611bbe87878761202d565b611bc5565b845b9050611c1981600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d7e90919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611cb99190612cbd565b60405180910390a3600193505050505b9392505050565b6000838311158290611d18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0f9190612b7b565b60405180910390fd5b5060008385611d279190612eb3565b9050809150509392505050565b6000611d7683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611cd0565b905092915050565b6000808284611d8d9190612dd2565b905083811015611dd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc990612bfd565b60405180910390fd5b8091505092915050565b6000611e67826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cd09092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611efc82600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d7e90919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f9c9190612cbd565b60405180910390a3600190509392505050565b6001600e60146101000a81548160ff021916908315150217905550611fd381612254565b6000479050600081111561200e5761200d600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826124df565b5b506000600e60146101000a81548160ff02191690831515021790555050565b60008060009050600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156120b5576120ae60646120a06009548661252a90919063ffffffff16565b6125a590919063ffffffff16565b9050612133565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156121325761212f6064612121600a548661252a90919063ffffffff16565b6125a590919063ffffffff16565b90505b5b60008111156122375761218e81600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d7e90919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161222e9190612cbd565b60405180910390a35b61224a8184611d3490919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff811115612271576122706130b7565b5b60405190808252806020026020018201604052801561229f5781602001602082028036833780820191505090505b50905030816000815181106122b7576122b6613088565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561235957600080fd5b505afa15801561236d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239191906126d3565b816001815181106123a5576123a4613088565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061240c30600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611661565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612470959493929190612d08565b600060405180830381600087803b15801561248a57600080fd5b505af115801561249e573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516124d3929190612cd8565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612525573d6000803e3d6000fd5b505050565b60008083141561253d576000905061259f565b6000828461254b9190612e59565b905082848261255a9190612e28565b1461259a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259190612c1d565b60405180910390fd5b809150505b92915050565b60006125e783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125ef565b905092915050565b60008083118290612636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262d9190612b7b565b60405180910390fd5b50600083856126459190612e28565b9050809150509392505050565b60008135905061266181613377565b92915050565b60008151905061267681613377565b92915050565b60008135905061268b8161338e565b92915050565b6000813590506126a0816133a5565b92915050565b6000602082840312156126bc576126bb6130e6565b5b60006126ca84828501612652565b91505092915050565b6000602082840312156126e9576126e86130e6565b5b60006126f784828501612667565b91505092915050565b60008060408385031215612717576127166130e6565b5b600061272585828601612652565b925050602061273685828601612652565b9150509250929050565b600080600060608486031215612759576127586130e6565b5b600061276786828701612652565b935050602061277886828701612652565b925050604061278986828701612691565b9150509250925092565b600080604083850312156127aa576127a96130e6565b5b60006127b885828601612652565b92505060206127c98582860161267c565b9150509250929050565b600080604083850312156127ea576127e96130e6565b5b60006127f885828601612652565b925050602061280985828601612691565b9150509250929050565b600060208284031215612829576128286130e6565b5b60006128378482850161267c565b91505092915050565b600060208284031215612856576128556130e6565b5b600061286484828501612691565b91505092915050565b60008060408385031215612884576128836130e6565b5b600061289285828601612691565b92505060206128a385828601612691565b9150509250929050565b60006128b983836128d4565b60208301905092915050565b6128ce81612ef9565b82525050565b6128dd81612ee7565b82525050565b6128ec81612ee7565b82525050565b60006128fd82612d8d565b6129078185612db0565b935061291283612d7d565b8060005b8381101561294357815161292a88826128ad565b975061293583612da3565b925050600181019050612916565b5085935050505092915050565b61295981612f0b565b82525050565b61296881612f4e565b82525050565b61297781612f60565b82525050565b600061298882612d98565b6129928185612dc1565b93506129a2818560208601612f96565b6129ab816130eb565b840191505092915050565b60006129c3602383612dc1565b91506129ce826130fc565b604082019050919050565b60006129e6602683612dc1565b91506129f18261314b565b604082019050919050565b6000612a09602283612dc1565b9150612a148261319a565b604082019050919050565b6000612a2c601b83612dc1565b9150612a37826131e9565b602082019050919050565b6000612a4f602183612dc1565b9150612a5a82613212565b604082019050919050565b6000612a72602083612dc1565b9150612a7d82613261565b602082019050919050565b6000612a95602983612dc1565b9150612aa08261328a565b604082019050919050565b6000612ab8602583612dc1565b9150612ac3826132d9565b604082019050919050565b6000612adb602483612dc1565b9150612ae682613328565b604082019050919050565b612afa81612f37565b82525050565b612b0981612f41565b82525050565b6000602082019050612b2460008301846128e3565b92915050565b6000602082019050612b3f60008301846128c5565b92915050565b6000602082019050612b5a6000830184612950565b92915050565b6000602082019050612b75600083018461295f565b92915050565b60006020820190508181036000830152612b95818461297d565b905092915050565b60006020820190508181036000830152612bb6816129b6565b9050919050565b60006020820190508181036000830152612bd6816129d9565b9050919050565b60006020820190508181036000830152612bf6816129fc565b9050919050565b60006020820190508181036000830152612c1681612a1f565b9050919050565b60006020820190508181036000830152612c3681612a42565b9050919050565b60006020820190508181036000830152612c5681612a65565b9050919050565b60006020820190508181036000830152612c7681612a88565b9050919050565b60006020820190508181036000830152612c9681612aab565b9050919050565b60006020820190508181036000830152612cb681612ace565b9050919050565b6000602082019050612cd26000830184612af1565b92915050565b6000604082019050612ced6000830185612af1565b8181036020830152612cff81846128f2565b90509392505050565b600060a082019050612d1d6000830188612af1565b612d2a602083018761296e565b8181036040830152612d3c81866128f2565b9050612d4b60608301856128e3565b612d586080830184612af1565b9695505050505050565b6000602082019050612d776000830184612b00565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612ddd82612f37565b9150612de883612f37565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612e1d57612e1c612ffb565b5b828201905092915050565b6000612e3382612f37565b9150612e3e83612f37565b925082612e4e57612e4d61302a565b5b828204905092915050565b6000612e6482612f37565b9150612e6f83612f37565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612ea857612ea7612ffb565b5b828202905092915050565b6000612ebe82612f37565b9150612ec983612f37565b925082821015612edc57612edb612ffb565b5b828203905092915050565b6000612ef282612f17565b9050919050565b6000612f0482612f17565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000612f5982612f72565b9050919050565b6000612f6b82612f37565b9050919050565b6000612f7d82612f84565b9050919050565b6000612f8f82612f17565b9050919050565b60005b83811015612fb4578082015181840152602081019050612f99565b83811115612fc3576000848401525b50505050565b60006002820490506001821680612fe157607f821691505b60208210811415612ff557612ff4613059565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b61338081612ee7565b811461338b57600080fd5b50565b61339781612f0b565b81146133a257600080fd5b50565b6133ae81612f37565b81146133b957600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220499c966b72247a61e65d0317b71013782a84b14edf19a3d6eb80d70e1b8b1adc64736f6c63430008070033

Deployed Bytecode

0x6080604052600436106101fd5760003560e01c8063844d591c1161010d578063b2bdfa7b116100a0578063da00097d1161006f578063da00097d1461075a578063dd62ed3e14610785578063f0cd1dac146107c2578063f2fde38b146107ed578063fae926121461081657610204565b8063b2bdfa7b146106b0578063c49b9a80146106db578063c816841b14610704578063d158272d1461072f57610204565b8063a073d37f116100dc578063a073d37f146105e2578063a457c2d71461060d578063a5d69d1f1461064a578063a9059cbb1461067357610204565b8063844d591c1461054c5780638da5cb5b14610575578063914eb66a146105a057806395d89b41146105b757610204565b8063395093511161019057806352f7c9881161015f57806352f7c988146104535780635342acb41461047c578063557ed1ba146104b957806370a08231146104e457806382eefb431461052157610204565b806339509351146103855780633b97084a146103c25780633ecad271146103eb5780634a74bb021461042857610204565b806323b872dd116101cc57806323b872dd146102c757806327c8f835146103045780632b112e491461032f578063313ce5671461035a57610204565b806306fdde0314610209578063095ea7b3146102345780631694505e1461027157806318160ddd1461029c57610204565b3661020457005b600080fd5b34801561021557600080fd5b5061021e61083f565b60405161022b9190612b7b565b60405180910390f35b34801561024057600080fd5b5061025b600480360381019061025691906127d3565b6108d1565b6040516102689190612b45565b60405180910390f35b34801561027d57600080fd5b506102866108ef565b6040516102939190612b60565b60405180910390f35b3480156102a857600080fd5b506102b1610915565b6040516102be9190612cbd565b60405180910390f35b3480156102d357600080fd5b506102ee60048036038101906102e99190612740565b61091f565b6040516102fb9190612b45565b60405180910390f35b34801561031057600080fd5b506103196109f9565b6040516103269190612b0f565b60405180910390f35b34801561033b57600080fd5b50610344610a1f565b6040516103519190612cbd565b60405180910390f35b34801561036657600080fd5b5061036f610a65565b60405161037c9190612d62565b60405180910390f35b34801561039157600080fd5b506103ac60048036038101906103a791906127d3565b610a7c565b6040516103b99190612b45565b60405180910390f35b3480156103ce57600080fd5b506103e960048036038101906103e49190612840565b610b2f565b005b3480156103f757600080fd5b50610412600480360381019061040d91906126a6565b610bce565b60405161041f9190612b45565b60405180910390f35b34801561043457600080fd5b5061043d610bee565b60405161044a9190612b45565b60405180910390f35b34801561045f57600080fd5b5061047a6004803603810190610475919061286d565b610c01565b005b34801561048857600080fd5b506104a3600480360381019061049e91906126a6565b610ca8565b6040516104b09190612b45565b60405180910390f35b3480156104c557600080fd5b506104ce610cc8565b6040516104db9190612cbd565b60405180910390f35b3480156104f057600080fd5b5061050b600480360381019061050691906126a6565b610cd0565b6040516105189190612cbd565b60405180910390f35b34801561052d57600080fd5b50610536610d19565b6040516105439190612cbd565b60405180910390f35b34801561055857600080fd5b50610573600480360381019061056e9190612793565b610d1f565b005b34801561058157600080fd5b5061058a610e0f565b6040516105979190612b0f565b60405180910390f35b3480156105ac57600080fd5b506105b5610e38565b005b3480156105c357600080fd5b506105cc610f8b565b6040516105d99190612b7b565b60405180910390f35b3480156105ee57600080fd5b506105f761101d565b6040516106049190612cbd565b60405180910390f35b34801561061957600080fd5b50610634600480360381019061062f91906127d3565b611027565b6040516106419190612b45565b60405180910390f35b34801561065657600080fd5b50610671600480360381019061066c9190612813565b6110f4565b005b34801561067f57600080fd5b5061069a600480360381019061069591906127d3565b6111a6565b6040516106a79190612b45565b60405180910390f35b3480156106bc57600080fd5b506106c56111c5565b6040516106d29190612b0f565b60405180910390f35b3480156106e757600080fd5b5061070260048036038101906106fd9190612813565b6111e9565b005b34801561071057600080fd5b506107196112d2565b6040516107269190612b0f565b60405180910390f35b34801561073b57600080fd5b506107446112f8565b6040516107519190612b2a565b60405180910390f35b34801561076657600080fd5b5061076f61131e565b60405161077c9190612b45565b60405180910390f35b34801561079157600080fd5b506107ac60048036038101906107a79190612700565b611331565b6040516107b99190612cbd565b60405180910390f35b3480156107ce57600080fd5b506107d76113b8565b6040516107e49190612cbd565b60405180910390f35b3480156107f957600080fd5b50610814600480360381019061080f91906126a6565b6113be565b005b34801561082257600080fd5b5061083d600480360381019061083891906126a6565b611580565b005b60606001805461084e90612fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461087a90612fc9565b80156108c75780601f1061089c576101008083540402835291602001916108c7565b820191906000526020600020905b8154815290600101906020018083116108aa57829003601f168201915b5050505050905090565b60006108e56108de611659565b8484611661565b6001905092915050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b54905090565b600061092c84848461182c565b506109ee84610939611659565b6109e9856040518060600160405280602881526020016133bd60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061099f611659565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cd09092919063ffffffff16565b611661565b600190509392505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610a60610a4f600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610cd0565b600b54611d3490919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b6000610b25610a89611659565b84610b208560066000610a9a611659565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d7e90919063ffffffff16565b611661565b6001905092915050565b610b37611659565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbb90612c3d565b60405180910390fd5b80600c8190555050565b60086020528060005260406000206000915054906101000a900460ff1681565b600e60159054906101000a900460ff1681565b610c09611659565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8d90612c3d565b60405180910390fd5b8160098190555080600a819055505050565b60076020528060005260406000206000915054906101000a900460ff1681565b600042905090565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600a5481565b610d27611659565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610db4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dab90612c3d565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610e40611659565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ecd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec490612c3d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b606060028054610f9a90612fc9565b80601f0160208091040260200160405190810160405280929190818152602001828054610fc690612fc9565b80156110135780601f10610fe857610100808354040283529160200191611013565b820191906000526020600020905b815481529060010190602001808311610ff657829003601f168201915b5050505050905090565b6000600c54905090565b60006110ea611034611659565b846110e5856040518060600160405280602581526020016133e5602591396006600061105e611659565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cd09092919063ffffffff16565b611661565b6001905092915050565b6110fc611659565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611189576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118090612c3d565b60405180910390fd5b80600e60166101000a81548160ff02191690831515021790555050565b60006111ba6111b3611659565b848461182c565b506001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6111f1611659565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461127e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127590612c3d565b60405180910390fd5b80600e60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516112c79190612b45565b60405180910390a150565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e60169054906101000a900460ff1681565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b6113c6611659565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144a90612c3d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ba90612bbd565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611588611659565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160c90612c3d565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c890612c9d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611741576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173890612bdd565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161181f9190612cbd565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561189d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189490612c7d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561190d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190490612b9d565b60405180910390fd5b60008211611950576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194790612c5d565b60405180910390fd5b600e60149054906101000a900460ff161561197757611970848484611ddc565b9050611cc9565b600061198230610cd0565b90506000600c5482101590508080156119a85750600e60149054906101000a900460ff16155b80156119fe5750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611a165750600e60159054906101000a900460ff165b15611a4057600e60169054906101000a900460ff1615611a3657600c5491505b611a3f82611faf565b5b611ac9846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cd09092919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611baf5750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611bc357611bbe87878761202d565b611bc5565b845b9050611c1981600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d7e90919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611cb99190612cbd565b60405180910390a3600193505050505b9392505050565b6000838311158290611d18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0f9190612b7b565b60405180910390fd5b5060008385611d279190612eb3565b9050809150509392505050565b6000611d7683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611cd0565b905092915050565b6000808284611d8d9190612dd2565b905083811015611dd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc990612bfd565b60405180910390fd5b8091505092915050565b6000611e67826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cd09092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611efc82600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d7e90919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f9c9190612cbd565b60405180910390a3600190509392505050565b6001600e60146101000a81548160ff021916908315150217905550611fd381612254565b6000479050600081111561200e5761200d600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826124df565b5b506000600e60146101000a81548160ff02191690831515021790555050565b60008060009050600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156120b5576120ae60646120a06009548661252a90919063ffffffff16565b6125a590919063ffffffff16565b9050612133565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156121325761212f6064612121600a548661252a90919063ffffffff16565b6125a590919063ffffffff16565b90505b5b60008111156122375761218e81600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d7e90919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161222e9190612cbd565b60405180910390a35b61224a8184611d3490919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff811115612271576122706130b7565b5b60405190808252806020026020018201604052801561229f5781602001602082028036833780820191505090505b50905030816000815181106122b7576122b6613088565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561235957600080fd5b505afa15801561236d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239191906126d3565b816001815181106123a5576123a4613088565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061240c30600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611661565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612470959493929190612d08565b600060405180830381600087803b15801561248a57600080fd5b505af115801561249e573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516124d3929190612cd8565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612525573d6000803e3d6000fd5b505050565b60008083141561253d576000905061259f565b6000828461254b9190612e59565b905082848261255a9190612e28565b1461259a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259190612c1d565b60405180910390fd5b809150505b92915050565b60006125e783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125ef565b905092915050565b60008083118290612636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262d9190612b7b565b60405180910390fd5b50600083856126459190612e28565b9050809150509392505050565b60008135905061266181613377565b92915050565b60008151905061267681613377565b92915050565b60008135905061268b8161338e565b92915050565b6000813590506126a0816133a5565b92915050565b6000602082840312156126bc576126bb6130e6565b5b60006126ca84828501612652565b91505092915050565b6000602082840312156126e9576126e86130e6565b5b60006126f784828501612667565b91505092915050565b60008060408385031215612717576127166130e6565b5b600061272585828601612652565b925050602061273685828601612652565b9150509250929050565b600080600060608486031215612759576127586130e6565b5b600061276786828701612652565b935050602061277886828701612652565b925050604061278986828701612691565b9150509250925092565b600080604083850312156127aa576127a96130e6565b5b60006127b885828601612652565b92505060206127c98582860161267c565b9150509250929050565b600080604083850312156127ea576127e96130e6565b5b60006127f885828601612652565b925050602061280985828601612691565b9150509250929050565b600060208284031215612829576128286130e6565b5b60006128378482850161267c565b91505092915050565b600060208284031215612856576128556130e6565b5b600061286484828501612691565b91505092915050565b60008060408385031215612884576128836130e6565b5b600061289285828601612691565b92505060206128a385828601612691565b9150509250929050565b60006128b983836128d4565b60208301905092915050565b6128ce81612ef9565b82525050565b6128dd81612ee7565b82525050565b6128ec81612ee7565b82525050565b60006128fd82612d8d565b6129078185612db0565b935061291283612d7d565b8060005b8381101561294357815161292a88826128ad565b975061293583612da3565b925050600181019050612916565b5085935050505092915050565b61295981612f0b565b82525050565b61296881612f4e565b82525050565b61297781612f60565b82525050565b600061298882612d98565b6129928185612dc1565b93506129a2818560208601612f96565b6129ab816130eb565b840191505092915050565b60006129c3602383612dc1565b91506129ce826130fc565b604082019050919050565b60006129e6602683612dc1565b91506129f18261314b565b604082019050919050565b6000612a09602283612dc1565b9150612a148261319a565b604082019050919050565b6000612a2c601b83612dc1565b9150612a37826131e9565b602082019050919050565b6000612a4f602183612dc1565b9150612a5a82613212565b604082019050919050565b6000612a72602083612dc1565b9150612a7d82613261565b602082019050919050565b6000612a95602983612dc1565b9150612aa08261328a565b604082019050919050565b6000612ab8602583612dc1565b9150612ac3826132d9565b604082019050919050565b6000612adb602483612dc1565b9150612ae682613328565b604082019050919050565b612afa81612f37565b82525050565b612b0981612f41565b82525050565b6000602082019050612b2460008301846128e3565b92915050565b6000602082019050612b3f60008301846128c5565b92915050565b6000602082019050612b5a6000830184612950565b92915050565b6000602082019050612b75600083018461295f565b92915050565b60006020820190508181036000830152612b95818461297d565b905092915050565b60006020820190508181036000830152612bb6816129b6565b9050919050565b60006020820190508181036000830152612bd6816129d9565b9050919050565b60006020820190508181036000830152612bf6816129fc565b9050919050565b60006020820190508181036000830152612c1681612a1f565b9050919050565b60006020820190508181036000830152612c3681612a42565b9050919050565b60006020820190508181036000830152612c5681612a65565b9050919050565b60006020820190508181036000830152612c7681612a88565b9050919050565b60006020820190508181036000830152612c9681612aab565b9050919050565b60006020820190508181036000830152612cb681612ace565b9050919050565b6000602082019050612cd26000830184612af1565b92915050565b6000604082019050612ced6000830185612af1565b8181036020830152612cff81846128f2565b90509392505050565b600060a082019050612d1d6000830188612af1565b612d2a602083018761296e565b8181036040830152612d3c81866128f2565b9050612d4b60608301856128e3565b612d586080830184612af1565b9695505050505050565b6000602082019050612d776000830184612b00565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612ddd82612f37565b9150612de883612f37565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612e1d57612e1c612ffb565b5b828201905092915050565b6000612e3382612f37565b9150612e3e83612f37565b925082612e4e57612e4d61302a565b5b828204905092915050565b6000612e6482612f37565b9150612e6f83612f37565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612ea857612ea7612ffb565b5b828202905092915050565b6000612ebe82612f37565b9150612ec983612f37565b925082821015612edc57612edb612ffb565b5b828203905092915050565b6000612ef282612f17565b9050919050565b6000612f0482612f17565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000612f5982612f72565b9050919050565b6000612f6b82612f37565b9050919050565b6000612f7d82612f84565b9050919050565b6000612f8f82612f17565b9050919050565b60005b83811015612fb4578082015181840152602081019050612f99565b83811115612fc3576000848401525b50505050565b60006002820490506001821680612fe157607f821691505b60208210811415612ff557612ff4613059565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b61338081612ee7565b811461338b57600080fd5b50565b61339781612f0b565b81146133a257600080fd5b50565b6133ae81612f37565b81146133b957600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220499c966b72247a61e65d0317b71013782a84b14edf19a3d6eb80d70e1b8b1adc64736f6c63430008070033

Deployed Bytecode Sourcemap

8038:9442:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10584:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11879:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8846:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10861:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13785:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8349:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13242:128;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10770:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11247:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12530:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8609:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8957:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12975:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8552:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6197:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10969:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8708:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12393:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5578:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5792:145;;;;;;;;;;;;;:::i;:::-;;10675:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11750:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11473:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12842:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13610:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5454:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12663:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8894:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8243:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9004:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11096:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8665:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5945:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13120:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10584:83;10621:13;10654:5;10647:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10584:83;:::o;11879:161::-;11954:4;11971:39;11980:12;:10;:12::i;:::-;11994:7;12003:6;11971:8;:39::i;:::-;12028:4;12021:11;;11879:161;;;;:::o;8846:41::-;;;;;;;;;;;;;:::o;10861:100::-;10914:7;10941:12;;10934:19;;10861:100;:::o;13785:313::-;13883:4;13900:36;13910:6;13918:9;13929:6;13900:9;:36::i;:::-;;13947:121;13956:6;13964:12;:10;:12::i;:::-;13978:89;14016:6;13978:89;;;;;;;;;;;;;;;;;:11;:19;13990:6;13978:19;;;;;;;;;;;;;;;:33;13998:12;:10;:12::i;:::-;13978:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;13947:8;:121::i;:::-;14086:4;14079:11;;13785:313;;;;;:::o;8349:71::-;;;;;;;;;;;;;:::o;13242:128::-;13295:7;13322:40;13339:22;13349:11;;;;;;;;;;;13339:9;:22::i;:::-;13322:12;;:16;;:40;;;;:::i;:::-;13315:47;;13242:128;:::o;10770:83::-;10811:5;10836:9;;;;;;;;;;;10829:16;;10770:83;:::o;11247:218::-;11335:4;11352:83;11361:12;:10;:12::i;:::-;11375:7;11384:50;11423:10;11384:11;:25;11396:12;:10;:12::i;:::-;11384:25;;;;;;;;;;;;;;;:34;11410:7;11384:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;11352:8;:83::i;:::-;11453:4;11446:11;;11247:218;;;;:::o;12530:125::-;5715:12;:10;:12::i;:::-;5705:22;;:6;;;;;;;;;;:22;;;5697:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12639:8:::1;12612:24;:35;;;;12530:125:::0;:::o;8609:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;8957:40::-;;;;;;;;;;;;;:::o;12975:137::-;5715:12;:10;:12::i;:::-;5705:22;;:6;;;;;;;;;;:22;;;5697:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13065:3:::1;13045:17;:23;;;;13100:4;13079:18;:25;;;;12975:137:::0;;:::o;8552:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;6197:90::-;6237:7;6264:15;6257:22;;6197:90;:::o;10969:119::-;11035:7;11062:9;:18;11072:7;11062:18;;;;;;;;;;;;;;;;11055:25;;10969:119;;;:::o;8708:37::-;;;;:::o;12393:129::-;5715:12;:10;:12::i;:::-;5705:22;;:6;;;;;;;;;;:22;;;5697:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12506:8:::1;12482:12;:21;12495:7;12482:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;12393:129:::0;;:::o;5578:79::-;5616:7;5643:6;;;;;;;;;;;5636:13;;5578:79;:::o;5792:145::-;5715:12;:10;:12::i;:::-;5705:22;;:6;;;;;;;;;;:22;;;5697:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5896:1:::1;5859:40;;5880:6;::::0;::::1;;;;;;;;5859:40;;;;;;;;;;;;5927:1;5910:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;5792:145::o:0;10675:87::-;10714:13;10747:7;10740:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10675:87;:::o;11750:121::-;11812:7;11839:24;;11832:31;;11750:121;:::o;11473:269::-;11566:4;11583:129;11592:12;:10;:12::i;:::-;11606:7;11615:96;11654:15;11615:96;;;;;;;;;;;;;;;;;:11;:25;11627:12;:10;:12::i;:::-;11615:25;;;;;;;;;;;;;;;:34;11641:7;11615:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;11583:8;:129::i;:::-;11730:4;11723:11;;11473:269;;;;:::o;12842:125::-;5715:12;:10;:12::i;:::-;5705:22;;:6;;;;;;;;;;:22;;;5697:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12951:8:::1;12923:25;;:36;;;;;;;;;;;;;;;;;;12842:125:::0;:::o;13610:167::-;13688:4;13705:42;13715:12;:10;:12::i;:::-;13729:9;13740:6;13705:9;:42::i;:::-;;13765:4;13758:11;;13610:167;;;;:::o;5454:21::-;;;;;;;;;;;;:::o;12663:171::-;5715:12;:10;:12::i;:::-;5705:22;;:6;;;;;;;;;;:22;;;5697:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12764:8:::1;12740:21;;:32;;;;;;;;;;;;;;;;;;12788:38;12817:8;12788:38;;;;;;:::i;:::-;;;;;;;;12663:171:::0;:::o;8894:26::-;;;;;;;;;;;;;:::o;8243:99::-;;;;;;;;;;;;;:::o;9004:45::-;;;;;;;;;;;;;:::o;11096:143::-;11177:7;11204:11;:18;11216:5;11204:18;;;;;;;;;;;;;;;:27;11223:7;11204:27;;;;;;;;;;;;;;;;11197:34;;11096:143;;;;:::o;8665:36::-;;;;:::o;5945:244::-;5715:12;:10;:12::i;:::-;5705:22;;:6;;;;;;;;;;:22;;;5697:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6054:1:::1;6034:22;;:8;:22;;;;6026:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6144:8;6115:38;;6136:6;::::0;::::1;;;;;;;;6115:38;;;;;;;;;;;;6173:8;6164:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;5945:244:::0;:::o;13120:114::-;5715:12;:10;:12::i;:::-;5705:22;;:6;;;;;;;;;;:22;;;5697:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13221:4:::1;13188:22;;:38;;;;;;;;;;;;;;;;;;13120:114:::0;:::o;102:115::-;155:15;198:10;183:26;;102:115;:::o;12048:337::-;12158:1;12141:19;;:5;:19;;;;12133:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12239:1;12220:21;;:7;:21;;;;12212:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12323:6;12293:11;:18;12305:5;12293:18;;;;;;;;;;;;;;;:27;12312:7;12293:27;;;;;;;;;;;;;;;:36;;;;12361:7;12345:32;;12354:5;12345:32;;;12370:6;12345:32;;;;;;:::i;:::-;;;;;;;;12048:337;;;:::o;14106:1430::-;14193:4;14238:1;14220:20;;:6;:20;;;;14212:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;14322:1;14301:23;;:9;:23;;;;14293:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14392:1;14383:6;:10;14375:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14465:16;;;;;;;;;;;14462:1067;;;14514:41;14529:6;14537:9;14548:6;14514:14;:41::i;:::-;14507:48;;;;14462:1067;14608:28;14639:24;14657:4;14639:9;:24::i;:::-;14608:55;;14678:28;14733:24;;14709:20;:48;;14678:79;;14778:23;:44;;;;;14806:16;;;;;;;;;;;14805:17;14778:44;:69;;;;;14827:12;:20;14840:6;14827:20;;;;;;;;;;;;;;;;;;;;;;;;;14826:21;14778:69;:94;;;;;14851:21;;;;;;;;;;;14778:94;14774:301;;;14909:25;;;;;;;;;;;14906:98;;;14980:24;;14957:47;;14906:98;15023:36;15038:20;15023:14;:36::i;:::-;14774:301;15111:53;15133:6;15111:53;;;;;;;;;;;;;;;;;:9;:17;15121:6;15111:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;15091:9;:17;15101:6;15091:17;;;;;;;;;;;;;;;:73;;;;15181:19;15204:17;:25;15222:6;15204:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;15233:17;:28;15251:9;15233:28;;;;;;;;;;;;;;;;;;;;;;;;;15204:57;15203:147;;15316:34;15324:6;15332:9;15343:6;15316:7;:34::i;:::-;15203:147;;;15307:6;15203:147;15181:169;;15392:37;15417:11;15392:9;:20;15402:9;15392:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;15369:9;:20;15379:9;15369:20;;;;;;;;;;;;;;;:60;;;;15468:9;15451:40;;15460:6;15451:40;;;15479:11;15451:40;;;;;;:::i;:::-;;;;;;;;15513:4;15506:11;;;;;14106:1430;;;;;;:::o;1524:192::-;1610:7;1643:1;1638;:6;;1646:12;1630:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1670:9;1686:1;1682;:5;;;;:::i;:::-;1670:17;;1707:1;1700:8;;;1524:192;;;;;:::o;1380:136::-;1438:7;1465:43;1469:1;1472;1465:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1458:50;;1380:136;;;;:::o;1191:181::-;1249:7;1269:9;1285:1;1281;:5;;;;:::i;:::-;1269:17;;1310:1;1305;:6;;1297:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1363:1;1356:8;;;1191:181;;;;:::o;15544:330::-;15637:4;15674:53;15696:6;15674:53;;;;;;;;;;;;;;;;;:9;:17;15684:6;15674:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;15654:9;:17;15664:6;15654:17;;;;;;;;;;;;;;;:73;;;;15761:32;15786:6;15761:9;:20;15771:9;15761:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;15738:9;:20;15748:9;15738:20;;;;;;;;;;;;;;;:55;;;;15826:9;15809:35;;15818:6;15809:35;;;15837:6;15809:35;;;;;;:::i;:::-;;;;;;;;15862:4;15855:11;;15544:330;;;;;:::o;15884:314::-;9479:4;9460:16;;:23;;;;;;;;;;;;;;;;;;15988:25:::1;16005:7;15988:16;:25::i;:::-;16024:22;16049:21;16024:46;;16112:1;16095:14;:18;16092:96;;;16128:60;16149:22;;;;;;;;;;;16173:14;16128:20;:60::i;:::-;16092:96;15945:253;9525:5:::0;9506:16;;:24;;;;;;;;;;;;;;;;;;15884:314;:::o;16876:594::-;16962:7;16984:17;17004:1;16984:21;;17019:12;:20;17032:6;17019:20;;;;;;;;;;;;;;;;;;;;;;;;;17016:223;;;17068:38;17102:3;17068:29;17079:17;;17068:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;17056:50;;17016:223;;;17136:12;:23;17149:9;17136:23;;;;;;;;;;;;;;;;;;;;;;;;;17133:106;;;17188:39;17223:3;17188:30;17199:18;;17188:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;17176:51;;17133:106;17016:223;17264:1;17252:9;:13;17249:173;;;17309:39;17338:9;17309;:24;17327:4;17309:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;17282:9;:24;17300:4;17282:24;;;;;;;;;;;;;;;:66;;;;17393:4;17368:42;;17377:6;17368:42;;;17400:9;17368:42;;;;;;:::i;:::-;;;;;;;;17249:173;17441:21;17452:9;17441:6;:10;;:21;;;;:::i;:::-;17434:28;;;16876:594;;;;;:::o;16206:658::-;16332:21;16370:1;16356:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16332:40;;16401:4;16383;16388:1;16383:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;16427:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16417:4;16422:1;16417:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;16462:62;16479:4;16494:15;;;;;;;;;;;16512:11;16462:8;:62::i;:::-;16563:15;;;;;;;;;;;:66;;;16644:11;16670:1;16714:4;16741;16777:15;16563:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16821:35;16838:11;16851:4;16821:35;;;;;;;:::i;:::-;;;;;;;;16261:603;16206:658;:::o;13378:126::-;13470:9;:18;;:26;13489:6;13470:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13378:126;;:::o;1724:250::-;1782:7;1811:1;1806;:6;1802:47;;;1836:1;1829:8;;;;1802:47;1861:9;1877:1;1873;:5;;;;:::i;:::-;1861:17;;1906:1;1901;1897;:5;;;;:::i;:::-;:10;1889:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1965:1;1958:8;;;1724:250;;;;;:::o;1982:132::-;2040:7;2067:39;2071:1;2074;2067:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2060:46;;1982:132;;;;:::o;2122:278::-;2208:7;2240:1;2236;:5;2243:12;2228:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2267:9;2283:1;2279;:5;;;;:::i;:::-;2267:17;;2391:1;2384:8;;;2122:278;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;301:133;;;;:::o;440:139::-;486:5;524:6;511:20;502:29;;540:33;567:5;540:33;:::i;:::-;440:139;;;;:::o;585:329::-;644:6;693:2;681:9;672:7;668:23;664:32;661:119;;;699:79;;:::i;:::-;661:119;819:1;844:53;889:7;880:6;869:9;865:22;844:53;:::i;:::-;834:63;;790:117;585:329;;;;:::o;920:351::-;990:6;1039:2;1027:9;1018:7;1014:23;1010:32;1007:119;;;1045:79;;:::i;:::-;1007:119;1165:1;1190:64;1246:7;1237:6;1226:9;1222:22;1190:64;:::i;:::-;1180:74;;1136:128;920:351;;;;:::o;1277:474::-;1345:6;1353;1402:2;1390:9;1381:7;1377:23;1373:32;1370:119;;;1408:79;;:::i;:::-;1370:119;1528:1;1553:53;1598:7;1589:6;1578:9;1574:22;1553:53;:::i;:::-;1543:63;;1499:117;1655:2;1681:53;1726:7;1717:6;1706:9;1702:22;1681:53;:::i;:::-;1671:63;;1626:118;1277:474;;;;;:::o;1757:619::-;1834:6;1842;1850;1899:2;1887:9;1878:7;1874:23;1870:32;1867:119;;;1905:79;;:::i;:::-;1867:119;2025:1;2050:53;2095:7;2086:6;2075:9;2071:22;2050:53;:::i;:::-;2040:63;;1996:117;2152:2;2178:53;2223:7;2214:6;2203:9;2199:22;2178:53;:::i;:::-;2168:63;;2123:118;2280:2;2306:53;2351:7;2342:6;2331:9;2327:22;2306:53;:::i;:::-;2296:63;;2251:118;1757:619;;;;;:::o;2382:468::-;2447:6;2455;2504:2;2492:9;2483:7;2479:23;2475:32;2472:119;;;2510:79;;:::i;:::-;2472:119;2630:1;2655:53;2700:7;2691:6;2680:9;2676:22;2655:53;:::i;:::-;2645:63;;2601:117;2757:2;2783:50;2825:7;2816:6;2805:9;2801:22;2783:50;:::i;:::-;2773:60;;2728:115;2382:468;;;;;:::o;2856:474::-;2924:6;2932;2981:2;2969:9;2960:7;2956:23;2952:32;2949:119;;;2987:79;;:::i;:::-;2949:119;3107:1;3132:53;3177:7;3168:6;3157:9;3153:22;3132:53;:::i;:::-;3122:63;;3078:117;3234:2;3260:53;3305:7;3296:6;3285:9;3281:22;3260:53;:::i;:::-;3250:63;;3205:118;2856:474;;;;;:::o;3336:323::-;3392:6;3441:2;3429:9;3420:7;3416:23;3412:32;3409:119;;;3447:79;;:::i;:::-;3409:119;3567:1;3592:50;3634:7;3625:6;3614:9;3610:22;3592:50;:::i;:::-;3582:60;;3538:114;3336:323;;;;:::o;3665:329::-;3724:6;3773:2;3761:9;3752:7;3748:23;3744:32;3741:119;;;3779:79;;:::i;:::-;3741:119;3899:1;3924:53;3969:7;3960:6;3949:9;3945:22;3924:53;:::i;:::-;3914:63;;3870:117;3665:329;;;;:::o;4000:474::-;4068:6;4076;4125:2;4113:9;4104:7;4100:23;4096:32;4093:119;;;4131:79;;:::i;:::-;4093:119;4251:1;4276:53;4321:7;4312:6;4301:9;4297:22;4276:53;:::i;:::-;4266:63;;4222:117;4378:2;4404:53;4449:7;4440:6;4429:9;4425:22;4404:53;:::i;:::-;4394:63;;4349:118;4000:474;;;;;:::o;4480:179::-;4549:10;4570:46;4612:3;4604:6;4570:46;:::i;:::-;4648:4;4643:3;4639:14;4625:28;;4480:179;;;;:::o;4665:142::-;4768:32;4794:5;4768:32;:::i;:::-;4763:3;4756:45;4665:142;;:::o;4813:108::-;4890:24;4908:5;4890:24;:::i;:::-;4885:3;4878:37;4813:108;;:::o;4927:118::-;5014:24;5032:5;5014:24;:::i;:::-;5009:3;5002:37;4927:118;;:::o;5081:732::-;5200:3;5229:54;5277:5;5229:54;:::i;:::-;5299:86;5378:6;5373:3;5299:86;:::i;:::-;5292:93;;5409:56;5459:5;5409:56;:::i;:::-;5488:7;5519:1;5504:284;5529:6;5526:1;5523:13;5504:284;;;5605:6;5599:13;5632:63;5691:3;5676:13;5632:63;:::i;:::-;5625:70;;5718:60;5771:6;5718:60;:::i;:::-;5708:70;;5564:224;5551:1;5548;5544:9;5539:14;;5504:284;;;5508:14;5804:3;5797:10;;5205:608;;;5081:732;;;;:::o;5819:109::-;5900:21;5915:5;5900:21;:::i;:::-;5895:3;5888:34;5819:109;;:::o;5934:183::-;6047:63;6104:5;6047:63;:::i;:::-;6042:3;6035:76;5934:183;;:::o;6123:147::-;6218:45;6257:5;6218:45;:::i;:::-;6213:3;6206:58;6123:147;;:::o;6276:364::-;6364:3;6392:39;6425:5;6392:39;:::i;:::-;6447:71;6511:6;6506:3;6447:71;:::i;:::-;6440:78;;6527:52;6572:6;6567:3;6560:4;6553:5;6549:16;6527:52;:::i;:::-;6604:29;6626:6;6604:29;:::i;:::-;6599:3;6595:39;6588:46;;6368:272;6276:364;;;;:::o;6646:366::-;6788:3;6809:67;6873:2;6868:3;6809:67;:::i;:::-;6802:74;;6885:93;6974:3;6885:93;:::i;:::-;7003:2;6998:3;6994:12;6987:19;;6646:366;;;:::o;7018:::-;7160:3;7181:67;7245:2;7240:3;7181:67;:::i;:::-;7174:74;;7257:93;7346:3;7257:93;:::i;:::-;7375:2;7370:3;7366:12;7359:19;;7018:366;;;:::o;7390:::-;7532:3;7553:67;7617:2;7612:3;7553:67;:::i;:::-;7546:74;;7629:93;7718:3;7629:93;:::i;:::-;7747:2;7742:3;7738:12;7731:19;;7390:366;;;:::o;7762:::-;7904:3;7925:67;7989:2;7984:3;7925:67;:::i;:::-;7918:74;;8001:93;8090:3;8001:93;:::i;:::-;8119:2;8114:3;8110:12;8103:19;;7762:366;;;:::o;8134:::-;8276:3;8297:67;8361:2;8356:3;8297:67;:::i;:::-;8290:74;;8373:93;8462:3;8373:93;:::i;:::-;8491:2;8486:3;8482:12;8475:19;;8134:366;;;:::o;8506:::-;8648:3;8669:67;8733:2;8728:3;8669:67;:::i;:::-;8662:74;;8745:93;8834:3;8745:93;:::i;:::-;8863:2;8858:3;8854:12;8847:19;;8506:366;;;:::o;8878:::-;9020:3;9041:67;9105:2;9100:3;9041:67;:::i;:::-;9034:74;;9117:93;9206:3;9117:93;:::i;:::-;9235:2;9230:3;9226:12;9219:19;;8878:366;;;:::o;9250:::-;9392:3;9413:67;9477:2;9472:3;9413:67;:::i;:::-;9406:74;;9489:93;9578:3;9489:93;:::i;:::-;9607:2;9602:3;9598:12;9591:19;;9250:366;;;:::o;9622:::-;9764:3;9785:67;9849:2;9844:3;9785:67;:::i;:::-;9778:74;;9861:93;9950:3;9861:93;:::i;:::-;9979:2;9974:3;9970:12;9963:19;;9622:366;;;:::o;9994:118::-;10081:24;10099:5;10081:24;:::i;:::-;10076:3;10069:37;9994:118;;:::o;10118:112::-;10201:22;10217:5;10201:22;:::i;:::-;10196:3;10189:35;10118:112;;:::o;10236:222::-;10329:4;10367:2;10356:9;10352:18;10344:26;;10380:71;10448:1;10437:9;10433:17;10424:6;10380:71;:::i;:::-;10236:222;;;;:::o;10464:254::-;10573:4;10611:2;10600:9;10596:18;10588:26;;10624:87;10708:1;10697:9;10693:17;10684:6;10624:87;:::i;:::-;10464:254;;;;:::o;10724:210::-;10811:4;10849:2;10838:9;10834:18;10826:26;;10862:65;10924:1;10913:9;10909:17;10900:6;10862:65;:::i;:::-;10724:210;;;;:::o;10940:274::-;11059:4;11097:2;11086:9;11082:18;11074:26;;11110:97;11204:1;11193:9;11189:17;11180:6;11110:97;:::i;:::-;10940:274;;;;:::o;11220:313::-;11333:4;11371:2;11360:9;11356:18;11348:26;;11420:9;11414:4;11410:20;11406:1;11395:9;11391:17;11384:47;11448:78;11521:4;11512:6;11448:78;:::i;:::-;11440:86;;11220:313;;;;:::o;11539:419::-;11705:4;11743:2;11732:9;11728:18;11720:26;;11792:9;11786:4;11782:20;11778:1;11767:9;11763:17;11756:47;11820:131;11946:4;11820:131;:::i;:::-;11812:139;;11539:419;;;:::o;11964:::-;12130:4;12168:2;12157:9;12153:18;12145:26;;12217:9;12211:4;12207:20;12203:1;12192:9;12188:17;12181:47;12245:131;12371:4;12245:131;:::i;:::-;12237:139;;11964:419;;;:::o;12389:::-;12555:4;12593:2;12582:9;12578:18;12570:26;;12642:9;12636:4;12632:20;12628:1;12617:9;12613:17;12606:47;12670:131;12796:4;12670:131;:::i;:::-;12662:139;;12389:419;;;:::o;12814:::-;12980:4;13018:2;13007:9;13003:18;12995:26;;13067:9;13061:4;13057:20;13053:1;13042:9;13038:17;13031:47;13095:131;13221:4;13095:131;:::i;:::-;13087:139;;12814:419;;;:::o;13239:::-;13405:4;13443:2;13432:9;13428:18;13420:26;;13492:9;13486:4;13482:20;13478:1;13467:9;13463:17;13456:47;13520:131;13646:4;13520:131;:::i;:::-;13512:139;;13239:419;;;:::o;13664:::-;13830:4;13868:2;13857:9;13853:18;13845:26;;13917:9;13911:4;13907:20;13903:1;13892:9;13888:17;13881:47;13945:131;14071:4;13945:131;:::i;:::-;13937:139;;13664:419;;;:::o;14089:::-;14255:4;14293:2;14282:9;14278:18;14270:26;;14342:9;14336:4;14332:20;14328:1;14317:9;14313:17;14306:47;14370:131;14496:4;14370:131;:::i;:::-;14362:139;;14089:419;;;:::o;14514:::-;14680:4;14718:2;14707:9;14703:18;14695:26;;14767:9;14761:4;14757:20;14753:1;14742:9;14738:17;14731:47;14795:131;14921:4;14795:131;:::i;:::-;14787:139;;14514:419;;;:::o;14939:::-;15105:4;15143:2;15132:9;15128:18;15120:26;;15192:9;15186:4;15182:20;15178:1;15167:9;15163:17;15156:47;15220:131;15346:4;15220:131;:::i;:::-;15212:139;;14939:419;;;:::o;15364:222::-;15457:4;15495:2;15484:9;15480:18;15472:26;;15508:71;15576:1;15565:9;15561:17;15552:6;15508:71;:::i;:::-;15364:222;;;;:::o;15592:483::-;15763:4;15801:2;15790:9;15786:18;15778:26;;15814:71;15882:1;15871:9;15867:17;15858:6;15814:71;:::i;:::-;15932:9;15926:4;15922:20;15917:2;15906:9;15902:18;15895:48;15960:108;16063:4;16054:6;15960:108;:::i;:::-;15952:116;;15592:483;;;;;:::o;16081:831::-;16344:4;16382:3;16371:9;16367:19;16359:27;;16396:71;16464:1;16453:9;16449:17;16440:6;16396:71;:::i;:::-;16477:80;16553:2;16542:9;16538:18;16529:6;16477:80;:::i;:::-;16604:9;16598:4;16594:20;16589:2;16578:9;16574:18;16567:48;16632:108;16735:4;16726:6;16632:108;:::i;:::-;16624:116;;16750:72;16818:2;16807:9;16803:18;16794:6;16750:72;:::i;:::-;16832:73;16900:3;16889:9;16885:19;16876:6;16832:73;:::i;:::-;16081:831;;;;;;;;:::o;16918:214::-;17007:4;17045:2;17034:9;17030:18;17022:26;;17058:67;17122:1;17111:9;17107:17;17098:6;17058:67;:::i;:::-;16918:214;;;;:::o;17219:132::-;17286:4;17309:3;17301:11;;17339:4;17334:3;17330:14;17322:22;;17219:132;;;:::o;17357:114::-;17424:6;17458:5;17452:12;17442:22;;17357:114;;;:::o;17477:99::-;17529:6;17563:5;17557:12;17547:22;;17477:99;;;:::o;17582:113::-;17652:4;17684;17679:3;17675:14;17667:22;;17582:113;;;:::o;17701:184::-;17800:11;17834:6;17829:3;17822:19;17874:4;17869:3;17865:14;17850:29;;17701:184;;;;:::o;17891:169::-;17975:11;18009:6;18004:3;17997:19;18049:4;18044:3;18040:14;18025:29;;17891:169;;;;:::o;18066:305::-;18106:3;18125:20;18143:1;18125:20;:::i;:::-;18120:25;;18159:20;18177:1;18159:20;:::i;:::-;18154:25;;18313:1;18245:66;18241:74;18238:1;18235:81;18232:107;;;18319:18;;:::i;:::-;18232:107;18363:1;18360;18356:9;18349:16;;18066:305;;;;:::o;18377:185::-;18417:1;18434:20;18452:1;18434:20;:::i;:::-;18429:25;;18468:20;18486:1;18468:20;:::i;:::-;18463:25;;18507:1;18497:35;;18512:18;;:::i;:::-;18497:35;18554:1;18551;18547:9;18542:14;;18377:185;;;;:::o;18568:348::-;18608:7;18631:20;18649:1;18631:20;:::i;:::-;18626:25;;18665:20;18683:1;18665:20;:::i;:::-;18660:25;;18853:1;18785:66;18781:74;18778:1;18775:81;18770:1;18763:9;18756:17;18752:105;18749:131;;;18860:18;;:::i;:::-;18749:131;18908:1;18905;18901:9;18890:20;;18568:348;;;;:::o;18922:191::-;18962:4;18982:20;19000:1;18982:20;:::i;:::-;18977:25;;19016:20;19034:1;19016:20;:::i;:::-;19011:25;;19055:1;19052;19049:8;19046:34;;;19060:18;;:::i;:::-;19046:34;19105:1;19102;19098:9;19090:17;;18922:191;;;;:::o;19119:96::-;19156:7;19185:24;19203:5;19185:24;:::i;:::-;19174:35;;19119:96;;;:::o;19221:104::-;19266:7;19295:24;19313:5;19295:24;:::i;:::-;19284:35;;19221:104;;;:::o;19331:90::-;19365:7;19408:5;19401:13;19394:21;19383:32;;19331:90;;;:::o;19427:126::-;19464:7;19504:42;19497:5;19493:54;19482:65;;19427:126;;;:::o;19559:77::-;19596:7;19625:5;19614:16;;19559:77;;;:::o;19642:86::-;19677:7;19717:4;19710:5;19706:16;19695:27;;19642:86;;;:::o;19734:152::-;19810:9;19843:37;19874:5;19843:37;:::i;:::-;19830:50;;19734:152;;;:::o;19892:121::-;19950:9;19983:24;20001:5;19983:24;:::i;:::-;19970:37;;19892:121;;;:::o;20019:126::-;20069:9;20102:37;20133:5;20102:37;:::i;:::-;20089:50;;20019:126;;;:::o;20151:113::-;20201:9;20234:24;20252:5;20234:24;:::i;:::-;20221:37;;20151:113;;;:::o;20270:307::-;20338:1;20348:113;20362:6;20359:1;20356:13;20348:113;;;20447:1;20442:3;20438:11;20432:18;20428:1;20423:3;20419:11;20412:39;20384:2;20381:1;20377:10;20372:15;;20348:113;;;20479:6;20476:1;20473:13;20470:101;;;20559:1;20550:6;20545:3;20541:16;20534:27;20470:101;20319:258;20270:307;;;:::o;20583:320::-;20627:6;20664:1;20658:4;20654:12;20644:22;;20711:1;20705:4;20701:12;20732:18;20722:81;;20788:4;20780:6;20776:17;20766:27;;20722:81;20850:2;20842:6;20839:14;20819:18;20816:38;20813:84;;;20869:18;;:::i;:::-;20813:84;20634:269;20583:320;;;:::o;20909:180::-;20957:77;20954:1;20947:88;21054:4;21051:1;21044:15;21078:4;21075:1;21068:15;21095:180;21143:77;21140:1;21133:88;21240:4;21237:1;21230:15;21264:4;21261:1;21254:15;21281:180;21329:77;21326:1;21319:88;21426:4;21423:1;21416:15;21450:4;21447:1;21440:15;21467:180;21515:77;21512:1;21505:88;21612:4;21609:1;21602:15;21636:4;21633:1;21626:15;21653:180;21701:77;21698:1;21691:88;21798:4;21795:1;21788:15;21822:4;21819:1;21812:15;21962:117;22071:1;22068;22061:12;22085:102;22126:6;22177:2;22173:7;22168:2;22161:5;22157:14;22153:28;22143:38;;22085:102;;;:::o;22193:222::-;22333:34;22329:1;22321:6;22317:14;22310:58;22402:5;22397:2;22389:6;22385:15;22378:30;22193:222;:::o;22421:225::-;22561:34;22557:1;22549:6;22545:14;22538:58;22630:8;22625:2;22617:6;22613:15;22606:33;22421:225;:::o;22652:221::-;22792:34;22788:1;22780:6;22776:14;22769:58;22861:4;22856:2;22848:6;22844:15;22837:29;22652:221;:::o;22879:177::-;23019:29;23015:1;23007:6;23003:14;22996:53;22879:177;:::o;23062:220::-;23202:34;23198:1;23190:6;23186:14;23179:58;23271:3;23266:2;23258:6;23254:15;23247:28;23062:220;:::o;23288:182::-;23428:34;23424:1;23416:6;23412:14;23405:58;23288:182;:::o;23476:228::-;23616:34;23612:1;23604:6;23600:14;23593:58;23685:11;23680:2;23672:6;23668:15;23661:36;23476:228;:::o;23710:224::-;23850:34;23846:1;23838:6;23834:14;23827:58;23919:7;23914:2;23906:6;23902:15;23895:32;23710:224;:::o;23940:223::-;24080:34;24076:1;24068:6;24064:14;24057:58;24149:6;24144:2;24136:6;24132:15;24125:31;23940:223;:::o;24169:122::-;24242:24;24260:5;24242:24;:::i;:::-;24235:5;24232:35;24222:63;;24281:1;24278;24271:12;24222:63;24169:122;:::o;24297:116::-;24367:21;24382:5;24367:21;:::i;:::-;24360:5;24357:32;24347:60;;24403:1;24400;24393:12;24347:60;24297:116;:::o;24419:122::-;24492:24;24510:5;24492:24;:::i;:::-;24485:5;24482:35;24472:63;;24531:1;24528;24521:12;24472:63;24419:122;:::o

Swarm Source

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