ETH Price: $3,257.23 (+2.58%)
Gas: 3 Gwei

Token

t.me/superflect (SUPERFLECT)
 

Overview

Max Total Supply

1,049.088054565 SUPERFLECT

Holders

11

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1.138664504 SUPERFLECT

Value
$0.00
0xd5418ba0d21fbfb52db715649e50bed47eadd828
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:
SUPERFLECT

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-12-19
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.6.0;

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

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

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

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

        return c;
    }

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

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) 
    {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

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

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) 
    {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

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

library Address {

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

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

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

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

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

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

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

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

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address private _owner;

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

    constructor () internal {
        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);
    }

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

contract SUPERFLECT is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;

    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _isExcluded;
    address[] private _excluded;

    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 1250 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _tBurnTotal;

    string private _name = 't.me/superflect';
    string private _symbol = 'SUPERFLECT';
    uint8 private _decimals = 9;
    
    // Tax Fee - 15%
    // Burn Fee - 5%
    // Tx Limit - 100
    uint256 private _taxFee = 15;
    uint256 private _burnFee = 5;
    uint256 private _maxTxAmount = 100e9;

    constructor () public {
        _rOwned[_msgSender()] = _rTotal;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        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 increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

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

    function isExcluded(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }

    function totalBurn() public view returns (uint256) {
        return _tBurnTotal;
    }

    function deliver(uint256 tAmount) public {
        address sender = _msgSender();
        require(!_isExcluded[sender], "Excluded addresses cannot call this function");
        (uint256 rAmount,,,,,) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount,,,,,) = _getValues(tAmount);
            return rAmount;
        } else {
            (,uint256 rTransferAmount,,,,) = _getValues(tAmount);
            return rTransferAmount;
        }
    }

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

    function excludeAccount(address account) external onlyOwner() {
        require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.');
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeAccount(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is already excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    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 sender, address recipient, uint256 amount) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if(sender != owner() && recipient != owner())
            require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");

        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }
    }

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

    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn) = _getValues(tAmount);
        uint256 rBurn =  tBurn.mul(currentRate);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _reflectFee(rFee, rBurn, tFee, tBurn);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn) = _getValues(tAmount);
        uint256 rBurn =  tBurn.mul(currentRate);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _reflectFee(rFee, rBurn, tFee, tBurn);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn) = _getValues(tAmount);
        uint256 rBurn =  tBurn.mul(currentRate);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _reflectFee(rFee, rBurn, tFee, tBurn);
        emit Transfer(sender, recipient, tTransferAmount);
    }

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

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

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

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tBurn, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rBurn = tBurn.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rBurn);
        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;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _getTaxFee() private view returns(uint256) {
        return _taxFee;
    }

    function _getMaxTxAmount() private view returns(uint256) {
        return _maxTxAmount;
    }

    function _setTaxFee(uint256 taxFee) external onlyOwner() {
        require(taxFee >= 1 && taxFee <= 25, 'taxFee should be in 1 - 25');
        _taxFee = taxFee;
    }
    
    function _setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        require(maxTxAmount >= 1000e9 , 'maxTxAmount should be greater than 1000e9');
        _maxTxAmount = maxTxAmount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"_setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"_setTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405265012309ce5400600655600654600019816200001c57fe5b06600019036007556040518060400160405280600f81526020017f742e6d652f7375706572666c6563740000000000000000000000000000000000815250600a90805190602001906200007192919062000287565b506040518060400160405280600a81526020017f5355504552464c45435400000000000000000000000000000000000000000000815250600b9080519060200190620000bf92919062000287565b506009600c60006101000a81548160ff021916908360ff160217905550600f600d556005600e5564174876e800600f55348015620000fc57600080fd5b5060006200010f6200027f60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060075460016000620001c46200027f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620002126200027f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6006546040518082815260200191505060405180910390a36200032d565b600033905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002ca57805160ff1916838001178555620002fb565b82800160010185558215620002fb579182015b82811115620002fa578251825591602001919060010190620002dd565b5b5090506200030a91906200030e565b5090565b5b80821115620003295760008160009055506001016200030f565b5090565b6139bf806200033d6000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c80635880b873116100c3578063a9059cbb1161007c578063a9059cbb1461063e578063cba0e996146106a2578063dd62ed3e146106fc578063f2cc0c1814610774578063f2fde38b146107b8578063f84354f1146107fc57610158565b80635880b8731461049357806370a08231146104c1578063715018a6146105195780638da5cb5b1461052357806395d89b4114610557578063a457c2d7146105da57610158565b80632d838119116101155780632d83811914610332578063313ce5671461037457806339509351146103955780633bd5d173146103f95780633c9f861d146104275780634549b0391461044557610158565b806306fdde031461015d578063095ea7b3146101e057806313114a9d1461024457806318160ddd146102625780631bbae6e01461028057806323b872dd146102ae575b600080fd5b610165610840565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101a557808201518184015260208101905061018a565b50505050905090810190601f1680156101d25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61022c600480360360408110156101f657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108e2565b60405180821515815260200191505060405180910390f35b61024c610900565b6040518082815260200191505060405180910390f35b61026a61090a565b6040518082815260200191505060405180910390f35b6102ac6004803603602081101561029657600080fd5b8101908080359060200190929190505050610914565b005b61031a600480360360608110156102c457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a44565b60405180821515815260200191505060405180910390f35b61035e6004803603602081101561034857600080fd5b8101908080359060200190929190505050610b1d565b6040518082815260200191505060405180910390f35b61037c610ba1565b604051808260ff16815260200191505060405180910390f35b6103e1600480360360408110156103ab57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bb8565b60405180821515815260200191505060405180910390f35b6104256004803603602081101561040f57600080fd5b8101908080359060200190929190505050610c6b565b005b61042f610dfc565b6040518082815260200191505060405180910390f35b61047d6004803603604081101561045b57600080fd5b8101908080359060200190929190803515159060200190929190505050610e06565b6040518082815260200191505060405180910390f35b6104bf600480360360208110156104a957600080fd5b8101908080359060200190929190505050610ebd565b005b610503600480360360208110156104d757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611013565b6040518082815260200191505060405180910390f35b6105216110fe565b005b61052b611284565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61055f6112ad565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561059f578082015181840152602081019050610584565b50505050905090810190601f1680156105cc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610626600480360360408110156105f057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061134f565b60405180821515815260200191505060405180910390f35b61068a6004803603604081101561065457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061141c565b60405180821515815260200191505060405180910390f35b6106e4600480360360208110156106b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061143a565b60405180821515815260200191505060405180910390f35b61075e6004803603604081101561071257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611490565b6040518082815260200191505060405180910390f35b6107b66004803603602081101561078a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611517565b005b6107fa600480360360208110156107ce57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118ca565b005b61083e6004803603602081101561081257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ad5565b005b6060600a8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108d85780601f106108ad576101008083540402835291602001916108d8565b820191906000526020600020905b8154815290600101906020018083116108bb57829003601f168201915b5050505050905090565b60006108f66108ef611e5f565b8484611e67565b6001905092915050565b6000600854905090565b6000600654905090565b61091c611e5f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b64e8d4a51000811015610a3a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806137996029913960400191505060405180910390fd5b80600f8190555050565b6000610a5184848461205e565b610b1284610a5d611e5f565b610b0d8560405180606001604052806028815260200161387d60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ac3611e5f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461258e9092919063ffffffff16565b611e67565b600190509392505050565b6000600754821115610b7a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806137c2602a913960400191505060405180910390fd5b6000610b8461264e565b9050610b99818461267990919063ffffffff16565b915050919050565b6000600c60009054906101000a900460ff16905090565b6000610c61610bc5611e5f565b84610c5c8560036000610bd6611e5f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126c390919063ffffffff16565b611e67565b6001905092915050565b6000610c75611e5f565b9050600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610d1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613939602c913960400191505060405180910390fd5b6000610d258361274b565b50505050509050610d7e81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127b390919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610dd6816007546127b390919063ffffffff16565b600781905550610df1836008546126c390919063ffffffff16565b600881905550505050565b6000600954905090565b6000600654831115610e80576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b81610ea0576000610e908461274b565b5050505050905080915050610eb7565b6000610eab8461274b565b50505050915050809150505b92915050565b610ec5611e5f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f85576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60018110158015610f97575060198111155b611009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f7461784665652073686f756c6420626520696e2031202d20323500000000000081525060200191505060405180910390fd5b80600d8190555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156110ae57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506110f9565b6110f6600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d565b90505b919050565b611106611e5f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600b8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113455780601f1061131a57610100808354040283529160200191611345565b820191906000526020600020905b81548152906001019060200180831161132857829003601f168201915b5050505050905090565b600061141261135c611e5f565b8461140d856040518060600160405280602581526020016139656025913960036000611386611e5f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461258e9092919063ffffffff16565b611e67565b6001905092915050565b6000611430611429611e5f565b848461205e565b6001905092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61151f611e5f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611678576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806139176022913960400191505060405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561180c576117c8600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506005819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6118d2611e5f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611992576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a18576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806137ec6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611add611e5f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611c5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b600580549050811015611e5b578173ffffffffffffffffffffffffffffffffffffffff1660058281548110611c9057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611e4e57600560016005805490500381548110611cec57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660058281548110611d2457fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506005805480611e1457fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611e5b565b8080600101915050611c5f565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611eed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806138f36024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f73576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806138126022913960400191505060405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156120e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806138ce6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561216a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806137766023913960400191505060405180910390fd5b600081116121c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806138a56029913960400191505060405180910390fd5b6121cb611284565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156122395750612209611284565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561229a57600f54811115612299576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806138346028913960400191505060405180910390fd5b5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561233d5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156123525761234d8383836127fd565b612589565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156123f55750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561240a57612405838383612a7b565b612588565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156124ae5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156124c3576124be838383612cf9565b612587565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156125655750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561257a57612575838383612ee2565b612586565b612585838383612cf9565b5b5b5b5b505050565b600083831115829061263b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156126005780820151818401526020810190506125e5565b50505050905090810190601f16801561262d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080600061265b6131f5565b91509150612672818361267990919063ffffffff16565b9250505090565b60006126bb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613486565b905092915050565b600080828401905083811015612741576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008060008060008060008060006127688a600d54600e5461354c565b925092509250600061277861264e565b9050600080600061278b8e8787876135e2565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006127f583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061258e565b905092915050565b600061280761264e565b905060008060008060008061281b8861274b565b955095509550955095509550600061283c888361366b90919063ffffffff16565b905061289089600260008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127b390919063ffffffff16565b600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061292587600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127b390919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129ba86600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126c390919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a09858285856136f1565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050505050505050565b6000612a8561264e565b9050600080600080600080612a998861274b565b9550955095509550955095506000612aba888361366b90919063ffffffff16565b9050612b0e87600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127b390919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ba384600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126c390919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c3886600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126c390919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c87858285856136f1565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050505050505050565b6000612d0361264e565b9050600080600080600080612d178861274b565b9550955095509550955095506000612d38888361366b90919063ffffffff16565b9050612d8c87600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127b390919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e2186600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126c390919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e70858285856136f1565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050505050505050565b6000612eec61264e565b9050600080600080600080612f008861274b565b9550955095509550955095506000612f21888361366b90919063ffffffff16565b9050612f7589600260008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127b390919063ffffffff16565b600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061300a87600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127b390919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061309f84600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126c390919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061313486600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126c390919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613183858285856136f1565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050505050505050565b600080600060075490506000600654905060005b6005805490508110156134495782600160006005848154811061322857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061330f57508160026000600584815481106132a757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156133265760075460065494509450505050613482565b6133af600160006005848154811061333a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846127b390919063ffffffff16565b925061343a60026000600584815481106133c557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836127b390919063ffffffff16565b91508080600101915050613209565b5061346160065460075461267990919063ffffffff16565b82101561347957600754600654935093505050613482565b81819350935050505b9091565b60008083118290613532576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156134f75780820151818401526020810190506134dc565b50505050905090810190601f1680156135245780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161353e57fe5b049050809150509392505050565b600080600080613578606461356a888a61366b90919063ffffffff16565b61267990919063ffffffff16565b905060006135a26064613594888b61366b90919063ffffffff16565b61267990919063ffffffff16565b905060006135cb826135bd858c6127b390919063ffffffff16565b6127b390919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806135fb858961366b90919063ffffffff16565b90506000613612868961366b90919063ffffffff16565b90506000613629878961366b90919063ffffffff16565b905060006136528261364485876127b390919063ffffffff16565b6127b390919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083141561367e57600090506136eb565b600082840290508284828161368f57fe5b04146136e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061385c6021913960400191505060405180910390fd5b809150505b92915050565b6137188361370a866007546127b390919063ffffffff16565b6127b390919063ffffffff16565b600781905550613733826008546126c390919063ffffffff16565b60088190555061374e816009546126c390919063ffffffff16565b600981905550613769816006546127b390919063ffffffff16565b6006819055505050505056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573736d61785478416d6f756e742073686f756c642062652067726561746572207468616e20313030306539416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220079c30ac7d569c52a3c1f836a23fc6f7597d49ad8fd0caf42df6e12127286d3564736f6c634300060c0033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101585760003560e01c80635880b873116100c3578063a9059cbb1161007c578063a9059cbb1461063e578063cba0e996146106a2578063dd62ed3e146106fc578063f2cc0c1814610774578063f2fde38b146107b8578063f84354f1146107fc57610158565b80635880b8731461049357806370a08231146104c1578063715018a6146105195780638da5cb5b1461052357806395d89b4114610557578063a457c2d7146105da57610158565b80632d838119116101155780632d83811914610332578063313ce5671461037457806339509351146103955780633bd5d173146103f95780633c9f861d146104275780634549b0391461044557610158565b806306fdde031461015d578063095ea7b3146101e057806313114a9d1461024457806318160ddd146102625780631bbae6e01461028057806323b872dd146102ae575b600080fd5b610165610840565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101a557808201518184015260208101905061018a565b50505050905090810190601f1680156101d25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61022c600480360360408110156101f657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108e2565b60405180821515815260200191505060405180910390f35b61024c610900565b6040518082815260200191505060405180910390f35b61026a61090a565b6040518082815260200191505060405180910390f35b6102ac6004803603602081101561029657600080fd5b8101908080359060200190929190505050610914565b005b61031a600480360360608110156102c457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a44565b60405180821515815260200191505060405180910390f35b61035e6004803603602081101561034857600080fd5b8101908080359060200190929190505050610b1d565b6040518082815260200191505060405180910390f35b61037c610ba1565b604051808260ff16815260200191505060405180910390f35b6103e1600480360360408110156103ab57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bb8565b60405180821515815260200191505060405180910390f35b6104256004803603602081101561040f57600080fd5b8101908080359060200190929190505050610c6b565b005b61042f610dfc565b6040518082815260200191505060405180910390f35b61047d6004803603604081101561045b57600080fd5b8101908080359060200190929190803515159060200190929190505050610e06565b6040518082815260200191505060405180910390f35b6104bf600480360360208110156104a957600080fd5b8101908080359060200190929190505050610ebd565b005b610503600480360360208110156104d757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611013565b6040518082815260200191505060405180910390f35b6105216110fe565b005b61052b611284565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61055f6112ad565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561059f578082015181840152602081019050610584565b50505050905090810190601f1680156105cc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610626600480360360408110156105f057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061134f565b60405180821515815260200191505060405180910390f35b61068a6004803603604081101561065457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061141c565b60405180821515815260200191505060405180910390f35b6106e4600480360360208110156106b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061143a565b60405180821515815260200191505060405180910390f35b61075e6004803603604081101561071257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611490565b6040518082815260200191505060405180910390f35b6107b66004803603602081101561078a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611517565b005b6107fa600480360360208110156107ce57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118ca565b005b61083e6004803603602081101561081257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ad5565b005b6060600a8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108d85780601f106108ad576101008083540402835291602001916108d8565b820191906000526020600020905b8154815290600101906020018083116108bb57829003601f168201915b5050505050905090565b60006108f66108ef611e5f565b8484611e67565b6001905092915050565b6000600854905090565b6000600654905090565b61091c611e5f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b64e8d4a51000811015610a3a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806137996029913960400191505060405180910390fd5b80600f8190555050565b6000610a5184848461205e565b610b1284610a5d611e5f565b610b0d8560405180606001604052806028815260200161387d60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ac3611e5f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461258e9092919063ffffffff16565b611e67565b600190509392505050565b6000600754821115610b7a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806137c2602a913960400191505060405180910390fd5b6000610b8461264e565b9050610b99818461267990919063ffffffff16565b915050919050565b6000600c60009054906101000a900460ff16905090565b6000610c61610bc5611e5f565b84610c5c8560036000610bd6611e5f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126c390919063ffffffff16565b611e67565b6001905092915050565b6000610c75611e5f565b9050600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610d1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613939602c913960400191505060405180910390fd5b6000610d258361274b565b50505050509050610d7e81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127b390919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610dd6816007546127b390919063ffffffff16565b600781905550610df1836008546126c390919063ffffffff16565b600881905550505050565b6000600954905090565b6000600654831115610e80576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b81610ea0576000610e908461274b565b5050505050905080915050610eb7565b6000610eab8461274b565b50505050915050809150505b92915050565b610ec5611e5f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f85576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60018110158015610f97575060198111155b611009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f7461784665652073686f756c6420626520696e2031202d20323500000000000081525060200191505060405180910390fd5b80600d8190555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156110ae57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506110f9565b6110f6600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d565b90505b919050565b611106611e5f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600b8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113455780601f1061131a57610100808354040283529160200191611345565b820191906000526020600020905b81548152906001019060200180831161132857829003601f168201915b5050505050905090565b600061141261135c611e5f565b8461140d856040518060600160405280602581526020016139656025913960036000611386611e5f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461258e9092919063ffffffff16565b611e67565b6001905092915050565b6000611430611429611e5f565b848461205e565b6001905092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61151f611e5f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611678576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806139176022913960400191505060405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561180c576117c8600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506005819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6118d2611e5f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611992576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a18576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806137ec6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611add611e5f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611c5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b600580549050811015611e5b578173ffffffffffffffffffffffffffffffffffffffff1660058281548110611c9057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611e4e57600560016005805490500381548110611cec57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660058281548110611d2457fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506005805480611e1457fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611e5b565b8080600101915050611c5f565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611eed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806138f36024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f73576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806138126022913960400191505060405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156120e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806138ce6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561216a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806137766023913960400191505060405180910390fd5b600081116121c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806138a56029913960400191505060405180910390fd5b6121cb611284565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156122395750612209611284565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561229a57600f54811115612299576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806138346028913960400191505060405180910390fd5b5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561233d5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156123525761234d8383836127fd565b612589565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156123f55750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561240a57612405838383612a7b565b612588565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156124ae5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156124c3576124be838383612cf9565b612587565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156125655750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561257a57612575838383612ee2565b612586565b612585838383612cf9565b5b5b5b5b505050565b600083831115829061263b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156126005780820151818401526020810190506125e5565b50505050905090810190601f16801561262d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080600061265b6131f5565b91509150612672818361267990919063ffffffff16565b9250505090565b60006126bb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613486565b905092915050565b600080828401905083811015612741576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008060008060008060008060006127688a600d54600e5461354c565b925092509250600061277861264e565b9050600080600061278b8e8787876135e2565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006127f583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061258e565b905092915050565b600061280761264e565b905060008060008060008061281b8861274b565b955095509550955095509550600061283c888361366b90919063ffffffff16565b905061289089600260008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127b390919063ffffffff16565b600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061292587600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127b390919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129ba86600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126c390919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a09858285856136f1565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050505050505050565b6000612a8561264e565b9050600080600080600080612a998861274b565b9550955095509550955095506000612aba888361366b90919063ffffffff16565b9050612b0e87600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127b390919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ba384600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126c390919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c3886600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126c390919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c87858285856136f1565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050505050505050565b6000612d0361264e565b9050600080600080600080612d178861274b565b9550955095509550955095506000612d38888361366b90919063ffffffff16565b9050612d8c87600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127b390919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e2186600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126c390919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e70858285856136f1565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050505050505050565b6000612eec61264e565b9050600080600080600080612f008861274b565b9550955095509550955095506000612f21888361366b90919063ffffffff16565b9050612f7589600260008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127b390919063ffffffff16565b600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061300a87600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127b390919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061309f84600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126c390919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061313486600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126c390919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613183858285856136f1565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050505050505050565b600080600060075490506000600654905060005b6005805490508110156134495782600160006005848154811061322857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061330f57508160026000600584815481106132a757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156133265760075460065494509450505050613482565b6133af600160006005848154811061333a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846127b390919063ffffffff16565b925061343a60026000600584815481106133c557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836127b390919063ffffffff16565b91508080600101915050613209565b5061346160065460075461267990919063ffffffff16565b82101561347957600754600654935093505050613482565b81819350935050505b9091565b60008083118290613532576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156134f75780820151818401526020810190506134dc565b50505050905090810190601f1680156135245780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161353e57fe5b049050809150509392505050565b600080600080613578606461356a888a61366b90919063ffffffff16565b61267990919063ffffffff16565b905060006135a26064613594888b61366b90919063ffffffff16565b61267990919063ffffffff16565b905060006135cb826135bd858c6127b390919063ffffffff16565b6127b390919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806135fb858961366b90919063ffffffff16565b90506000613612868961366b90919063ffffffff16565b90506000613629878961366b90919063ffffffff16565b905060006136528261364485876127b390919063ffffffff16565b6127b390919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083141561367e57600090506136eb565b600082840290508284828161368f57fe5b04146136e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061385c6021913960400191505060405180910390fd5b809150505b92915050565b6137188361370a866007546127b390919063ffffffff16565b6127b390919063ffffffff16565b600781905550613733826008546126c390919063ffffffff16565b60088190555061374e816009546126c390919063ffffffff16565b600981905550613769816006546127b390919063ffffffff16565b6006819055505050505056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573736d61785478416d6f756e742073686f756c642062652067726561746572207468616e20313030306539416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220079c30ac7d569c52a3c1f836a23fc6f7597d49ad8fd0caf42df6e12127286d3564736f6c634300060c0033

