ETH Price: $3,897.40 (+0.35%)

Token

ERC-20: Hikari Inu (HIKA)
 

Overview

Max Total Supply

1,000,000,000,000 HIKA

Holders

207

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,834,246.112008909 HIKA

Value
$0.00
0x91158c497f8ca72e44096bb83511ae2e71189d4f
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:
HikariInu

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// Hikari Inu ($HIKA)

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.4;

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

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

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

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

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

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

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

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

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

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract HikariInu is Context, IERC20, Ownable {
    using SafeMath for uint256;

    string private constant _name = "Hikari Inu";
    string private constant _symbol = "HIKA";
    uint8 private constant _decimals = 9;

    // RFI
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _taxFee = 5;
    uint256 private _teamFee = 10;

    // Bot detection
    mapping(address => bool) private bots;
    mapping(address => uint256) private cooldown;
    address payable private _teamAddress;
    address payable private _marketingFunds;
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private cooldownEnabled = false;
    uint256 private _maxTxAmount = _tTotal;
    uint256 private _cooldownSeconds = 40;

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor(address payable addr1, address payable addr2) {
        _teamAddress = addr1;
        _marketingFunds = addr2;
        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_teamAddress] = true;
        _isExcludedFromFee[_marketingFunds] = true;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

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

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

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

    function removeAllFee() private {
        if (_taxFee == 0 && _teamFee == 0) return;
        _taxFee = 0;
        _teamFee = 0;
    }

    function restoreAllFee() private {
        _taxFee = 5;
        _teamFee = 10;
    }

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (from != owner() && to != owner()) {
            if (cooldownEnabled) {
                if (
                    from != address(this) &&
                    to != address(this) &&
                    from != address(uniswapV2Router) &&
                    to != address(uniswapV2Router)
                ) {
                    require(
                        _msgSender() == address(uniswapV2Router) ||
                            _msgSender() == uniswapV2Pair,
                        "ERR: Uniswap only"
                    );
                }
            }
            require(amount <= _maxTxAmount);
            require(!bots[from] && !bots[to]);
            if (
                from == uniswapV2Pair &&
                to != address(uniswapV2Router) &&
                !_isExcludedFromFee[to] &&
                cooldownEnabled
            ) {
                require(cooldown[to] < block.timestamp);
                cooldown[to] = block.timestamp + (_cooldownSeconds * 1 seconds);
            }
            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && from != uniswapV2Pair && swapEnabled) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
        bool takeFee = true;

        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }

        _tokenTransfer(from, to, amount, takeFee);
    }

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

    function sendETHToFee(uint256 amount) private {
        _teamAddress.transfer(amount.div(2));
        _marketingFunds.transfer(amount.div(2));
    }

    function addLiquidityETH() external onlyOwner() {
        require(!tradingOpen, "trading is already started");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
        swapEnabled = true;
        cooldownEnabled = true;
        _maxTxAmount = 1000000000000 * 10**9;
        tradingOpen = true;
        IERC20(uniswapV2Pair).approve(
            address(uniswapV2Router),
            type(uint256).max
        );
    }

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

    function unblockBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

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

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

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

    receive() external payable {}

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

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

        return (tTransferAmount, tFee, tTeam);
    }

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

        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();

        return rSupply.div(tSupply);
    }

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

        return (rSupply, tSupply);
    }

    function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner() {
        require(maxTxPercent > 0, "Amount must be greater than 0");
        _maxTxAmount = _tTotal.mul(maxTxPercent).div(10**2);
        emit MaxTxAmountUpdated(_maxTxAmount);
    }

    function setCooldownSeconds(uint256 cooldownSecs) external onlyOwner() {
        require(cooldownSecs > 0, "Secs must be greater than 0");
        _cooldownSeconds = cooldownSecs;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"addr1","type":"address"},{"internalType":"address payable","name":"addr2","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"addLiquidityETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isEnabled","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"cooldownSecs","type":"uint256"}],"name":"setCooldownSeconds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052683635c9adc5dea000006000196200001d9190620005c1565b6000196200002c919062000548565b6006556005600855600a6009556000600f60156101000a81548160ff0219169083151502179055506000600f60166101000a81548160ff0219169083151502179055506000600f60176101000a81548160ff021916908315150217905550683635c9adc5dea000006010556028601155348015620000a957600080fd5b5060405162003ef638038062003ef68339818101604052810190620000cf9190620004d9565b6000620000e16200049160201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35081600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060065460026000620002186200049160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600560006200026c6200049960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620004196200049160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef683635c9adc5dea000006040516200048191906200052b565b60405180910390a3505062000671565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050620004d38162000657565b92915050565b60008060408385031215620004ed57600080fd5b6000620004fd85828601620004c2565b92505060206200051085828601620004c2565b9150509250929050565b6200052581620005b7565b82525050565b60006020820190506200054260008301846200051a565b92915050565b60006200055582620005b7565b91506200056283620005b7565b925082821015620005785762000577620005f9565b5b828203905092915050565b6000620005908262000597565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000620005ce82620005b7565b9150620005db83620005b7565b925082620005ee57620005ed62000628565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b620006628162000583565b81146200066e57600080fd5b50565b61387580620006816000396000f3fe6080604052600436106101015760003560e01c806370a082311161009557806395d89b411161006457806395d89b411461032b578063a9059cbb14610356578063d543dbeb14610393578063dd62ed3e146103bc578063ed995307146103f957610108565b806370a0823114610283578063715018a6146102c05780637b5b1157146102d75780638da5cb5b1461030057610108565b806323b872dd116100d157806323b872dd146101c9578063313ce567146102065780635932ead1146102315780636b9990531461025a57610108565b8062b8cf2a1461010d57806306fdde0314610136578063095ea7b31461016157806318160ddd1461019e57610108565b3661010857005b600080fd5b34801561011957600080fd5b50610134600480360381019061012f9190612a30565b610410565b005b34801561014257600080fd5b5061014b610560565b6040516101589190612ef4565b60405180910390f35b34801561016d57600080fd5b50610188600480360381019061018391906129f4565b61059d565b6040516101959190612ed9565b60405180910390f35b3480156101aa57600080fd5b506101b36105bb565b6040516101c091906130b6565b60405180910390f35b3480156101d557600080fd5b506101f060048036038101906101eb91906129a5565b6105cc565b6040516101fd9190612ed9565b60405180910390f35b34801561021257600080fd5b5061021b6106a5565b604051610228919061312b565b60405180910390f35b34801561023d57600080fd5b5061025860048036038101906102539190612a71565b6106ae565b005b34801561026657600080fd5b50610281600480360381019061027c9190612917565b610760565b005b34801561028f57600080fd5b506102aa60048036038101906102a59190612917565b610850565b6040516102b791906130b6565b60405180910390f35b3480156102cc57600080fd5b506102d56108a1565b005b3480156102e357600080fd5b506102fe60048036038101906102f99190612ac3565b6109f4565b005b34801561030c57600080fd5b50610315610ad6565b6040516103229190612e0b565b60405180910390f35b34801561033757600080fd5b50610340610aff565b60405161034d9190612ef4565b60405180910390f35b34801561036257600080fd5b5061037d600480360381019061037891906129f4565b610b3c565b60405161038a9190612ed9565b60405180910390f35b34801561039f57600080fd5b506103ba60048036038101906103b59190612ac3565b610b5a565b005b3480156103c857600080fd5b506103e360048036038101906103de9190612969565b610ca3565b6040516103f091906130b6565b60405180910390f35b34801561040557600080fd5b5061040e610d2a565b005b610418611287565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146104a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049c90613016565b60405180910390fd5b60005b815181101561055c576001600a60008484815181106104f0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610554906133cc565b9150506104a8565b5050565b60606040518060400160405280600a81526020017f48696b61726920496e7500000000000000000000000000000000000000000000815250905090565b60006105b16105aa611287565b848461128f565b6001905092915050565b6000683635c9adc5dea00000905090565b60006105d984848461145a565b61069a846105e5611287565b6106958560405180606001604052806028815260200161381860289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061064b611287565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c269092919063ffffffff16565b61128f565b600190509392505050565b60006009905090565b6106b6611287565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073a90613016565b60405180910390fd5b80600f60176101000a81548160ff02191690831515021790555050565b610768611287565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ec90613016565b60405180910390fd5b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600061089a600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c8a565b9050919050565b6108a9611287565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092d90613016565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6109fc611287565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8090613016565b60405180910390fd5b60008111610acc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac390612fb6565b60405180910390fd5b8060118190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f48494b4100000000000000000000000000000000000000000000000000000000815250905090565b6000610b50610b49611287565b848461145a565b6001905092915050565b610b62611287565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be690613016565b60405180910390fd5b60008111610c32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2990612fd6565b60405180910390fd5b610c616064610c5383683635c9adc5dea00000611cf890919063ffffffff16565b611d7390919063ffffffff16565b6010819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf601054604051610c9891906130b6565b60405180910390a150565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610d32611287565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db690613016565b60405180910390fd5b600f60149054906101000a900460ff1615610e0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0690612f36565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e9f30600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16683635c9adc5dea0000061128f565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610ee557600080fd5b505afa158015610ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1d9190612940565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610f7f57600080fd5b505afa158015610f93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb79190612940565b6040518363ffffffff1660e01b8152600401610fd4929190612e26565b602060405180830381600087803b158015610fee57600080fd5b505af1158015611002573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110269190612940565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306110af30610850565b6000806110ba610ad6565b426040518863ffffffff1660e01b81526004016110dc96959493929190612e78565b6060604051808303818588803b1580156110f557600080fd5b505af1158015611109573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061112e9190612aec565b5050506001600f60166101000a81548160ff0219169083151502179055506001600f60176101000a81548160ff021916908315150217905550683635c9adc5dea000006010819055506001600f60146101000a81548160ff021916908315150217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611231929190612e4f565b602060405180830381600087803b15801561124b57600080fd5b505af115801561125f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112839190612a9a565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f690613076565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561136f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136690612f76565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161144d91906130b6565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156114ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c190613056565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561153a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153190612f16565b60405180910390fd5b6000811161157d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157490613036565b60405180910390fd5b611585610ad6565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115f357506115c3610ad6565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611b6357600f60179054906101000a900460ff1615611826573073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561167557503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156116cf5750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156117295750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561182557600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661176f611287565b73ffffffffffffffffffffffffffffffffffffffff1614806117e55750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117cd611287565b73ffffffffffffffffffffffffffffffffffffffff16145b611824576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181b90613096565b60405180910390fd5b5b5b60105481111561183557600080fd5b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118d95750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6118e257600080fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561198d5750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156119e35750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156119fb5750600f60179054906101000a900460ff165b15611aa95742600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611a4b57600080fd5b6001601154611a5a9190613273565b42611a6591906131ec565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000611ab430610850565b9050600f60159054906101000a900460ff16158015611b215750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611b395750600f60169054906101000a900460ff165b15611b6157611b4781611dbd565b60004790506000811115611b5f57611b5e476120b7565b5b505b505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611c0a5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611c1457600090505b611c20848484846121b2565b50505050565b6000838311158290611c6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c659190612ef4565b60405180910390fd5b5060008385611c7d91906132cd565b9050809150509392505050565b6000600654821115611cd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc890612f56565b60405180910390fd5b6000611cdb6121df565b9050611cf08184611d7390919063ffffffff16565b915050919050565b600080831415611d0b5760009050611d6d565b60008284611d199190613273565b9050828482611d289190613242565b14611d68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5f90612ff6565b60405180910390fd5b809150505b92915050565b6000611db583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061220a565b905092915050565b6001600f60156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611e1b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015611e495781602001602082028036833780820191505090505b5090503081600081518110611e87577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611f2957600080fd5b505afa158015611f3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f619190612940565b81600181518110611f9b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061200230600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461128f565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016120669594939291906130d1565b600060405180830381600087803b15801561208057600080fd5b505af1158015612094573d6000803e3d6000fd5b50505050506000600f60156101000a81548160ff02191690831515021790555050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612107600284611d7390919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612132573d6000803e3d6000fd5b50600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612183600284611d7390919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156121ae573d6000803e3d6000fd5b5050565b806121c0576121bf61226d565b5b6121cb84848461229e565b806121d9576121d8612469565b5b50505050565b60008060006121ec61247b565b915091506122038183611d7390919063ffffffff16565b9250505090565b60008083118290612251576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122489190612ef4565b60405180910390fd5b50600083856122609190613242565b9050809150509392505050565b600060085414801561228157506000600954145b1561228b5761229c565b600060088190555060006009819055505b565b6000806000806000806122b0876124dd565b95509550955095509550955061230e86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254590919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123a385600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461258f90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123ef816125ed565b6123f984836126aa565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161245691906130b6565b60405180910390a3505050505050505050565b6005600881905550600a600981905550565b600080600060065490506000683635c9adc5dea0000090506124b1683635c9adc5dea00000600654611d7390919063ffffffff16565b8210156124d057600654683635c9adc5dea000009350935050506124d9565b81819350935050505b9091565b60008060008060008060008060006124fa8a6008546009546126e4565b925092509250600061250a6121df565b9050600080600061251d8e87878761277a565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061258783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c26565b905092915050565b600080828461259e91906131ec565b9050838110156125e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125da90612f96565b60405180910390fd5b8091505092915050565b60006125f76121df565b9050600061260e8284611cf890919063ffffffff16565b905061266281600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461258f90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6126bf8260065461254590919063ffffffff16565b6006819055506126da8160075461258f90919063ffffffff16565b6007819055505050565b6000806000806127106064612702888a611cf890919063ffffffff16565b611d7390919063ffffffff16565b9050600061273a606461272c888b611cf890919063ffffffff16565b611d7390919063ffffffff16565b9050600061276382612755858c61254590919063ffffffff16565b61254590919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806127938589611cf890919063ffffffff16565b905060006127aa8689611cf890919063ffffffff16565b905060006127c18789611cf890919063ffffffff16565b905060006127ea826127dc858761254590919063ffffffff16565b61254590919063ffffffff16565b9050838184965096509650505050509450945094915050565b60006128166128118461316b565b613146565b9050808382526020820190508285602086028201111561283557600080fd5b60005b85811015612865578161284b888261286f565b845260208401935060208301925050600181019050612838565b5050509392505050565b60008135905061287e816137d2565b92915050565b600081519050612893816137d2565b92915050565b600082601f8301126128aa57600080fd5b81356128ba848260208601612803565b91505092915050565b6000813590506128d2816137e9565b92915050565b6000815190506128e7816137e9565b92915050565b6000813590506128fc81613800565b92915050565b60008151905061291181613800565b92915050565b60006020828403121561292957600080fd5b60006129378482850161286f565b91505092915050565b60006020828403121561295257600080fd5b600061296084828501612884565b91505092915050565b6000806040838503121561297c57600080fd5b600061298a8582860161286f565b925050602061299b8582860161286f565b9150509250929050565b6000806000606084860312156129ba57600080fd5b60006129c88682870161286f565b93505060206129d98682870161286f565b92505060406129ea868287016128ed565b9150509250925092565b60008060408385031215612a0757600080fd5b6000612a158582860161286f565b9250506020612a26858286016128ed565b9150509250929050565b600060208284031215612a4257600080fd5b600082013567ffffffffffffffff811115612a5c57600080fd5b612a6884828501612899565b91505092915050565b600060208284031215612a8357600080fd5b6000612a91848285016128c3565b91505092915050565b600060208284031215612aac57600080fd5b6000612aba848285016128d8565b91505092915050565b600060208284031215612ad557600080fd5b6000612ae3848285016128ed565b91505092915050565b600080600060608486031215612b0157600080fd5b6000612b0f86828701612902565b9350506020612b2086828701612902565b9250506040612b3186828701612902565b9150509250925092565b6000612b478383612b53565b60208301905092915050565b612b5c81613301565b82525050565b612b6b81613301565b82525050565b6000612b7c826131a7565b612b8681856131ca565b9350612b9183613197565b8060005b83811015612bc2578151612ba98882612b3b565b9750612bb4836131bd565b925050600181019050612b95565b5085935050505092915050565b612bd881613313565b82525050565b612be781613356565b82525050565b6000612bf8826131b2565b612c0281856131db565b9350612c12818560208601613368565b612c1b816134a2565b840191505092915050565b6000612c336023836131db565b9150612c3e826134b3565b604082019050919050565b6000612c56601a836131db565b9150612c6182613502565b602082019050919050565b6000612c79602a836131db565b9150612c848261352b565b604082019050919050565b6000612c9c6022836131db565b9150612ca78261357a565b604082019050919050565b6000612cbf601b836131db565b9150612cca826135c9565b602082019050919050565b6000612ce2601b836131db565b9150612ced826135f2565b602082019050919050565b6000612d05601d836131db565b9150612d108261361b565b602082019050919050565b6000612d286021836131db565b9150612d3382613644565b604082019050919050565b6000612d4b6020836131db565b9150612d5682613693565b602082019050919050565b6000612d6e6029836131db565b9150612d79826136bc565b604082019050919050565b6000612d916025836131db565b9150612d9c8261370b565b604082019050919050565b6000612db46024836131db565b9150612dbf8261375a565b604082019050919050565b6000612dd76011836131db565b9150612de2826137a9565b602082019050919050565b612df68161333f565b82525050565b612e0581613349565b82525050565b6000602082019050612e206000830184612b62565b92915050565b6000604082019050612e3b6000830185612b62565b612e486020830184612b62565b9392505050565b6000604082019050612e646000830185612b62565b612e716020830184612ded565b9392505050565b600060c082019050612e8d6000830189612b62565b612e9a6020830188612ded565b612ea76040830187612bde565b612eb46060830186612bde565b612ec16080830185612b62565b612ece60a0830184612ded565b979650505050505050565b6000602082019050612eee6000830184612bcf565b92915050565b60006020820190508181036000830152612f0e8184612bed565b905092915050565b60006020820190508181036000830152612f2f81612c26565b9050919050565b60006020820190508181036000830152612f4f81612c49565b9050919050565b60006020820190508181036000830152612f6f81612c6c565b9050919050565b60006020820190508181036000830152612f8f81612c8f565b9050919050565b60006020820190508181036000830152612faf81612cb2565b9050919050565b60006020820190508181036000830152612fcf81612cd5565b9050919050565b60006020820190508181036000830152612fef81612cf8565b9050919050565b6000602082019050818103600083015261300f81612d1b565b9050919050565b6000602082019050818103600083015261302f81612d3e565b9050919050565b6000602082019050818103600083015261304f81612d61565b9050919050565b6000602082019050818103600083015261306f81612d84565b9050919050565b6000602082019050818103600083015261308f81612da7565b9050919050565b600060208201905081810360008301526130af81612dca565b9050919050565b60006020820190506130cb6000830184612ded565b92915050565b600060a0820190506130e66000830188612ded565b6130f36020830187612bde565b81810360408301526131058186612b71565b90506131146060830185612b62565b6131216080830184612ded565b9695505050505050565b60006020820190506131406000830184612dfc565b92915050565b6000613150613161565b905061315c828261339b565b919050565b6000604051905090565b600067ffffffffffffffff82111561318657613185613473565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006131f78261333f565b91506132028361333f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561323757613236613415565b5b828201905092915050565b600061324d8261333f565b91506132588361333f565b92508261326857613267613444565b5b828204905092915050565b600061327e8261333f565b91506132898361333f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156132c2576132c1613415565b5b828202905092915050565b60006132d88261333f565b91506132e38361333f565b9250828210156132f6576132f5613415565b5b828203905092915050565b600061330c8261331f565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006133618261333f565b9050919050565b60005b8381101561338657808201518184015260208101905061336b565b83811115613395576000848401525b50505050565b6133a4826134a2565b810181811067ffffffffffffffff821117156133c3576133c2613473565b5b80604052505050565b60006133d78261333f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561340a57613409613415565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c72656164792073746172746564000000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f53656373206d7573742062652067726561746572207468616e20300000000000600082015250565b7f416d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552523a20556e6973776170206f6e6c79000000000000000000000000000000600082015250565b6137db81613301565b81146137e657600080fd5b50565b6137f281613313565b81146137fd57600080fd5b50565b6138098161333f565b811461381457600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220609859bb9ff439c00212c7a2cdc61f0a4c70f34bff7b1e3f92ef4f3f981b3f5b64736f6c63430008040033000000000000000000000000936d1d63273424caea9357f4ab6f4706d9865d59000000000000000000000000f0c40234b91af291c88ebd322d31e2ebae5ec358