Deployed Bytecode Sourcemap

6899:12152:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7960:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8872:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;9983:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8237:95;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18849:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9041:313;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11003:253;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8146:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;9362:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10174:377;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10078:88;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10559:436;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18668:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8340:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6492:148;;;:::i;:::-;;6278:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8051:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9588:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8546:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;9865:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8721:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11264:443;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6648:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11715:478;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7960:83;7997:13;8030:5;8023:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7960:83;:::o;8872:161::-;8947:4;8964:39;8973:12;:10;:12::i;:::-;8987:7;8996:6;8964:8;:39::i;:::-;9021:4;9014:11;;8872:161;;;;:::o;9983:87::-;10025:7;10052:10;;10045:17;;9983:87;:::o;8237:95::-;8290:7;8317;;8310:14;;8237:95;:::o;18849:199::-;6415:12;:10;:12::i;:::-;6405:22;;:6;;;;;;;;;;:22;;;6397:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18950:6:::1;18935:11;:21;;18927:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19029:11;19014:12;:26;;;;18849:199:::0;:::o;9041:313::-;9139:4;9156:36;9166:6;9174:9;9185:6;9156:9;:36::i;:::-;9203:121;9212:6;9220:12;:10;:12::i;:::-;9234:89;9272:6;9234:89;;;;;;;;;;;;;;;;;:11;:19;9246:6;9234:19;;;;;;;;;;;;;;;:33;9254:12;:10;:12::i;:::-;9234:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;9203:8;:121::i;:::-;9342:4;9335:11;;9041:313;;;;;:::o;11003:253::-;11069:7;11108;;11097;:18;;11089:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11173:19;11196:10;:8;:10::i;:::-;11173:33;;11224:24;11236:11;11224:7;:11;;:24;;;;:::i;:::-;11217:31;;;11003:253;;;:::o;8146:83::-;8187:5;8212:9;;;;;;;;;;;8205:16;;8146:83;:::o;9362:218::-;9450:4;9467:83;9476:12;:10;:12::i;:::-;9490:7;9499:50;9538:10;9499:11;:25;9511:12;:10;:12::i;:::-;9499:25;;;;;;;;;;;;;;;:34;9525:7;9499:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;9467:8;:83::i;:::-;9568:4;9561:11;;9362:218;;;;:::o;10174:377::-;10226:14;10243:12;:10;:12::i;:::-;10226:29;;10275:11;:19;10287:6;10275:19;;;;;;;;;;;;;;;;;;;;;;;;;10274:20;10266:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10355:15;10379:19;10390:7;10379:10;:19::i;:::-;10354:44;;;;;;;10427:28;10447:7;10427;:15;10435:6;10427:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;10409:7;:15;10417:6;10409:15;;;;;;;;;;;;;;;:46;;;;10476:20;10488:7;10476;;:11;;:20;;;;:::i;:::-;10466:7;:30;;;;10520:23;10535:7;10520:10;;:14;;:23;;;;:::i;:::-;10507:10;:36;;;;10174:377;;;:::o;10078:88::-;10120:7;10147:11;;10140:18;;10078:88;:::o;10559:436::-;10649:7;10688;;10677;:18;;10669:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10747:17;10742:246;;10782:15;10806:19;10817:7;10806:10;:19::i;:::-;10781:44;;;;;;;10847:7;10840:14;;;;;10742:246;10889:23;10920:19;10931:7;10920:10;:19::i;:::-;10887:52;;;;;;;10961:15;10954:22;;;10559:436;;;;;:::o;18668:169::-;6415:12;:10;:12::i;:::-;6405:22;;:6;;;;;;;;;;:22;;;6397:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18754:1:::1;18744:6;:11;;:27;;;;;18769:2;18759:6;:12;;18744:27;18736:66;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;18823:6;18813:7;:16;;;;18668:169:::0;:::o;8340:198::-;8406:7;8430:11;:20;8442:7;8430:20;;;;;;;;;;;;;;;;;;;;;;;;;8426:49;;;8459:7;:16;8467:7;8459:16;;;;;;;;;;;;;;;;8452:23;;;;8426:49;8493:37;8513:7;:16;8521:7;8513:16;;;;;;;;;;;;;;;;8493:19;:37::i;:::-;8486:44;;8340:198;;;;:::o;6492:148::-;6415:12;:10;:12::i;:::-;6405:22;;:6;;;;;;;;;;:22;;;6397:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6599:1:::1;6562:40;;6583:6;::::0;::::1;;;;;;;;6562:40;;;;;;;;;;;;6630:1;6613:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6492:148::o:0;6278:79::-;6316:7;6343:6;;;;;;;;;;;6336:13;;6278:79;:::o;8051:87::-;8090:13;8123:7;8116:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8051:87;:::o;9588:269::-;9681:4;9698:129;9707:12;:10;:12::i;:::-;9721:7;9730:96;9769:15;9730:96;;;;;;;;;;;;;;;;;:11;:25;9742:12;:10;:12::i;:::-;9730:25;;;;;;;;;;;;;;;:34;9756:7;9730:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;9698:8;:129::i;:::-;9845:4;9838:11;;9588:269;;;;:::o;8546:167::-;8624:4;8641:42;8651:12;:10;:12::i;:::-;8665:9;8676:6;8641:9;:42::i;:::-;8701:4;8694:11;;8546:167;;;;:::o;9865:110::-;9923:4;9947:11;:20;9959:7;9947:20;;;;;;;;;;;;;;;;;;;;;;;;;9940:27;;9865:110;;;:::o;8721:143::-;8802:7;8829:11;:18;8841:5;8829:18;;;;;;;;;;;;;;;:27;8848:7;8829:27;;;;;;;;;;;;;;;;8822:34;;8721:143;;;;:::o;11264:443::-;6415:12;:10;:12::i;:::-;6405:22;;:6;;;;;;;;;;:22;;;6397:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11356:42:::1;11345:53;;:7;:53;;;;11337:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11457:11;:20;11469:7;11457:20;;;;;;;;;;;;;;;;;;;;;;;;;11456:21;11448:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;11542:1;11523:7;:16;11531:7;11523:16;;;;;;;;;;;;;;;;:20;11520:108;;;11579:37;11599:7;:16;11607:7;11599:16;;;;;;;;;;;;;;;;11579:19;:37::i;:::-;11560:7;:16;11568:7;11560:16;;;;;;;;;;;;;;;:56;;;;11520:108;11661:4;11638:11;:20;11650:7;11638:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;11676:9;11691:7;11676:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11264:443:::0;:::o;6648:244::-;6415:12;:10;:12::i;:::-;6405:22;;:6;;;;;;;;;;:22;;;6397:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6757:1:::1;6737:22;;:8;:22;;;;6729:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6847:8;6818:38;;6839:6;::::0;::::1;;;;;;;;6818:38;;;;;;;;;;;;6876:8;6867:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6648:244:::0;:::o;11715:478::-;6415:12;:10;:12::i;:::-;6405:22;;:6;;;;;;;;;;:22;;;6397:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11796:11:::1;:20;11808:7;11796:20;;;;;;;;;;;;;;;;;;;;;;;;;11788:60;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;11864:9;11859:327;11883:9;:16;;;;11879:1;:20;11859:327;;;11941:7;11925:23;;:9;11935:1;11925:12;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;11921:254;;;11984:9;12013:1;11994:9;:16;;;;:20;11984:31;;;;;;;;;;;;;;;;;;;;;;;;;11969:9;11979:1;11969:12;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;12053:1;12034:7;:16;12042:7;12034:16;;;;;;;;;;;;;;;:20;;;;12096:5;12073:11;:20;12085:7;12073:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;12120:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12154:5;;11921:254;11901:3;;;;;;;11859:327;;;;11715:478:::0;:::o;95:112::-;148:15;189:10;182:17;;95:112;:::o;12201:337::-;12311:1;12294:19;;:5;:19;;;;12286:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12392:1;12373:21;;:7;:21;;;;12365:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12476:6;12446:11;:18;12458:5;12446:18;;;;;;;;;;;;;;;:27;12465:7;12446:27;;;;;;;;;;;;;;;:36;;;;12514:7;12498:32;;12507:5;12498:32;;;12523:6;12498:32;;;;;;;;;;;;;;;;;;12201:337;;;:::o;12546:1080::-;12661:1;12643:20;;:6;:20;;;;12635:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12745:1;12724:23;;:9;:23;;;;12716:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12815:1;12806:6;:10;12798:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12888:7;:5;:7::i;:::-;12878:17;;:6;:17;;;;:41;;;;;12912:7;:5;:7::i;:::-;12899:20;;:9;:20;;;;12878:41;12875:134;;;12952:12;;12942:6;:22;;12934:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12875:134;13026:11;:19;13038:6;13026:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;13050:11;:22;13062:9;13050:22;;;;;;;;;;;;;;;;;;;;;;;;;13049:23;13026:46;13022:597;;;13089:48;13111:6;13119:9;13130:6;13089:21;:48::i;:::-;13022:597;;;13160:11;:19;13172:6;13160:19;;;;;;;;;;;;;;;;;;;;;;;;;13159:20;:46;;;;;13183:11;:22;13195:9;13183:22;;;;;;;;;;;;;;;;;;;;;;;;;13159:46;13155:464;;;13222:46;13242:6;13250:9;13261:6;13222:19;:46::i;:::-;13155:464;;;13291:11;:19;13303:6;13291:19;;;;;;;;;;;;;;;;;;;;;;;;;13290:20;:47;;;;;13315:11;:22;13327:9;13315:22;;;;;;;;;;;;;;;;;;;;;;;;;13314:23;13290:47;13286:333;;;13354:44;13372:6;13380:9;13391:6;13354:17;:44::i;:::-;13286:333;;;13420:11;:19;13432:6;13420:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;13443:11;:22;13455:9;13443:22;;;;;;;;;;;;;;;;;;;;;;;;;13420:45;13416:203;;;13482:48;13504:6;13512:9;13523:6;13482:21;:48::i;:::-;13416:203;;;13563:44;13581:6;13589:9;13600:6;13563:17;:44::i;:::-;13416:203;13286:333;13155:464;13022:597;12546:1080;;;:::o;1511:198::-;1597:7;1636:1;1631;:6;;1639:12;1623:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1663:9;1679:1;1675;:5;1663:17;;1700:1;1693:8;;;1511:198;;;;;:::o;17738:163::-;17779:7;17800:15;17817;17836:19;:17;:19::i;:::-;17799:56;;;;17873:20;17885:7;17873;:11;;:20;;;;:::i;:::-;17866:27;;;;17738:163;:::o;2202:138::-;2260:7;2293:39;2297:1;2300;2293:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2286:46;;2202:138;;;;:::o;1166:187::-;1224:7;1250:9;1266:1;1262;:5;1250:17;;1291:1;1286;:6;;1278:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1344:1;1337:8;;;1166:187;;;;:::o;16486:468::-;16545:7;16554;16563;16572;16581;16590;16611:23;16636:12;16650:13;16667:39;16679:7;16688;;16697:8;;16667:11;:39::i;:::-;16610:96;;;;;;16717:19;16740:10;:8;:10::i;:::-;16717:33;;16762:15;16779:23;16804:12;16820:46;16832:7;16841:4;16847:5;16854:11;16820;:46::i;:::-;16761:105;;;;;;16885:7;16894:15;16911:4;16917:15;16934:4;16940:5;16877:69;;;;;;;;;;;;;;;;;;;16486:468;;;;;;;:::o;1361:142::-;1419:7;1452:43;1456:1;1459;1452:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1445:50;;1361:142;;;;:::o;14859:629::-;14961:19;14984:10;:8;:10::i;:::-;14961:33;;15006:15;15023:23;15048:12;15062:23;15087:12;15101:13;15118:19;15129:7;15118:10;:19::i;:::-;15005:132;;;;;;;;;;;;15148:13;15165:22;15175:11;15165:5;:9;;:22;;;;:::i;:::-;15148:39;;15216:28;15236:7;15216;:15;15224:6;15216:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;15198:7;:15;15206:6;15198:15;;;;;;;;;;;;;;;:46;;;;15273:28;15293:7;15273;:15;15281:6;15273:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;15255:7;:15;15263:6;15255:15;;;;;;;;;;;;;;;:46;;;;15333:39;15356:15;15333:7;:18;15341:9;15333:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;15312:7;:18;15320:9;15312:18;;;;;;;;;;;;;;;:60;;;;15383:37;15395:4;15401:5;15408:4;15414:5;15383:11;:37::i;:::-;15453:9;15436:44;;15445:6;15436:44;;;15464:15;15436:44;;;;;;;;;;;;;;;;;;14859:629;;;;;;;;;;;:::o;14210:641::-;14310:19;14333:10;:8;:10::i;:::-;14310:33;;14355:15;14372:23;14397:12;14411:23;14436:12;14450:13;14467:19;14478:7;14467:10;:19::i;:::-;14354:132;;;;;;;;;;;;14497:13;14514:22;14524:11;14514:5;:9;;:22;;;;:::i;:::-;14497:39;;14565:28;14585:7;14565;:15;14573:6;14565:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14547:7;:15;14555:6;14547:15;;;;;;;;;;;;;;;:46;;;;14625:39;14648:15;14625:7;:18;14633:9;14625:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14604:7;:18;14612:9;14604:18;;;;;;;;;;;;;;;:60;;;;14696:39;14719:15;14696:7;:18;14704:9;14696:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14675:7;:18;14683:9;14675:18;;;;;;;;;;;;;;;:60;;;;14746:37;14758:4;14764:5;14771:4;14777:5;14746:11;:37::i;:::-;14816:9;14799:44;;14808:6;14799:44;;;14827:15;14799:44;;;;;;;;;;;;;;;;;;14210:641;;;;;;;;;;;:::o;13634:568::-;13732:19;13755:10;:8;:10::i;:::-;13732:33;;13777:15;13794:23;13819:12;13833:23;13858:12;13872:13;13889:19;13900:7;13889:10;:19::i;:::-;13776:132;;;;;;;;;;;;13919:13;13936:22;13946:11;13936:5;:9;;:22;;;;:::i;:::-;13919:39;;13987:28;14007:7;13987;:15;13995:6;13987:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13969:7;:15;13977:6;13969:15;;;;;;;;;;;;;;;:46;;;;14047:39;14070:15;14047:7;:18;14055:9;14047:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14026:7;:18;14034:9;14026:18;;;;;;;;;;;;;;;:60;;;;14097:37;14109:4;14115:5;14122:4;14128:5;14097:11;:37::i;:::-;14167:9;14150:44;;14159:6;14150:44;;;14178:15;14150:44;;;;;;;;;;;;;;;;;;13634:568;;;;;;;;;;;:::o;15496:700::-;15598:19;15621:10;:8;:10::i;:::-;15598:33;;15643:15;15660:23;15685:12;15699:23;15724:12;15738:13;15755:19;15766:7;15755:10;:19::i;:::-;15642:132;;;;;;;;;;;;15785:13;15802:22;15812:11;15802:5;:9;;:22;;;;:::i;:::-;15785:39;;15853:28;15873:7;15853;:15;15861:6;15853:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;15835:7;:15;15843:6;15835:15;;;;;;;;;;;;;;;:46;;;;15910:28;15930:7;15910;:15;15918:6;15910:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;15892:7;:15;15900:6;15892:15;;;;;;;;;;;;;;;:46;;;;15970:39;15993:15;15970:7;:18;15978:9;15970:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;15949:7;:18;15957:9;15949:18;;;;;;;;;;;;;;;:60;;;;16041:39;16064:15;16041:7;:18;16049:9;16041:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;16020:7;:18;16028:9;16020:18;;;;;;;;;;;;;;;:60;;;;16091:37;16103:4;16109:5;16116:4;16122:5;16091:11;:37::i;:::-;16161:9;16144:44;;16153:6;16144:44;;;16172:15;16144:44;;;;;;;;;;;;;;;;;;15496:700;;;;;;;;;;;:::o;17909:555::-;17959:7;17968;17988:15;18006:7;;17988:25;;18024:15;18042:7;;18024:25;;18065:9;18060:289;18084:9;:16;;;;18080:1;:20;18060:289;;;18150:7;18126;:21;18134:9;18144:1;18134:12;;;;;;;;;;;;;;;;;;;;;;;;;18126:21;;;;;;;;;;;;;;;;:31;:66;;;;18185:7;18161;:21;18169:9;18179:1;18169:12;;;;;;;;;;;;;;;;;;;;;;;;;18161:21;;;;;;;;;;;;;;;;:31;18126:66;18122:97;;;18202:7;;18211;;18194:25;;;;;;;;;18122:97;18244:34;18256:7;:21;18264:9;18274:1;18264:12;;;;;;;;;;;;;;;;;;;;;;;;;18256:21;;;;;;;;;;;;;;;;18244:7;:11;;:34;;;;:::i;:::-;18234:44;;18303:34;18315:7;:21;18323:9;18333:1;18323:12;;;;;;;;;;;;;;;;;;;;;;;;;18315:21;;;;;;;;;;;;;;;;18303:7;:11;;:34;;;;:::i;:::-;18293:44;;18102:3;;;;;;;18060:289;;;;18373:20;18385:7;;18373;;:11;;:20;;;;:::i;:::-;18363:7;:30;18359:61;;;18403:7;;18412;;18395:25;;;;;;;;18359:61;18439:7;18448;18431:25;;;;;;17909:555;;;:::o;2348:284::-;2434:7;2472:1;2468;:5;2475:12;2460:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2499:9;2515:1;2511;:5;;;;;;2499:17;;2623:1;2616:8;;;2348:284;;;;;:::o;16962:351::-;17055:7;17064;17073;17093:12;17108:28;17132:3;17108:19;17120:6;17108:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;17093:43;;17147:13;17163:29;17188:3;17163:20;17175:7;17163;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;17147:45;;17203:23;17229:28;17251:5;17229:17;17241:4;17229:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;17203:54;;17276:15;17293:4;17299:5;17268:37;;;;;;;;;16962:351;;;;;;;:::o;17321:409::-;17431:7;17440;17449;17469:15;17487:24;17499:11;17487:7;:11;;:24;;;;:::i;:::-;17469:42;;17522:12;17537:21;17546:11;17537:4;:8;;:21;;;;:::i;:::-;17522:36;;17569:13;17585:22;17595:11;17585:5;:9;;:22;;;;:::i;:::-;17569:38;;17618:23;17644:28;17666:5;17644:17;17656:4;17644:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;17618:54;;17691:7;17700:15;17717:4;17683:39;;;;;;;;;;17321:409;;;;;;;;:::o;1717:477::-;1775:7;2031:1;2026;:6;2022:47;;;2056:1;2049:8;;;;2022:47;2081:9;2097:1;2093;:5;2081:17;;2126:1;2121;2117;:5;;;;;;:10;2109:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2185:1;2178:8;;;1717:477;;;;;:::o;16204:274::-;16312:28;16334:5;16312:17;16324:4;16312:7;;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16302:7;:38;;;;16364:20;16379:4;16364:10;;:14;;:20;;;;:::i;:::-;16351:10;:33;;;;16409:22;16425:5;16409:11;;:15;;:22;;;;:::i;:::-;16395:11;:36;;;;16452:18;16464:5;16452:7;;:11;;:18;;;;:::i;:::-;16442:7;:28;;;;16204:274;;;;:::o

Swarm Source

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