Deployed Bytecode

0x6080604052600436106101015760003560e01c806370a082311161009557806395d89b411161006457806395d89b411461032b578063a9059cbb14610356578063d543dbeb14610393578063dd62ed3e146103bc578063ed995307146103f957610108565b806370a0823114610283578063715018a6146102c05780637b5b1157146102d75780638da5cb5b1461030057610108565b806323b872dd116100d157806323b872dd146101c9578063313ce567146102065780635932ead1146102315780636b9990531461025a57610108565b8062b8cf2a1461010d57806306fdde0314610136578063095ea7b31461016157806318160ddd1461019e57610108565b3661010857005b600080fd5b34801561011957600080fd5b50610134600480360381019061012f9190612a30565b610410565b005b34801561014257600080fd5b5061014b610560565b6040516101589190612ef4565b60405180910390f35b34801561016d57600080fd5b50610188600480360381019061018391906129f4565b61059d565b6040516101959190612ed9565b60405180910390f35b3480156101aa57600080fd5b506101b36105bb565b6040516101c091906130b6565b60405180910390f35b3480156101d557600080fd5b506101f060048036038101906101eb91906129a5565b6105cc565b6040516101fd9190612ed9565b60405180910390f35b34801561021257600080fd5b5061021b6106a5565b604051610228919061312b565b60405180910390f35b34801561023d57600080fd5b5061025860048036038101906102539190612a71565b6106ae565b005b34801561026657600080fd5b50610281600480360381019061027c9190612917565b610760565b005b34801561028f57600080fd5b506102aa60048036038101906102a59190612917565b610850565b6040516102b791906130b6565b60405180910390f35b3480156102cc57600080fd5b506102d56108a1565b005b3480156102e357600080fd5b506102fe60048036038101906102f99190612ac3565b6109f4565b005b34801561030c57600080fd5b50610315610ad6565b6040516103229190612e0b565b60405180910390f35b34801561033757600080fd5b50610340610aff565b60405161034d9190612ef4565b60405180910390f35b34801561036257600080fd5b5061037d600480360381019061037891906129f4565b610b3c565b60405161038a9190612ed9565b60405180910390f35b34801561039f57600080fd5b506103ba60048036038101906103b59190612ac3565b610b5a565b005b3480156103c857600080fd5b506103e360048036038101906103de9190612969565b610ca3565b6040516103f091906130b6565b60405180910390f35b34801561040557600080fd5b5061040e610d2a565b005b610418611287565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146104a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049c90613016565b60405180910390fd5b60005b815181101561055c576001600a60008484815181106104f0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610554906133cc565b9150506104a8565b5050565b60606040518060400160405280600a81526020017f48696b61726920496e7500000000000000000000000000000000000000000000815250905090565b60006105b16105aa611287565b848461128f565b6001905092915050565b6000683635c9adc5dea00000905090565b60006105d984848461145a565b61069a846105e5611287565b6106958560405180606001604052806028815260200161381860289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061064b611287565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c269092919063ffffffff16565b61128f565b600190509392505050565b60006009905090565b6106b6611287565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073a90613016565b60405180910390fd5b80600f60176101000a81548160ff02191690831515021790555050565b610768611287565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ec90613016565b60405180910390fd5b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600061089a600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c8a565b9050919050565b6108a9611287565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092d90613016565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6109fc611287565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8090613016565b60405180910390fd5b60008111610acc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac390612fb6565b60405180910390fd5b8060118190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f48494b4100000000000000000000000000000000000000000000000000000000815250905090565b6000610b50610b49611287565b848461145a565b6001905092915050565b610b62611287565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be690613016565b60405180910390fd5b60008111610c32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2990612fd6565b60405180910390fd5b610c616064610c5383683635c9adc5dea00000611cf890919063ffffffff16565b611d7390919063ffffffff16565b6010819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf601054604051610c9891906130b6565b60405180910390a150565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610d32611287565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db690613016565b60405180910390fd5b600f60149054906101000a900460ff1615610e0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0690612f36565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e9f30600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16683635c9adc5dea0000061128f565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610ee557600080fd5b505afa158015610ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1d9190612940565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610f7f57600080fd5b505afa158015610f93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb79190612940565b6040518363ffffffff1660e01b8152600401610fd4929190612e26565b602060405180830381600087803b158015610fee57600080fd5b505af1158015611002573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110269190612940565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306110af30610850565b6000806110ba610ad6565b426040518863ffffffff1660e01b81526004016110dc96959493929190612e78565b6060604051808303818588803b1580156110f557600080fd5b505af1158015611109573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061112e9190612aec565b5050506001600f60166101000a81548160ff0219169083151502179055506001600f60176101000a81548160ff021916908315150217905550683635c9adc5dea000006010819055506001600f60146101000a81548160ff021916908315150217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611231929190612e4f565b602060405180830381600087803b15801561124b57600080fd5b505af115801561125f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112839190612a9a565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f690613076565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561136f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136690612f76565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161144d91906130b6565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156114ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c190613056565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561153a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153190612f16565b60405180910390fd5b6000811161157d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157490613036565b60405180910390fd5b611585610ad6565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115f357506115c3610ad6565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611b6357600f60179054906101000a900460ff1615611826573073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561167557503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156116cf5750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156117295750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561182557600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661176f611287565b73ffffffffffffffffffffffffffffffffffffffff1614806117e55750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117cd611287565b73ffffffffffffffffffffffffffffffffffffffff16145b611824576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181b90613096565b60405180910390fd5b5b5b60105481111561183557600080fd5b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118d95750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6118e257600080fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561198d5750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156119e35750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156119fb5750600f60179054906101000a900460ff165b15611aa95742600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611a4b57600080fd5b6001601154611a5a9190613273565b42611a6591906131ec565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000611ab430610850565b9050600f60159054906101000a900460ff16158015611b215750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611b395750600f60169054906101000a900460ff165b15611b6157611b4781611dbd565b60004790506000811115611b5f57611b5e476120b7565b5b505b505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611c0a5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611c1457600090505b611c20848484846121b2565b50505050565b6000838311158290611c6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c659190612ef4565b60405180910390fd5b5060008385611c7d91906132cd565b9050809150509392505050565b6000600654821115611cd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc890612f56565b60405180910390fd5b6000611cdb6121df565b9050611cf08184611d7390919063ffffffff16565b915050919050565b600080831415611d0b5760009050611d6d565b60008284611d199190613273565b9050828482611d289190613242565b14611d68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5f90612ff6565b60405180910390fd5b809150505b92915050565b6000611db583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061220a565b905092915050565b6001600f60156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611e1b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015611e495781602001602082028036833780820191505090505b5090503081600081518110611e87577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611f2957600080fd5b505afa158015611f3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f619190612940565b81600181518110611f9b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061200230600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461128f565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016120669594939291906130d1565b600060405180830381600087803b15801561208057600080fd5b505af1158015612094573d6000803e3d6000fd5b50505050506000600f60156101000a81548160ff02191690831515021790555050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612107600284611d7390919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612132573d6000803e3d6000fd5b50600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612183600284611d7390919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156121ae573d6000803e3d6000fd5b5050565b806121c0576121bf61226d565b5b6121cb84848461229e565b806121d9576121d8612469565b5b50505050565b60008060006121ec61247b565b915091506122038183611d7390919063ffffffff16565b9250505090565b60008083118290612251576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122489190612ef4565b60405180910390fd5b50600083856122609190613242565b9050809150509392505050565b600060085414801561228157506000600954145b1561228b5761229c565b600060088190555060006009819055505b565b6000806000806000806122b0876124dd565b95509550955095509550955061230e86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254590919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123a385600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461258f90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123ef816125ed565b6123f984836126aa565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161245691906130b6565b60405180910390a3505050505050505050565b6005600881905550600a600981905550565b600080600060065490506000683635c9adc5dea0000090506124b1683635c9adc5dea00000600654611d7390919063ffffffff16565b8210156124d057600654683635c9adc5dea000009350935050506124d9565b81819350935050505b9091565b60008060008060008060008060006124fa8a6008546009546126e4565b925092509250600061250a6121df565b9050600080600061251d8e87878761277a565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061258783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c26565b905092915050565b600080828461259e91906131ec565b9050838110156125e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125da90612f96565b60405180910390fd5b8091505092915050565b60006125f76121df565b9050600061260e8284611cf890919063ffffffff16565b905061266281600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461258f90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6126bf8260065461254590919063ffffffff16565b6006819055506126da8160075461258f90919063ffffffff16565b6007819055505050565b6000806000806127106064612702888a611cf890919063ffffffff16565b611d7390919063ffffffff16565b9050600061273a606461272c888b611cf890919063ffffffff16565b611d7390919063ffffffff16565b9050600061276382612755858c61254590919063ffffffff16565b61254590919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806127938589611cf890919063ffffffff16565b905060006127aa8689611cf890919063ffffffff16565b905060006127c18789611cf890919063ffffffff16565b905060006127ea826127dc858761254590919063ffffffff16565b61254590919063ffffffff16565b9050838184965096509650505050509450945094915050565b60006128166128118461316b565b613146565b9050808382526020820190508285602086028201111561283557600080fd5b60005b85811015612865578161284b888261286f565b845260208401935060208301925050600181019050612838565b5050509392505050565b60008135905061287e816137d2565b92915050565b600081519050612893816137d2565b92915050565b600082601f8301126128aa57600080fd5b81356128ba848260208601612803565b91505092915050565b6000813590506128d2816137e9565b92915050565b6000815190506128e7816137e9565b92915050565b6000813590506128fc81613800565b92915050565b60008151905061291181613800565b92915050565b60006020828403121561292957600080fd5b60006129378482850161286f565b91505092915050565b60006020828403121561295257600080fd5b600061296084828501612884565b91505092915050565b6000806040838503121561297c57600080fd5b600061298a8582860161286f565b925050602061299b8582860161286f565b9150509250929050565b6000806000606084860312156129ba57600080fd5b60006129c88682870161286f565b93505060206129d98682870161286f565b92505060406129ea868287016128ed565b9150509250925092565b60008060408385031215612a0757600080fd5b6000612a158582860161286f565b9250506020612a26858286016128ed565b9150509250929050565b600060208284031215612a4257600080fd5b600082013567ffffffffffffffff811115612a5c57600080fd5b612a6884828501612899565b91505092915050565b600060208284031215612a8357600080fd5b6000612a91848285016128c3565b91505092915050565b600060208284031215612aac57600080fd5b6000612aba848285016128d8565b91505092915050565b600060208284031215612ad557600080fd5b6000612ae3848285016128ed565b91505092915050565b600080600060608486031215612b0157600080fd5b6000612b0f86828701612902565b9350506020612b2086828701612902565b9250506040612b3186828701612902565b9150509250925092565b6000612b478383612b53565b60208301905092915050565b612b5c81613301565b82525050565b612b6b81613301565b82525050565b6000612b7c826131a7565b612b8681856131ca565b9350612b9183613197565b8060005b83811015612bc2578151612ba98882612b3b565b9750612bb4836131bd565b925050600181019050612b95565b5085935050505092915050565b612bd881613313565b82525050565b612be781613356565b82525050565b6000612bf8826131b2565b612c0281856131db565b9350612c12818560208601613368565b612c1b816134a2565b840191505092915050565b6000612c336023836131db565b9150612c3e826134b3565b604082019050919050565b6000612c56601a836131db565b9150612c6182613502565b602082019050919050565b6000612c79602a836131db565b9150612c848261352b565b604082019050919050565b6000612c9c6022836131db565b9150612ca78261357a565b604082019050919050565b6000612cbf601b836131db565b9150612cca826135c9565b602082019050919050565b6000612ce2601b836131db565b9150612ced826135f2565b602082019050919050565b6000612d05601d836131db565b9150612d108261361b565b602082019050919050565b6000612d286021836131db565b9150612d3382613644565b604082019050919050565b6000612d4b6020836131db565b9150612d5682613693565b602082019050919050565b6000612d6e6029836131db565b9150612d79826136bc565b604082019050919050565b6000612d916025836131db565b9150612d9c8261370b565b604082019050919050565b6000612db46024836131db565b9150612dbf8261375a565b604082019050919050565b6000612dd76011836131db565b9150612de2826137a9565b602082019050919050565b612df68161333f565b82525050565b612e0581613349565b82525050565b6000602082019050612e206000830184612b62565b92915050565b6000604082019050612e3b6000830185612b62565b612e486020830184612b62565b9392505050565b6000604082019050612e646000830185612b62565b612e716020830184612ded565b9392505050565b600060c082019050612e8d6000830189612b62565b612e9a6020830188612ded565b612ea76040830187612bde565b612eb46060830186612bde565b612ec16080830185612b62565b612ece60a0830184612ded565b979650505050505050565b6000602082019050612eee6000830184612bcf565b92915050565b60006020820190508181036000830152612f0e8184612bed565b905092915050565b60006020820190508181036000830152612f2f81612c26565b9050919050565b60006020820190508181036000830152612f4f81612c49565b9050919050565b60006020820190508181036000830152612f6f81612c6c565b9050919050565b60006020820190508181036000830152612f8f81612c8f565b9050919050565b60006020820190508181036000830152612faf81612cb2565b9050919050565b60006020820190508181036000830152612fcf81612cd5565b9050919050565b60006020820190508181036000830152612fef81612cf8565b9050919050565b6000602082019050818103600083015261300f81612d1b565b9050919050565b6000602082019050818103600083015261302f81612d3e565b9050919050565b6000602082019050818103600083015261304f81612d61565b9050919050565b6000602082019050818103600083015261306f81612d84565b9050919050565b6000602082019050818103600083015261308f81612da7565b9050919050565b600060208201905081810360008301526130af81612dca565b9050919050565b60006020820190506130cb6000830184612ded565b92915050565b600060a0820190506130e66000830188612ded565b6130f36020830187612bde565b81810360408301526131058186612b71565b90506131146060830185612b62565b6131216080830184612ded565b9695505050505050565b60006020820190506131406000830184612dfc565b92915050565b6000613150613161565b905061315c828261339b565b919050565b6000604051905090565b600067ffffffffffffffff82111561318657613185613473565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006131f78261333f565b91506132028361333f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561323757613236613415565b5b828201905092915050565b600061324d8261333f565b91506132588361333f565b92508261326857613267613444565b5b828204905092915050565b600061327e8261333f565b91506132898361333f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156132c2576132c1613415565b5b828202905092915050565b60006132d88261333f565b91506132e38361333f565b9250828210156132f6576132f5613415565b5b828203905092915050565b600061330c8261331f565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006133618261333f565b9050919050565b60005b8381101561338657808201518184015260208101905061336b565b83811115613395576000848401525b50505050565b6133a4826134a2565b810181811067ffffffffffffffff821117156133c3576133c2613473565b5b80604052505050565b60006133d78261333f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561340a57613409613415565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c72656164792073746172746564000000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f53656373206d7573742062652067726561746572207468616e20300000000000600082015250565b7f416d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552523a20556e6973776170206f6e6c79000000000000000000000000000000600082015250565b6137db81613301565b81146137e657600080fd5b50565b6137f281613313565b81146137fd57600080fd5b50565b6138098161333f565b811461381457600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220609859bb9ff439c00212c7a2cdc61f0a4c70f34bff7b1e3f92ef4f3f981b3f5b64736f6c63430008040033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000936d1d63273424caea9357f4ab6f4706d9865d59000000000000000000000000f0c40234b91af291c88ebd322d31e2ebae5ec358

-----Decoded View---------------
Arg [0] : addr1 (address): 0x936D1D63273424CAea9357f4AB6f4706d9865D59
Arg [1] : addr2 (address): 0xF0c40234B91af291C88eBd322D31e2EbAE5Ec358

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000936d1d63273424caea9357f4ab6f4706d9865d59
Arg [1] : 000000000000000000000000f0c40234b91af291c88ebd322d31e2ebae5ec358


Deployed Bytecode Sourcemap

3773:12215:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11921:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5641:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6566:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5918:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6767:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5827:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7221:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12098:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6021:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2725:148;;;;;;;;;;;;;:::i;:::-;;15797:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2511:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5732:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6167:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15534:255;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6374:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10939:974;;;;;;;;;;;;;:::i;:::-;;11921:169;2648:12;:10;:12::i;:::-;2638:22;;:6;;;;;;;;;;:22;;;2630:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11997:9:::1;11992:91;12016:5;:12;12012:1;:16;11992:91;;;12067:4;12050;:14;12055:5;12061:1;12055:8;;;;;;;;;;;;;;;;;;;;;;12050:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12030:3;;;;;:::i;:::-;;;;11992:91;;;;11921:169:::0;:::o;5641:83::-;5678:13;5711:5;;;;;;;;;;;;;;;;;5704:12;;5641:83;:::o;6566:193::-;6668:4;6690:39;6699:12;:10;:12::i;:::-;6713:7;6722:6;6690:8;:39::i;:::-;6747:4;6740:11;;6566:193;;;;:::o;5918:95::-;5971:7;4333:21;5991:14;;5918:95;:::o;6767:446::-;6899:4;6916:36;6926:6;6934:9;6945:6;6916:9;:36::i;:::-;6963:220;6986:6;7007:12;:10;:12::i;:::-;7034:138;7090:6;7034:138;;;;;;;;;;;;;;;;;:11;:19;7046:6;7034:19;;;;;;;;;;;;;;;:33;7054:12;:10;:12::i;:::-;7034:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;6963:8;:220::i;:::-;7201:4;7194:11;;6767:446;;;;;:::o;5827:83::-;5868:5;3995:1;5886:16;;5827:83;:::o;7221:111::-;2648:12;:10;:12::i;:::-;2638:22;;:6;;;;;;;;;;:22;;;2630:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7315:9:::1;7297:15;;:27;;;;;;;;;;;;;;;;;;7221:111:::0;:::o;12098:92::-;2648:12;:10;:12::i;:::-;2638:22;;:6;;;;;;;;;;:22;;;2630:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12177:5:::1;12162:4;:12;12167:6;12162:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;12098:92:::0;:::o;6021:138::-;6087:7;6114:37;6134:7;:16;6142:7;6134:16;;;;;;;;;;;;;;;;6114:19;:37::i;:::-;6107:44;;6021:138;;;:::o;2725:148::-;2648:12;:10;:12::i;:::-;2638:22;;:6;;;;;;;;;;:22;;;2630:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2832:1:::1;2795:40;;2816:6;::::0;::::1;;;;;;;;2795:40;;;;;;;;;;;;2863:1;2846:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2725:148::o:0;15797:188::-;2648:12;:10;:12::i;:::-;2638:22;;:6;;;;;;;;;;:22;;;2630:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15902:1:::1;15887:12;:16;15879:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;15965:12;15946:16;:31;;;;15797:188:::0;:::o;2511:79::-;2549:7;2576:6;;;;;;;;;;;2569:13;;2511:79;:::o;5732:87::-;5771:13;5804:7;;;;;;;;;;;;;;;;;5797:14;;5732:87;:::o;6167:199::-;6272:4;6294:42;6304:12;:10;:12::i;:::-;6318:9;6329:6;6294:9;:42::i;:::-;6354:4;6347:11;;6167:199;;;;:::o;15534:255::-;2648:12;:10;:12::i;:::-;2638:22;;:6;;;;;;;;;;:22;;;2630:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15636:1:::1;15621:12;:16;15613:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;15697:36;15727:5;15697:25;15709:12;4333:21;15697:11;;:25;;;;:::i;:::-;:29;;:36;;;;:::i;:::-;15682:12;:51;;;;15749:32;15768:12;;15749:32;;;;;;:::i;:::-;;;;;;;;15534:255:::0;:::o;6374:184::-;6491:7;6523:11;:18;6535:5;6523:18;;;;;;;;;;;;;;;:27;6542:7;6523:27;;;;;;;;;;;;;;;;6516:34;;6374:184;;;;:::o;10939:974::-;2648:12;:10;:12::i;:::-;2638:22;;:6;;;;;;;;;;:22;;;2630:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11007:11:::1;;;;;;;;;;;11006:12;10998:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;11060:35;11117:42;11060:100;;11189:16;11171:15;;:34;;;;;;;;;;;;;;;;;;11216:58;11233:4;11248:15;;;;;;;;;;;4333:21;11216:8;:58::i;:::-;11319:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11301:70;;;11380:4;11387:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11301:110;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11285:13;;:126;;;;;;;;;;;;;;;;;;11422:15;;;;;;;;;;;:31;;;11461:21;11506:4;11526:24;11544:4;11526:9;:24::i;:::-;11565:1;11581::::0;11597:7:::1;:5;:7::i;:::-;11619:15;11422:223;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11670:4;11656:11;;:18;;;;;;;;;;;;;;;;;;11703:4;11685:15;;:22;;;;;;;;;;;;;;;;;;11733:21;11718:12;:36;;;;11779:4;11765:11;;:18;;;;;;;;;;;;;;;;;;11801:13;;;;;;;;;;;11794:29;;;11846:15;;;;;;;;;;;11877:17;11794:111;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2708:1;10939:974::o:0;1338:98::-;1391:7;1418:10;1411:17;;1338:98;:::o;7911:369::-;8055:1;8038:19;;:5;:19;;;;8030:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8136:1;8117:21;;:7;:21;;;;8109:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8218:6;8188:11;:18;8200:5;8188:18;;;;;;;;;;;;;;;:27;8207:7;8188:27;;;;;;;;;;;;;;;:36;;;;8256:7;8240:32;;8249:5;8240:32;;;8265:6;8240:32;;;;;;:::i;:::-;;;;;;;;7911:369;;;:::o;8288:1993::-;8426:1;8410:18;;:4;:18;;;;8402:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8503:1;8489:16;;:2;:16;;;;8481:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8573:1;8564:6;:10;8556:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8645:7;:5;:7::i;:::-;8637:15;;:4;:15;;;;:32;;;;;8662:7;:5;:7::i;:::-;8656:13;;:2;:13;;;;8637:32;8633:1447;;;8690:15;;;;;;;;;;;8686:526;;;8768:4;8752:21;;:4;:21;;;;:65;;;;;8812:4;8798:19;;:2;:19;;;;8752:65;:122;;;;;8858:15;;;;;;;;;;;8842:32;;:4;:32;;;;8752:122;:177;;;;;8913:15;;;;;;;;;;;8899:30;;:2;:30;;;;8752:177;8726:471;;;9030:15;;;;;;;;;;;9006:40;;:12;:10;:12::i;:::-;:40;;;:102;;;;9095:13;;;;;;;;;;;9079:29;;:12;:10;:12::i;:::-;:29;;;9006:102;8972:205;;;;;;;;;;;;:::i;:::-;;;;;;;;;8726:471;8686:526;9244:12;;9234:6;:22;;9226:31;;;;;;9281:4;:10;9286:4;9281:10;;;;;;;;;;;;;;;;;;;;;;;;;9280:11;:24;;;;;9296:4;:8;9301:2;9296:8;;;;;;;;;;;;;;;;;;;;;;;;;9295:9;9280:24;9272:33;;;;;;9350:13;;;;;;;;;;;9342:21;;:4;:21;;;:72;;;;;9398:15;;;;;;;;;;;9384:30;;:2;:30;;;;9342:72;:116;;;;;9436:18;:22;9455:2;9436:22;;;;;;;;;;;;;;;;;;;;;;;;;9435:23;9342:116;:152;;;;;9479:15;;;;;;;;;;;9342:152;9320:346;;;9552:15;9537:8;:12;9546:2;9537:12;;;;;;;;;;;;;;;;:30;9529:39;;;;;;9640:9;9621:16;;:28;;;;:::i;:::-;9602:15;:48;;;;:::i;:::-;9587:8;:12;9596:2;9587:12;;;;;;;;;;;;;;;:63;;;;9320:346;9680:28;9711:24;9729:4;9711:9;:24::i;:::-;9680:55;;9755:6;;;;;;;;;;;9754:7;:32;;;;;9773:13;;;;;;;;;;;9765:21;;:4;:21;;;;9754:32;:47;;;;;9790:11;;;;;;;;;;;9754:47;9750:319;;;9822:38;9839:20;9822:16;:38::i;:::-;9879:26;9908:21;9879:50;;9973:1;9952:18;:22;9948:106;;;9999:35;10012:21;9999:12;:35::i;:::-;9948:106;9750:319;;8633:1447;;10090:12;10105:4;10090:19;;10126:18;:24;10145:4;10126:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;10154:18;:22;10173:2;10154:22;;;;;;;;;;;;;;;;;;;;;;;;;10126:50;10122:98;;;10203:5;10193:15;;10122:98;10232:41;10247:4;10253:2;10257:6;10265:7;10232:14;:41::i;:::-;8288:1993;;;;:::o;449:224::-;569:7;602:1;597;:6;;605:12;589:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;629:9;645:1;641;:5;;;;:::i;:::-;629:17;;664:1;657:8;;;449:224;;;;;:::o;7340:323::-;7435:7;7493;;7482;:18;;7460:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;7581:19;7603:10;:8;:10::i;:::-;7581:32;;7631:24;7643:11;7631:7;:11;;:24;;;;:::i;:::-;7624:31;;;7340:323;;;:::o;681:246::-;739:7;768:1;763;:6;759:47;;;793:1;786:8;;;;759:47;816:9;832:1;828;:5;;;;:::i;:::-;816:17;;861:1;856;852;:5;;;;:::i;:::-;:10;844:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;918:1;911:8;;;681:246;;;;;:::o;935:132::-;993:7;1020:39;1024:1;1027;1020:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1013:46;;935:132;;;;:::o;10289:483::-;5145:4;5136:6;;:13;;;;;;;;;;;;;;;;;;10367:21:::1;10405:1;10391:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10367:40;;10436:4;10418;10423:1;10418:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;10462:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10452:4;10457:1;10452:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;10495:62;10512:4;10527:15;;;;;;;;;;;10545:11;10495:8;:62::i;:::-;10568:15;;;;;;;;;;;:66;;;10649:11;10675:1;10691:4;10718;10738:15;10568:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;5160:1;5181:5:::0;5172:6;;:14;;;;;;;;;;;;;;;;;;10289:483;:::o;10780:151::-;10837:12;;;;;;;;;;;:21;;:36;10859:13;10870:1;10859:6;:10;;:13;;;;:::i;:::-;10837:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10884:15;;;;;;;;;;;:24;;:39;10909:13;10920:1;10909:6;:10;;:13;;;;:::i;:::-;10884:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10780:151;:::o;12198:282::-;12354:7;12349:28;;12363:14;:12;:14::i;:::-;12349:28;12388:44;12406:6;12414:9;12425:6;12388:17;:44::i;:::-;12448:7;12443:29;;12457:15;:13;:15::i;:::-;12443:29;12198:282;;;;:::o;15093:166::-;15135:7;15156:15;15173;15192:19;:17;:19::i;:::-;15155:56;;;;15231:20;15243:7;15231;:11;;:20;;;;:::i;:::-;15224:27;;;;15093:166;:::o;1075:223::-;1195:7;1227:1;1223;:5;1230:12;1215:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1254:9;1270:1;1266;:5;;;;:::i;:::-;1254:17;;1289:1;1282:8;;;1075:223;;;;;:::o;7671:137::-;7729:1;7718:7;;:12;:29;;;;;7746:1;7734:8;;:13;7718:29;7714:42;;;7749:7;;7714:42;7776:1;7766:7;:11;;;;7799:1;7788:8;:12;;;;7671:137;:::o;12488:610::-;12635:15;12665:23;12703:12;12730:23;12768:12;12795:13;12822:19;12833:7;12822:10;:19::i;:::-;12620:221;;;;;;;;;;;;12870:28;12890:7;12870;:15;12878:6;12870:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;12852:7;:15;12860:6;12852:15;;;;;;;;;;;;;;;:46;;;;12930:39;12953:15;12930:7;:18;12938:9;12930:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;12909:7;:18;12917:9;12909:18;;;;;;;;;;;;;;;:60;;;;12980:16;12990:5;12980:9;:16::i;:::-;13007:23;13019:4;13025;13007:11;:23::i;:::-;13063:9;13046:44;;13055:6;13046:44;;;13074:15;13046:44;;;;;;:::i;:::-;;;;;;;;12488:610;;;;;;;;;:::o;7816:87::-;7870:1;7860:7;:11;;;;7893:2;7882:8;:13;;;;7816:87::o;15267:259::-;15318:7;15327;15347:15;15365:7;;15347:25;;15383:15;4333:21;15383:25;;15433:20;4333:21;15433:7;;:11;;:20;;;;:::i;:::-;15423:7;:30;15419:61;;;15463:7;;4333:21;15455:25;;;;;;;;15419:61;15501:7;15510;15493:25;;;;;;15267:259;;;:::o;13517:624::-;13617:7;13639;13661;13683;13705;13727;13763:23;13788:12;13802:13;13832:39;13844:7;13853;;13862:8;;13832:11;:39::i;:::-;13762:109;;;;;;13882:19;13904:10;:8;:10::i;:::-;13882:32;;13926:15;13943:23;13968:12;13997:46;14009:7;14018:4;14024:5;14031:11;13997;:46::i;:::-;13925:118;;;;;;14072:7;14081:15;14098:4;14104:15;14121:4;14127:5;14064:69;;;;;;;;;;;;;;;;;;;13517:624;;;;;;;:::o;305:136::-;363:7;390:43;394:1;397;390:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;383:50;;305:136;;;;:::o;118:179::-;176:7;196:9;212:1;208;:5;;;;:::i;:::-;196:17;;237:1;232;:6;;224:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;288:1;281:8;;;118:179;;;;:::o;13106:211::-;13159:19;13181:10;:8;:10::i;:::-;13159:32;;13202:13;13218:22;13228:11;13218:5;:9;;:22;;;;:::i;:::-;13202:38;;13276:33;13303:5;13276:7;:22;13292:4;13276:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13251:7;:22;13267:4;13251:22;;;;;;;;;;;;;;;:58;;;;13106:211;;;:::o;13325:147::-;13403:17;13415:4;13403:7;;:11;;:17;;;;:::i;:::-;13393:7;:27;;;;13444:20;13459:4;13444:10;;:14;;:20;;;;:::i;:::-;13431:10;:33;;;;13325:147;;:::o;14149:435::-;14283:7;14305;14327;14362:12;14377:28;14401:3;14377:19;14389:6;14377:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;14362:43;;14416:13;14432:29;14457:3;14432:20;14444:7;14432;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;14416:45;;14472:23;14498:28;14520:5;14498:17;14510:4;14498:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;14472:54;;14547:15;14564:4;14570:5;14539:37;;;;;;;;;14149:435;;;;;;;:::o;14592:493::-;14743:7;14765;14787;14822:15;14840:24;14852:11;14840:7;:11;;:24;;;;:::i;:::-;14822:42;;14875:12;14890:21;14899:11;14890:4;:8;;:21;;;;:::i;:::-;14875:36;;14922:13;14938:22;14948:11;14938:5;:9;;:22;;;;:::i;:::-;14922:38;;14971:23;14997:28;15019:5;14997:17;15009:4;14997:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;14971:54;;15046:7;15055:15;15072:4;15038:39;;;;;;;;;;14592:493;;;;;;;;:::o;24:655:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:2;;;414:1;411;404:12;350:2;450:1;435:238;460:6;457:1;454:13;435:238;;;528:3;557:37;590:3;578:10;557:37;:::i;:::-;552:3;545:50;624:4;619:3;615:14;608:21;;658:4;653:3;649:14;642:21;;495:178;482:1;479;475:9;470:14;;435:238;;;439:14;126:553;;;;;;;:::o;685:139::-;731:5;769:6;756:20;747:29;;785:33;812:5;785:33;:::i;:::-;737:87;;;;:::o;830:143::-;887:5;918:6;912:13;903:22;;934:33;961:5;934:33;:::i;:::-;893:80;;;;:::o;996:303::-;1067:5;1116:3;1109:4;1101:6;1097:17;1093:27;1083:2;;1134:1;1131;1124:12;1083:2;1174:6;1161:20;1199:94;1289:3;1281:6;1274:4;1266:6;1262:17;1199:94;:::i;:::-;1190:103;;1073:226;;;;;:::o;1305:133::-;1348:5;1386:6;1373:20;1364:29;;1402:30;1426:5;1402:30;:::i;:::-;1354:84;;;;:::o;1444:137::-;1498:5;1529:6;1523:13;1514:22;;1545:30;1569:5;1545:30;:::i;:::-;1504:77;;;;:::o;1587:139::-;1633:5;1671:6;1658:20;1649:29;;1687:33;1714:5;1687:33;:::i;:::-;1639:87;;;;:::o;1732:143::-;1789:5;1820:6;1814:13;1805:22;;1836:33;1863:5;1836:33;:::i;:::-;1795:80;;;;:::o;1881:262::-;1940:6;1989:2;1977:9;1968:7;1964:23;1960:32;1957:2;;;2005:1;2002;1995:12;1957:2;2048:1;2073:53;2118:7;2109:6;2098:9;2094:22;2073:53;:::i;:::-;2063:63;;2019:117;1947:196;;;;:::o;2149:284::-;2219:6;2268:2;2256:9;2247:7;2243:23;2239:32;2236:2;;;2284:1;2281;2274:12;2236:2;2327:1;2352:64;2408:7;2399:6;2388:9;2384:22;2352:64;:::i;:::-;2342:74;;2298:128;2226:207;;;;:::o;2439:407::-;2507:6;2515;2564:2;2552:9;2543:7;2539:23;2535:32;2532:2;;;2580:1;2577;2570:12;2532:2;2623:1;2648:53;2693:7;2684:6;2673:9;2669:22;2648:53;:::i;:::-;2638:63;;2594:117;2750:2;2776:53;2821:7;2812:6;2801:9;2797:22;2776:53;:::i;:::-;2766:63;;2721:118;2522:324;;;;;:::o;2852:552::-;2929:6;2937;2945;2994:2;2982:9;2973:7;2969:23;2965:32;2962:2;;;3010:1;3007;3000:12;2962:2;3053:1;3078:53;3123:7;3114:6;3103:9;3099:22;3078:53;:::i;:::-;3068:63;;3024:117;3180:2;3206:53;3251:7;3242:6;3231:9;3227:22;3206:53;:::i;:::-;3196:63;;3151:118;3308:2;3334:53;3379:7;3370:6;3359:9;3355:22;3334:53;:::i;:::-;3324:63;;3279:118;2952:452;;;;;:::o;3410:407::-;3478:6;3486;3535:2;3523:9;3514:7;3510:23;3506:32;3503:2;;;3551:1;3548;3541:12;3503:2;3594:1;3619:53;3664:7;3655:6;3644:9;3640:22;3619:53;:::i;:::-;3609:63;;3565:117;3721:2;3747:53;3792:7;3783:6;3772:9;3768:22;3747:53;:::i;:::-;3737:63;;3692:118;3493:324;;;;;:::o;3823:405::-;3907:6;3956:2;3944:9;3935:7;3931:23;3927:32;3924:2;;;3972:1;3969;3962:12;3924:2;4043:1;4032:9;4028:17;4015:31;4073:18;4065:6;4062:30;4059:2;;;4105:1;4102;4095:12;4059:2;4133:78;4203:7;4194:6;4183:9;4179:22;4133:78;:::i;:::-;4123:88;;3986:235;3914:314;;;;:::o;4234:256::-;4290:6;4339:2;4327:9;4318:7;4314:23;4310:32;4307:2;;;4355:1;4352;4345:12;4307:2;4398:1;4423:50;4465:7;4456:6;4445:9;4441:22;4423:50;:::i;:::-;4413:60;;4369:114;4297:193;;;;:::o;4496:278::-;4563:6;4612:2;4600:9;4591:7;4587:23;4583:32;4580:2;;;4628:1;4625;4618:12;4580:2;4671:1;4696:61;4749:7;4740:6;4729:9;4725:22;4696:61;:::i;:::-;4686:71;;4642:125;4570:204;;;;:::o;4780:262::-;4839:6;4888:2;4876:9;4867:7;4863:23;4859:32;4856:2;;;4904:1;4901;4894:12;4856:2;4947:1;4972:53;5017:7;5008:6;4997:9;4993:22;4972:53;:::i;:::-;4962:63;;4918:117;4846:196;;;;:::o;5048:596::-;5136:6;5144;5152;5201:2;5189:9;5180:7;5176:23;5172:32;5169:2;;;5217:1;5214;5207:12;5169:2;5260:1;5285:64;5341:7;5332:6;5321:9;5317:22;5285:64;:::i;:::-;5275:74;;5231:128;5398:2;5424:64;5480:7;5471:6;5460:9;5456:22;5424:64;:::i;:::-;5414:74;;5369:129;5537:2;5563:64;5619:7;5610:6;5599:9;5595:22;5563:64;:::i;:::-;5553:74;;5508:129;5159:485;;;;;:::o;5650:179::-;5719:10;5740:46;5782:3;5774:6;5740:46;:::i;:::-;5818:4;5813:3;5809:14;5795:28;;5730:99;;;;:::o;5835:108::-;5912:24;5930:5;5912:24;:::i;:::-;5907:3;5900:37;5890:53;;:::o;5949:118::-;6036:24;6054:5;6036:24;:::i;:::-;6031:3;6024:37;6014:53;;:::o;6103:732::-;6222:3;6251:54;6299:5;6251:54;:::i;:::-;6321:86;6400:6;6395:3;6321:86;:::i;:::-;6314:93;;6431:56;6481:5;6431:56;:::i;:::-;6510:7;6541:1;6526:284;6551:6;6548:1;6545:13;6526:284;;;6627:6;6621:13;6654:63;6713:3;6698:13;6654:63;:::i;:::-;6647:70;;6740:60;6793:6;6740:60;:::i;:::-;6730:70;;6586:224;6573:1;6570;6566:9;6561:14;;6526:284;;;6530:14;6826:3;6819:10;;6227:608;;;;;;;:::o;6841:109::-;6922:21;6937:5;6922:21;:::i;:::-;6917:3;6910:34;6900:50;;:::o;6956:147::-;7051:45;7090:5;7051:45;:::i;:::-;7046:3;7039:58;7029:74;;:::o;7109:364::-;7197:3;7225:39;7258:5;7225:39;:::i;:::-;7280:71;7344:6;7339:3;7280:71;:::i;:::-;7273:78;;7360:52;7405:6;7400:3;7393:4;7386:5;7382:16;7360:52;:::i;:::-;7437:29;7459:6;7437:29;:::i;:::-;7432:3;7428:39;7421:46;;7201:272;;;;;:::o;7479:366::-;7621:3;7642:67;7706:2;7701:3;7642:67;:::i;:::-;7635:74;;7718:93;7807:3;7718:93;:::i;:::-;7836:2;7831:3;7827:12;7820:19;;7625:220;;;:::o;7851:366::-;7993:3;8014:67;8078:2;8073:3;8014:67;:::i;:::-;8007:74;;8090:93;8179:3;8090:93;:::i;:::-;8208:2;8203:3;8199:12;8192:19;;7997:220;;;:::o;8223:366::-;8365:3;8386:67;8450:2;8445:3;8386:67;:::i;:::-;8379:74;;8462:93;8551:3;8462:93;:::i;:::-;8580:2;8575:3;8571:12;8564:19;;8369:220;;;:::o;8595:366::-;8737:3;8758:67;8822:2;8817:3;8758:67;:::i;:::-;8751:74;;8834:93;8923:3;8834:93;:::i;:::-;8952:2;8947:3;8943:12;8936:19;;8741:220;;;:::o;8967:366::-;9109:3;9130:67;9194:2;9189:3;9130:67;:::i;:::-;9123:74;;9206:93;9295:3;9206:93;:::i;:::-;9324:2;9319:3;9315:12;9308:19;;9113:220;;;:::o;9339:366::-;9481:3;9502:67;9566:2;9561:3;9502:67;:::i;:::-;9495:74;;9578:93;9667:3;9578:93;:::i;:::-;9696:2;9691:3;9687:12;9680:19;;9485:220;;;:::o;9711:366::-;9853:3;9874:67;9938:2;9933:3;9874:67;:::i;:::-;9867:74;;9950:93;10039:3;9950:93;:::i;:::-;10068:2;10063:3;10059:12;10052:19;;9857:220;;;:::o;10083:366::-;10225:3;10246:67;10310:2;10305:3;10246:67;:::i;:::-;10239:74;;10322:93;10411:3;10322:93;:::i;:::-;10440:2;10435:3;10431:12;10424:19;;10229:220;;;:::o;10455:366::-;10597:3;10618:67;10682:2;10677:3;10618:67;:::i;:::-;10611:74;;10694:93;10783:3;10694:93;:::i;:::-;10812:2;10807:3;10803:12;10796:19;;10601:220;;;:::o;10827:366::-;10969:3;10990:67;11054:2;11049:3;10990:67;:::i;:::-;10983:74;;11066:93;11155:3;11066:93;:::i;:::-;11184:2;11179:3;11175:12;11168:19;;10973:220;;;:::o;11199:366::-;11341:3;11362:67;11426:2;11421:3;11362:67;:::i;:::-;11355:74;;11438:93;11527:3;11438:93;:::i;:::-;11556:2;11551:3;11547:12;11540:19;;11345:220;;;:::o;11571:366::-;11713:3;11734:67;11798:2;11793:3;11734:67;:::i;:::-;11727:74;;11810:93;11899:3;11810:93;:::i;:::-;11928:2;11923:3;11919:12;11912:19;;11717:220;;;:::o;11943:366::-;12085:3;12106:67;12170:2;12165:3;12106:67;:::i;:::-;12099:74;;12182:93;12271:3;12182:93;:::i;:::-;12300:2;12295:3;12291:12;12284:19;;12089:220;;;:::o;12315:118::-;12402:24;12420:5;12402:24;:::i;:::-;12397:3;12390:37;12380:53;;:::o;12439:112::-;12522:22;12538:5;12522:22;:::i;:::-;12517:3;12510:35;12500:51;;:::o;12557:222::-;12650:4;12688:2;12677:9;12673:18;12665:26;;12701:71;12769:1;12758:9;12754:17;12745:6;12701:71;:::i;:::-;12655:124;;;;:::o;12785:332::-;12906:4;12944:2;12933:9;12929:18;12921:26;;12957:71;13025:1;13014:9;13010:17;13001:6;12957:71;:::i;:::-;13038:72;13106:2;13095:9;13091:18;13082:6;13038:72;:::i;:::-;12911:206;;;;;:::o;13123:332::-;13244:4;13282:2;13271:9;13267:18;13259:26;;13295:71;13363:1;13352:9;13348:17;13339:6;13295:71;:::i;:::-;13376:72;13444:2;13433:9;13429:18;13420:6;13376:72;:::i;:::-;13249:206;;;;;:::o;13461:807::-;13710:4;13748:3;13737:9;13733:19;13725:27;;13762:71;13830:1;13819:9;13815:17;13806:6;13762:71;:::i;:::-;13843:72;13911:2;13900:9;13896:18;13887:6;13843:72;:::i;:::-;13925:80;14001:2;13990:9;13986:18;13977:6;13925:80;:::i;:::-;14015;14091:2;14080:9;14076:18;14067:6;14015:80;:::i;:::-;14105:73;14173:3;14162:9;14158:19;14149:6;14105:73;:::i;:::-;14188;14256:3;14245:9;14241:19;14232:6;14188:73;:::i;:::-;13715:553;;;;;;;;;:::o;14274:210::-;14361:4;14399:2;14388:9;14384:18;14376:26;;14412:65;14474:1;14463:9;14459:17;14450:6;14412:65;:::i;:::-;14366:118;;;;:::o;14490:313::-;14603:4;14641:2;14630:9;14626:18;14618:26;;14690:9;14684:4;14680:20;14676:1;14665:9;14661:17;14654:47;14718:78;14791:4;14782:6;14718:78;:::i;:::-;14710:86;;14608:195;;;;:::o;14809:419::-;14975:4;15013:2;15002:9;14998:18;14990:26;;15062:9;15056:4;15052:20;15048:1;15037:9;15033:17;15026:47;15090:131;15216:4;15090:131;:::i;:::-;15082:139;;14980:248;;;:::o;15234:419::-;15400:4;15438:2;15427:9;15423:18;15415:26;;15487:9;15481:4;15477:20;15473:1;15462:9;15458:17;15451:47;15515:131;15641:4;15515:131;:::i;:::-;15507:139;;15405:248;;;:::o;15659:419::-;15825:4;15863:2;15852:9;15848:18;15840:26;;15912:9;15906:4;15902:20;15898:1;15887:9;15883:17;15876:47;15940:131;16066:4;15940:131;:::i;:::-;15932:139;;15830:248;;;:::o;16084:419::-;16250:4;16288:2;16277:9;16273:18;16265:26;;16337:9;16331:4;16327:20;16323:1;16312:9;16308:17;16301:47;16365:131;16491:4;16365:131;:::i;:::-;16357:139;;16255:248;;;:::o;16509:419::-;16675:4;16713:2;16702:9;16698:18;16690:26;;16762:9;16756:4;16752:20;16748:1;16737:9;16733:17;16726:47;16790:131;16916:4;16790:131;:::i;:::-;16782:139;;16680:248;;;:::o;16934:419::-;17100:4;17138:2;17127:9;17123:18;17115:26;;17187:9;17181:4;17177:20;17173:1;17162:9;17158:17;17151:47;17215:131;17341:4;17215:131;:::i;:::-;17207:139;;17105:248;;;:::o;17359:419::-;17525:4;17563:2;17552:9;17548:18;17540:26;;17612:9;17606:4;17602:20;17598:1;17587:9;17583:17;17576:47;17640:131;17766:4;17640:131;:::i;:::-;17632:139;;17530:248;;;:::o;17784:419::-;17950:4;17988:2;17977:9;17973:18;17965:26;;18037:9;18031:4;18027:20;18023:1;18012:9;18008:17;18001:47;18065:131;18191:4;18065:131;:::i;:::-;18057:139;;17955:248;;;:::o;18209:419::-;18375:4;18413:2;18402:9;18398:18;18390:26;;18462:9;18456:4;18452:20;18448:1;18437:9;18433:17;18426:47;18490:131;18616:4;18490:131;:::i;:::-;18482:139;;18380:248;;;:::o;18634:419::-;18800:4;18838:2;18827:9;18823:18;18815:26;;18887:9;18881:4;18877:20;18873:1;18862:9;18858:17;18851:47;18915:131;19041:4;18915:131;:::i;:::-;18907:139;;18805:248;;;:::o;19059:419::-;19225:4;19263:2;19252:9;19248:18;19240:26;;19312:9;19306:4;19302:20;19298:1;19287:9;19283:17;19276:47;19340:131;19466:4;19340:131;:::i;:::-;19332:139;;19230:248;;;:::o;19484:419::-;19650:4;19688:2;19677:9;19673:18;19665:26;;19737:9;19731:4;19727:20;19723:1;19712:9;19708:17;19701:47;19765:131;19891:4;19765:131;:::i;:::-;19757:139;;19655:248;;;:::o;19909:419::-;20075:4;20113:2;20102:9;20098:18;20090:26;;20162:9;20156:4;20152:20;20148:1;20137:9;20133:17;20126:47;20190:131;20316:4;20190:131;:::i;:::-;20182:139;;20080:248;;;:::o;20334:222::-;20427:4;20465:2;20454:9;20450:18;20442:26;;20478:71;20546:1;20535:9;20531:17;20522:6;20478:71;:::i;:::-;20432:124;;;;:::o;20562:831::-;20825:4;20863:3;20852:9;20848:19;20840:27;;20877:71;20945:1;20934:9;20930:17;20921:6;20877:71;:::i;:::-;20958:80;21034:2;21023:9;21019:18;21010:6;20958:80;:::i;:::-;21085:9;21079:4;21075:20;21070:2;21059:9;21055:18;21048:48;21113:108;21216:4;21207:6;21113:108;:::i;:::-;21105:116;;21231:72;21299:2;21288:9;21284:18;21275:6;21231:72;:::i;:::-;21313:73;21381:3;21370:9;21366:19;21357:6;21313:73;:::i;:::-;20830:563;;;;;;;;:::o;21399:214::-;21488:4;21526:2;21515:9;21511:18;21503:26;;21539:67;21603:1;21592:9;21588:17;21579:6;21539:67;:::i;:::-;21493:120;;;;:::o;21619:129::-;21653:6;21680:20;;:::i;:::-;21670:30;;21709:33;21737:4;21729:6;21709:33;:::i;:::-;21660:88;;;:::o;21754:75::-;21787:6;21820:2;21814:9;21804:19;;21794:35;:::o;21835:311::-;21912:4;22002:18;21994:6;21991:30;21988:2;;;22024:18;;:::i;:::-;21988:2;22074:4;22066:6;22062:17;22054:25;;22134:4;22128;22124:15;22116:23;;21917:229;;;:::o;22152:132::-;22219:4;22242:3;22234:11;;22272:4;22267:3;22263:14;22255:22;;22224:60;;;:::o;22290:114::-;22357:6;22391:5;22385:12;22375:22;;22364:40;;;:::o;22410:99::-;22462:6;22496:5;22490:12;22480:22;;22469:40;;;:::o;22515:113::-;22585:4;22617;22612:3;22608:14;22600:22;;22590:38;;;:::o;22634:184::-;22733:11;22767:6;22762:3;22755:19;22807:4;22802:3;22798:14;22783:29;;22745:73;;;;:::o;22824:169::-;22908:11;22942:6;22937:3;22930:19;22982:4;22977:3;22973:14;22958:29;;22920:73;;;;:::o;22999:305::-;23039:3;23058:20;23076:1;23058:20;:::i;:::-;23053:25;;23092:20;23110:1;23092:20;:::i;:::-;23087:25;;23246:1;23178:66;23174:74;23171:1;23168:81;23165:2;;;23252:18;;:::i;:::-;23165:2;23296:1;23293;23289:9;23282:16;;23043:261;;;;:::o;23310:185::-;23350:1;23367:20;23385:1;23367:20;:::i;:::-;23362:25;;23401:20;23419:1;23401:20;:::i;:::-;23396:25;;23440:1;23430:2;;23445:18;;:::i;:::-;23430:2;23487:1;23484;23480:9;23475:14;;23352:143;;;;:::o;23501:348::-;23541:7;23564:20;23582:1;23564:20;:::i;:::-;23559:25;;23598:20;23616:1;23598:20;:::i;:::-;23593:25;;23786:1;23718:66;23714:74;23711:1;23708:81;23703:1;23696:9;23689:17;23685:105;23682:2;;;23793:18;;:::i;:::-;23682:2;23841:1;23838;23834:9;23823:20;;23549:300;;;;:::o;23855:191::-;23895:4;23915:20;23933:1;23915:20;:::i;:::-;23910:25;;23949:20;23967:1;23949:20;:::i;:::-;23944:25;;23988:1;23985;23982:8;23979:2;;;23993:18;;:::i;:::-;23979:2;24038:1;24035;24031:9;24023:17;;23900:146;;;;:::o;24052:96::-;24089:7;24118:24;24136:5;24118:24;:::i;:::-;24107:35;;24097:51;;;:::o;24154:90::-;24188:7;24231:5;24224:13;24217:21;24206:32;;24196:48;;;:::o;24250:126::-;24287:7;24327:42;24320:5;24316:54;24305:65;;24295:81;;;:::o;24382:77::-;24419:7;24448:5;24437:16;;24427:32;;;:::o;24465:86::-;24500:7;24540:4;24533:5;24529:16;24518:27;;24508:43;;;:::o;24557:121::-;24615:9;24648:24;24666:5;24648:24;:::i;:::-;24635:37;;24625:53;;;:::o;24684:307::-;24752:1;24762:113;24776:6;24773:1;24770:13;24762:113;;;24861:1;24856:3;24852:11;24846:18;24842:1;24837:3;24833:11;24826:39;24798:2;24795:1;24791:10;24786:15;;24762:113;;;24893:6;24890:1;24887:13;24884:2;;;24973:1;24964:6;24959:3;24955:16;24948:27;24884:2;24733:258;;;;:::o;24997:281::-;25080:27;25102:4;25080:27;:::i;:::-;25072:6;25068:40;25210:6;25198:10;25195:22;25174:18;25162:10;25159:34;25156:62;25153:2;;;25221:18;;:::i;:::-;25153:2;25261:10;25257:2;25250:22;25040:238;;;:::o;25284:233::-;25323:3;25346:24;25364:5;25346:24;:::i;:::-;25337:33;;25392:66;25385:5;25382:77;25379:2;;;25462:18;;:::i;:::-;25379:2;25509:1;25502:5;25498:13;25491:20;;25327:190;;;:::o;25523:180::-;25571:77;25568:1;25561:88;25668:4;25665:1;25658:15;25692:4;25689:1;25682:15;25709:180;25757:77;25754:1;25747:88;25854:4;25851:1;25844:15;25878:4;25875:1;25868:15;25895:180;25943:77;25940:1;25933:88;26040:4;26037:1;26030:15;26064:4;26061:1;26054:15;26081:102;26122:6;26173:2;26169:7;26164:2;26157:5;26153:14;26149:28;26139:38;;26129:54;;;:::o;26189:222::-;26329:34;26325:1;26317:6;26313:14;26306:58;26398:5;26393:2;26385:6;26381:15;26374:30;26295:116;:::o;26417:176::-;26557:28;26553:1;26545:6;26541:14;26534:52;26523:70;:::o;26599:229::-;26739:34;26735:1;26727:6;26723:14;26716:58;26808:12;26803:2;26795:6;26791:15;26784:37;26705:123;:::o;26834:221::-;26974:34;26970:1;26962:6;26958:14;26951:58;27043:4;27038:2;27030:6;27026:15;27019:29;26940:115;:::o;27061:177::-;27201:29;27197:1;27189:6;27185:14;27178:53;27167:71;:::o;27244:177::-;27384:29;27380:1;27372:6;27368:14;27361:53;27350:71;:::o;27427:179::-;27567:31;27563:1;27555:6;27551:14;27544:55;27533:73;:::o;27612:220::-;27752:34;27748:1;27740:6;27736:14;27729:58;27821:3;27816:2;27808:6;27804:15;27797:28;27718:114;:::o;27838:182::-;27978:34;27974:1;27966:6;27962:14;27955:58;27944:76;:::o;28026:228::-;28166:34;28162:1;28154:6;28150:14;28143:58;28235:11;28230:2;28222:6;28218:15;28211:36;28132:122;:::o;28260:224::-;28400:34;28396:1;28388:6;28384:14;28377:58;28469:7;28464:2;28456:6;28452:15;28445:32;28366:118;:::o;28490:223::-;28630:34;28626:1;28618:6;28614:14;28607:58;28699:6;28694:2;28686:6;28682:15;28675:31;28596:117;:::o;28719:167::-;28859:19;28855:1;28847:6;28843:14;28836:43;28825:61;:::o;28892:122::-;28965:24;28983:5;28965:24;:::i;:::-;28958:5;28955:35;28945:2;;29004:1;29001;28994:12;28945:2;28935:79;:::o;29020:116::-;29090:21;29105:5;29090:21;:::i;:::-;29083:5;29080:32;29070:2;;29126:1;29123;29116:12;29070:2;29060:76;:::o;29142:122::-;29215:24;29233:5;29215:24;:::i;:::-;29208:5;29205:35;29195:2;;29254:1;29251;29244:12;29195:2;29185:79;:::o

Swarm Source

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