Token

A (A)

Overview

Max Total Supply

0.000000000001 A

Holders

1

Total Transfers

-

Market

Price

-

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
Token

Compiler Version
v0.8.28+commit.7893614a

Optimization Enabled:
Yes with 9999 runs

Other Settings:
cancun EvmVersion, MIT license
File 1 of 2 : Token.sol
/*

 █▀ █▀█ █▄░█ █ █▀▀ █▀▀ ▄▀█ █▀▀ ▀█▀ █▀█ █▀█ █▄█
 ▄█ █▄█ █░▀█ █ █▄▄ █▀░ █▀█ █▄▄ ░█░ █▄█ █▀▄ ░█░

  Trade on SonicFactory and have fun!
  Web:      https://sonicfactory.fun/

*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.24;

import "./ERC20.sol";

contract Token is ERC20 {
  address private immutable _creator;
  address private _owner;
  address private _router;
  address private _pair;

  bool private _escaped;
  bool private _initialized;
  uint24 private _maxBalance;
  uint24 private _tax;
  uint32 private _launch;

  mapping(address => bool) private _unauthorized;

  struct HolderView {
    address holder;
    uint256 balance;
  }

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

  error ErrorUnauthorized(address sender);
  error ErrorAlreadyInitialized();
  error ErrorUnapprovable();
  error ErrorMaxBalanceExceeded();
  error ErrorInvalidRecipient(address to);
  error ErrorInvalidRange();

  modifier onlyOwner() {
    if (msg.sender != _owner) { revert ErrorUnauthorized(msg.sender); }

    _;
  }

  constructor(address _owner_, address _creator_, string memory _name_, string memory _symbol_, uint8 _decimals_, uint256 _totalSupply_) ERC20(_name_, _symbol_, _decimals_) payable {
    _creator = _creator_;
    _owner = _owner_;
    _mint(_owner_, _totalSupply_);
  }

  function initialize(address _router_, address _pair_, uint24 _maxBalance_, uint24 _tax_, uint32 _launch_, address[] calldata _unauthorized_) external onlyOwner {
    if (_initialized) { revert ErrorAlreadyInitialized(); }

    unchecked {
      uint256 cnt = _unauthorized_.length;

      for (uint256 i; i < cnt; i++) { _unauthorized[_unauthorized_[i]] = true; }
    }

    _router = _router_;
    _pair = _pair_;
    _maxBalance = _maxBalance_;
    _tax = _tax_;
    _launch = _launch_;
    _initialized = true;
  }

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

  /// @notice Returns the creator address
  function creator() external view returns (address) {
    return _creator;
  }

  function approve(address spender, uint256 value) public override returns (bool) {
    if (!_escaped && spender != _router) { revert ErrorUnapprovable(); }

    return super.approve(spender, value);
  }

  function permit(address owner_, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public override {
    if (!_escaped && spender != _router) { revert ErrorUnapprovable(); }

    super.permit(owner_, spender, value, deadline, v, r, s);
  }

  function _transferCheck(address from, address to, uint256 value) private view {
    if (_escaped || ((from == _owner && to == _pair) || ((!_escaped && to == _owner) || value == 0 || to == address(0xdEaD) || to == _router || to == _pair))) { return; }

    if (!_escaped) {
      if (_unauthorized[to]) { revert ErrorInvalidRecipient(to); }

      unchecked {
        if (_maxBalance == 100_000 || _balance[to] + value <= _percentage(_totalSupply, uint256(_maxBalance))) { return; }
      }
    }

    revert ErrorMaxBalanceExceeded();
  }

  function transfer(address to, uint256 value) external virtual override returns (bool) {
    _transfer(msg.sender, to, value);

    return true;
  }

  function _transfer(address from, address to, uint256 value) internal virtual override {
    _transferCheck(from, to, value);

    super._transfer(from, to, value);
  }

  function transferFrom(address from, address to, uint256 value) public override returns (bool) {
    if (!_escaped && msg.sender == _router && to == _pair && _allowance[from][_router] != type(uint256).max) { super._approve(from, _router, type(uint256).max, false); }

    _transferCheck(from, to, value);

    return super.transferFrom(from, to, value);
  }

  function totalHolders() external view returns (uint24 total) {
    return _totalHolders;
  }

  function holders(uint256 offset, uint256 limit) public view returns (HolderView[] memory) {
    if (offset >= _totalHolders) { revert ErrorInvalidRange(); }

    unchecked {
      if (offset + limit > _totalHolders) { limit = _totalHolders - offset; }
    }

    HolderView[] memory list = new HolderView[](limit);

    unchecked {
      uint256 j;

      for (uint256 i = offset; j < limit; i++) {
        address holder = _holders[i];

        if (holder == address(0xdEaD) || _balance[holder] == 0) { continue; }

        list[j].holder = holder;
        list[j].balance = _balance[holder];

        ++j;
      }
    }

    return list;
  }

  function maxBalance() external view returns (uint24) {
    return _maxBalance;
  }

  function tax() external view returns (uint24) {
    return _tax;
  }

  function launch() external view returns (uint32) {
    return _launch;
  }

  /// @notice Returns True if token has reached the target MC and is now tradeable on a public DEX
  function escaped() external view returns (bool) {
    return _escaped;
  }

  function escape() external onlyOwner {
    if (_escaped) { revert ErrorUnauthorized(msg.sender); }
    if (_maxBalance < 100_000) { _maxBalance = 100_000; } // 100%

    address _previousOwner = _owner;

    delete _tax;
    delete _owner;
    delete _router;
    delete _pair;

    _escaped = true;

    emit OwnershipTransferred(_previousOwner, _owner);
  }

  function _percentage(uint256 value, uint256 bps) private pure returns (uint256) {
    unchecked {
      return (value * bps) / 100_000;
    }
  }

  function _timestamp() private view returns (uint32) {
    unchecked {
      return uint32(block.timestamp % 2**32);
    }
  }
}

File 2 of 2 : ERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.24;

abstract contract ERC20 {
  uint8 private immutable _decimals;
  uint24 internal _totalHolders;
  uint256 internal _totalSupply;

  string private _name;
  string private _symbol;
  bytes32 public immutable DOMAIN_SEPARATOR;
  bytes32 private constant PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9; // keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");

  address[] internal _holders;

  mapping(address => uint256) private _nonces;
  mapping(address => uint256) internal _balance;
  mapping(address => mapping(address => uint256)) internal _allowance;
  mapping(address => bool) internal _holderData;

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

  error ERC20InvalidApprover(address owner);
  error ERC20InvalidSpender(address spender);
  error ERC20InvalidSender(address sender);
  error ERC20InvalidReceiver(address to);
  error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 value);
  error ERC20InsufficientBalance(address owner, uint256 balance, uint256 value);
  error ERC2612ExpiredSignature(uint256 deadline);
  error ERC2612InvalidSigner(address signer, address owner);

  constructor(string memory _name_, string memory _symbol_, uint8 _decimals_) {
    _name = _name_;
    _symbol = _symbol_;
    _decimals = _decimals_;

    DOMAIN_SEPARATOR = keccak256(abi.encode(keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"), keccak256(bytes(_name)), keccak256(bytes("1")), block.chainid, address(this)));
  }

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

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

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

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

  function balanceOf(address account) external view returns (uint256) {
    return _balance[account];
  }

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

  function approve(address spender, uint256 value) public virtual returns (bool) {
    _approve(msg.sender, spender, value, true);

    return true;
  }

  function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public virtual {
    if (block.timestamp > deadline) { revert ERC2612ExpiredSignature(deadline); }

    unchecked {
      address signer = ecrecover(keccak256(abi.encodePacked(hex"1901", DOMAIN_SEPARATOR, keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, _nonces[owner]++, deadline)))), v, r, s);

      if (signer != owner) { revert ERC2612InvalidSigner(signer, owner); }
    }

    _approve(owner, spender, value, true);
  }

  function nonces(address owner) external view returns (uint256) {
    return _nonces[owner];
  }

  function transfer(address to, uint256 value) external virtual returns (bool) {
    _transfer(msg.sender, to, value);

    return true;
  }

  function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {
    if (value > 0) {
      address spender = msg.sender;
      uint256 allowed = allowance(from, spender);

      if (allowed < value) { revert ERC20InsufficientAllowance(to, allowed, value); }

      if (allowed != type(uint256).max) {
        unchecked {
          _approve(from, spender, allowed - value, false);
        }
      }
    }

    _transfer(from, to, value);

    return true;
  }

  function burn(uint256 value) external returns (bool) {
    _transfer(msg.sender, address(0xdEaD), value);

    return true;
  }

  function _approve(address owner, address spender, uint256 value, bool emitEvent) internal {
    if (owner == address(0)) { revert ERC20InvalidApprover(owner); }
    if (spender == address(0)) { revert ERC20InvalidSpender(spender); }

    _allowance[owner][spender] = value;

    if (emitEvent) { emit Approval(owner, spender, value); }
  }

  function _transfer(address from, address to, uint256 value) internal virtual {
    if (from == address(0)) { revert ERC20InvalidSender(from); }
    if (to == address(0) || to == address(this)) { revert ERC20InvalidReceiver(to); }
    if (_balance[from] < value) { revert ERC20InsufficientBalance(from, _balance[from], value); }

    if (value > 0) {
      unchecked {
        _balance[from] -= value;

        if (_balance[from] == 0) { --_totalHolders; }

        if (to == address(0xdEaD)) {
          _totalSupply -= value;
        } else {
          if (_balance[to] == 0) { ++_totalHolders; }

          _balance[to] += value;

          if (!_holderData[to]) {
            _holderData[to] = true;
            _holders.push(to);
          }
        }
      }
    }

    emit Transfer(from, to, value);
  }

  function _mint(address to, uint256 value) internal {
    if (to == address(0) || to == address(0xdEaD)) { revert ERC20InvalidReceiver(to); }

    unchecked {
      if (_balance[to] == 0) { ++_totalHolders; }

      _totalSupply += value;
      _balance[to] += value;

      if (!_holderData[to]) {
        _holderData[to] = true;
        _holders.push(to);
      }
    }

    emit Transfer(address(0), to, value);
  }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 9999
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "remappings": [],
  "evmVersion": "cancun"
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_owner_","type":"address"},{"internalType":"address","name":"_creator_","type":"address"},{"internalType":"string","name":"_name_","type":"string"},{"internalType":"string","name":"_symbol_","type":"string"},{"internalType":"uint8","name":"_decimals_","type":"uint8"},{"internalType":"uint256","name":"_totalSupply_","type":"uint256"}],"stateMutability":"payable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"ERC2612ExpiredSignature","type":"error"},{"inputs":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC2612InvalidSigner","type":"error"},{"inputs":[],"name":"ErrorAlreadyInitialized","type":"error"},{"inputs":[],"name":"ErrorInvalidRange","type":"error"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"ErrorInvalidRecipient","type":"error"},{"inputs":[],"name":"ErrorMaxBalanceExceeded","type":"error"},{"inputs":[],"name":"ErrorUnapprovable","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ErrorUnauthorized","type":"error"},{"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":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"creator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"escape","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"escaped","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"holders","outputs":[{"components":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"}],"internalType":"struct Token.HolderView[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_router_","type":"address"},{"internalType":"address","name":"_pair_","type":"address"},{"internalType":"uint24","name":"_maxBalance_","type":"uint24"},{"internalType":"uint24","name":"_tax_","type":"uint24"},{"internalType":"uint32","name":"_launch_","type":"uint32"},{"internalType":"address[]","name":"_unauthorized_","type":"address[]"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launch","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBalance","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tax","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalHolders","outputs":[{"internalType":"uint24","name":"total","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60e0604052604051611fc4380380611fc48339810160408190526100229161034e565b83838360026100318482610479565b50600361003e8382610479565b5060ff81166080526040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f9061007790600290610533565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160408051808303601f19018152919052805160209091012060a0525050506001600160a01b0385811660c052600980546001600160a01b0319169188169190911790556101268682610131565b5050505050506105a4565b6001600160a01b038216158061015157506001600160a01b03821661dead145b1561017e5760405163ec442f0560e01b81526001600160a01b038316600482015260240160405180910390fd5b6001600160a01b0382165f9081526006602052604081205490036101b6575f805462ffffff8082166001011662ffffff199091161790555b60018054820190556001600160a01b0382165f908152600660209081526040808320805485019055600890915290205460ff16610252576001600160a01b0382165f818152600860205260408120805460ff191660019081179091556004805491820181559091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b03191690911790555b6040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b80516001600160a01b03811681146102ac575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126102d4575f5ffd5b81516001600160401b038111156102ed576102ed6102b1565b604051601f8201601f19908116603f011681016001600160401b038111828210171561031b5761031b6102b1565b604052818152838201602001851015610332575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f5f5f5f5f60c08789031215610363575f5ffd5b61036c87610296565b955061037a60208801610296565b60408801519095506001600160401b03811115610395575f5ffd5b6103a189828a016102c5565b606089015190955090506001600160401b038111156103be575f5ffd5b6103ca89828a016102c5565b935050608087015160ff811681146103e0575f5ffd5b8092505060a087015190509295509295509295565b600181811c9082168061040957607f821691505b60208210810361042757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561047457805f5260205f20601f840160051c810160208510156104525750805b601f840160051c820191505b81811015610471575f815560010161045e565b50505b505050565b81516001600160401b03811115610492576104926102b1565b6104a6816104a084546103f5565b8461042d565b6020601f8211600181146104d8575f83156104c15750848201515b5f19600385901b1c1916600184901b178455610471565b5f84815260208120601f198516915b8281101561050757878501518255602094850194600190920191016104e7565b508482101561052457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f8354610540816103f5565b600182168015610557576001811461056c57610599565b60ff1983168652811515820286019350610599565b865f5260205f205f5b8381101561059157815488820152600190910190602001610575565b505081860193505b509195945050505050565b60805160a05160c0516119ef6105d55f395f6101cd01525f818161029801526111c201525f61026901526119ef5ff3fe608060405234801561000f575f5ffd5b5060043610610184575f3560e01c806370a08231116100dd578063a9059cbb11610088578063d180667d11610063578063d180667d1461040e578063d505accf14610416578063dd62ed3e14610429575f5ffd5b8063a9059cbb146103c6578063ae0ffca8146103d9578063aed6176e146103ee575f5ffd5b80638da5cb5b116100b85780638da5cb5b1461038357806395d89b411461039457806399c8d5561461039c575f5ffd5b806370a082311461030c57806373ad468a146103345780637ecebe001461035b575f5ffd5b806323b872dd1161013d57806342966c681161011857806342966c68146102ba5780634c346e72146102cd57806353d74fdf146102f0575f5ffd5b806323b872dd1461024f578063313ce567146102625780633644e51514610293575f5ffd5b806306fdde031161016d57806306fdde0314610205578063095ea7b31461021a57806318160ddd1461023d575f5ffd5b806301339c211461018857806302d05d3f146101cb575b5f5ffd5b600b547c0100000000000000000000000000000000000000000000000000000000900463ffffffff1660405163ffffffff90911681526020015b60405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016101c2565b61020d610461565b6040516101c2919061161a565b61022d610228366004611688565b6104f1565b60405190151581526020016101c2565b6001545b6040519081526020016101c2565b61022d61025d3660046116b0565b610574565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016101c2565b6102417f000000000000000000000000000000000000000000000000000000000000000081565b61022d6102c83660046116ea565b610635565b600b5474010000000000000000000000000000000000000000900460ff1661022d565b5f5462ffffff165b60405162ffffff90911681526020016101c2565b61024161031a366004611701565b6001600160a01b03165f9081526006602052604090205490565b600b54760100000000000000000000000000000000000000000000900462ffffff166102f8565b610241610369366004611701565b6001600160a01b03165f9081526005602052604090205490565b6009546001600160a01b03166101ed565b61020d61064b565b600b54790100000000000000000000000000000000000000000000000000900462ffffff166102f8565b61022d6103d4366004611688565b61065a565b6103ec6103e736600461172c565b61066f565b005b6104016103fc3660046117f9565b6108e7565b6040516101c29190611819565b6103ec610a87565b6103ec610424366004611870565b610c47565b6102416104373660046118dd565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b6060600280546104709061190e565b80601f016020809104026020016040519081016040528092919081815260200182805461049c9061190e565b80156104e75780601f106104be576101008083540402835291602001916104e7565b820191905f5260205f20905b8154815290600101906020018083116104ca57829003601f168201915b5050505050905090565b600b545f9074010000000000000000000000000000000000000000900460ff1615801561052c5750600a546001600160a01b03848116911614155b15610563576040517f86b1a17f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61056d8383610ccf565b9392505050565b600b545f9074010000000000000000000000000000000000000000900460ff161580156105ab5750600a546001600160a01b031633145b80156105c45750600b546001600160a01b038481169116145b80156105f857506001600160a01b038085165f908152600760209081526040808320600a54909416835292905220545f1914155b1561061757600a546106179085906001600160a01b03165f195f610cd9565b610622848484610df0565b61062d84848461100d565b949350505050565b5f6106433361dead846110b9565b506001919050565b6060600380546104709061190e565b5f6106663384846110b9565b50600192915050565b6009546001600160a01b031633146106ba576040517fa11a9a410000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b600b547501000000000000000000000000000000000000000000900460ff1615610710576040517f66a02dea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f5b81811015610794576001600c5f8686858181106107325761073261195f565b90506020020160208101906107479190611701565b6001600160a01b0316815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610713565b5050600a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039889161790555050600b80547501000000000000000000000000000000000000000000959096167fffffffffffffff000000ffff00000000000000000000000000000000000000009096169590951776010000000000000000000000000000000000000000000062ffffff948516021778ffffffffffffffffffffffffffffffffffffffffffffffffff1679010000000000000000000000000000000000000000000000000092909316919091027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16919091177c010000000000000000000000000000000000000000000000000000000063ffffffff9290921691909102177fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16179055565b5f5460609062ffffff168310610929576040517f52acd57900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5462ffffff168383011115610946575f5462ffffff1683900391505b5f8267ffffffffffffffff8111156109605761096061198c565b6040519080825280602002602001820160405280156109a457816020015b604080518082019091525f808252602082015281526020019060019003908161097e5790505b5090505f845b84821015610a7d575f600482815481106109c6576109c661195f565b5f918252602090912001546001600160a01b0316905061dead811480610a0157506001600160a01b0381165f90815260066020526040902054155b15610a0c5750610a75565b80848481518110610a1f57610a1f61195f565b6020908102919091018101516001600160a01b0392831690529082165f908152600690915260409020548451859085908110610a5d57610a5d61195f565b60200260200101516020018181525050826001019250505b6001016109aa565b5090949350505050565b6009546001600160a01b03163314610acd576040517fa11a9a410000000000000000000000000000000000000000000000000000000081523360048201526024016106b1565b600b5474010000000000000000000000000000000000000000900460ff1615610b24576040517fa11a9a410000000000000000000000000000000000000000000000000000000081523360048201526024016106b1565b600b54620186a076010000000000000000000000000000000000000000000090910462ffffff161015610b9557600b80547fffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff16780186a0000000000000000000000000000000000000000000001790555b60098054600b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000808416909455600a80549094169093557fffffffff000000ffffffff00000000000000000000000000000000000000000090921674010000000000000000000000000000000000000000179091556040516001600160a01b03909116905f9082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b600b5474010000000000000000000000000000000000000000900460ff16158015610c805750600a546001600160a01b03878116911614155b15610cb7576040517f86b1a17f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cc6878787878787876110d4565b50505050505050565b5f61066633848460015b6001600160a01b038416610d24576040517fe602df050000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016106b1565b6001600160a01b038316610d6f576040517f94280d620000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016106b1565b6001600160a01b038085165f9081526007602090815260408083209387168352929052208290558015610dea57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610de191815260200190565b60405180910390a35b50505050565b600b5474010000000000000000000000000000000000000000900460ff1680610eca57506009546001600160a01b038481169116148015610e3e5750600b546001600160a01b038381169116145b80610eca5750600b5474010000000000000000000000000000000000000000900460ff16158015610e7c57506009546001600160a01b038381169116145b80610e85575080155b80610e9a57506001600160a01b03821661dead145b80610eb25750600a546001600160a01b038381169116145b80610eca5750600b546001600160a01b038381169116145b15610ed457505050565b600b5474010000000000000000000000000000000000000000900460ff16610fdb576001600160a01b0382165f908152600c602052604090205460ff1615610f53576040517f342be1ce0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016106b1565b600b54760100000000000000000000000000000000000000000000900462ffffff16620186a01480610fd15750600154600b54610fb49190760100000000000000000000000000000000000000000000900462ffffff16620186a091020490565b6001600160a01b0383165f90815260066020526040902054820111155b15610fdb57505050565b6040517f9bd6a5a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f81156110a4576001600160a01b0384165f908152600760209081526040808320338085529252909120548381101561108b576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b038616600482015260248101829052604481018590526064016106b1565b5f1981146110a1576110a186838684035f610cd9565b50505b6110af8484846110b9565b5060019392505050565b6110c4838383610df0565b6110cf8383836112e4565b505050565b83421115611111576040517f62791302000000000000000000000000000000000000000000000000000000008152600481018590526024016106b1565b6001600160a01b038781165f8181526005602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958c166060860152608085018b905260a085019590955260c08085018a90528151808603909101815260e0850190915280519101207f19010000000000000000000000000000000000000000000000000000000000006101008401527f0000000000000000000000000000000000000000000000000000000000000000610102840152610122830152919061014201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201205f84529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa15801561126c573d5f5f3e3d5ffd5b505050602060405103519050876001600160a01b0316816001600160a01b0316146112d6576040517f4b800e460000000000000000000000000000000000000000000000000000000081526001600160a01b038083166004830152891660248201526044016106b1565b50610cc68787876001610cd9565b6001600160a01b03831661132f576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016106b1565b6001600160a01b038216158061134d57506001600160a01b03821630145b1561138f576040517fec442f050000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016106b1565b6001600160a01b0383165f90815260066020526040902054811115611409576001600160a01b0383165f81815260066020526040908190205490517fe450d38c00000000000000000000000000000000000000000000000000000000815260048101929092526024820152604481018290526064016106b1565b80156115c8576001600160a01b0383165f908152600660205260408120805483900390819055900361146c575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000811662ffffff9182165f19019091161790555b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21536001600160a01b038316016114aa576001805482900390556115c8565b6001600160a01b0382165f9081526006602052604081205490036114fe575f805462ffffff808216600101167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000009091161790555b6001600160a01b0382165f908152600660209081526040808320805485019055600890915290205460ff166115c8576001600160a01b0382165f81815260086020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091556004805491820181559091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690911790555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161160d91815260200190565b60405180910390a3505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b80356001600160a01b0381168114611683575f5ffd5b919050565b5f5f60408385031215611699575f5ffd5b6116a28361166d565b946020939093013593505050565b5f5f5f606084860312156116c2575f5ffd5b6116cb8461166d565b92506116d96020850161166d565b929592945050506040919091013590565b5f602082840312156116fa575f5ffd5b5035919050565b5f60208284031215611711575f5ffd5b61056d8261166d565b803562ffffff81168114611683575f5ffd5b5f5f5f5f5f5f5f60c0888a031215611742575f5ffd5b61174b8861166d565b96506117596020890161166d565b95506117676040890161171a565b94506117756060890161171a565b9350608088013563ffffffff8116811461178d575f5ffd5b925060a088013567ffffffffffffffff8111156117a8575f5ffd5b8801601f81018a136117b8575f5ffd5b803567ffffffffffffffff8111156117ce575f5ffd5b8a60208260051b84010111156117e2575f5ffd5b602082019350809250505092959891949750929550565b5f5f6040838503121561180a575f5ffd5b50508035926020909101359150565b602080825282518282018190525f918401906040840190835b8181101561186557835180516001600160a01b031684526020908101518185015290930192604090920191600101611832565b509095945050505050565b5f5f5f5f5f5f5f60e0888a031215611886575f5ffd5b61188f8861166d565b965061189d6020890161166d565b95506040880135945060608801359350608088013560ff811681146118c0575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f604083850312156118ee575f5ffd5b6118f78361166d565b91506119056020840161166d565b90509250929050565b600181811c9082168061192257607f821691505b602082108103611959577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffdfea2646970667358221220688214a33c697126760eeed157514a03e7bf0b8444ccad98749000ac1be5d87764736f6c634300081c003300000000000000000000000043eafbb9c8c4d91fd8d501e45b19c38da2fd0988000000000000000000000000b8f8a463a725502b5e0642bb0dc55ca8d167543400000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000001410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014100000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561000f575f5ffd5b5060043610610184575f3560e01c806370a08231116100dd578063a9059cbb11610088578063d180667d11610063578063d180667d1461040e578063d505accf14610416578063dd62ed3e14610429575f5ffd5b8063a9059cbb146103c6578063ae0ffca8146103d9578063aed6176e146103ee575f5ffd5b80638da5cb5b116100b85780638da5cb5b1461038357806395d89b411461039457806399c8d5561461039c575f5ffd5b806370a082311461030c57806373ad468a146103345780637ecebe001461035b575f5ffd5b806323b872dd1161013d57806342966c681161011857806342966c68146102ba5780634c346e72146102cd57806353d74fdf146102f0575f5ffd5b806323b872dd1461024f578063313ce567146102625780633644e51514610293575f5ffd5b806306fdde031161016d57806306fdde0314610205578063095ea7b31461021a57806318160ddd1461023d575f5ffd5b806301339c211461018857806302d05d3f146101cb575b5f5ffd5b600b547c0100000000000000000000000000000000000000000000000000000000900463ffffffff1660405163ffffffff90911681526020015b60405180910390f35b7f000000000000000000000000b8f8a463a725502b5e0642bb0dc55ca8d16754345b6040516001600160a01b0390911681526020016101c2565b61020d610461565b6040516101c2919061161a565b61022d610228366004611688565b6104f1565b60405190151581526020016101c2565b6001545b6040519081526020016101c2565b61022d61025d3660046116b0565b610574565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000121681526020016101c2565b6102417f900979fd55e14bab2d0da3446aff05c75aca9b96973877652af864a0cd0dd24781565b61022d6102c83660046116ea565b610635565b600b5474010000000000000000000000000000000000000000900460ff1661022d565b5f5462ffffff165b60405162ffffff90911681526020016101c2565b61024161031a366004611701565b6001600160a01b03165f9081526006602052604090205490565b600b54760100000000000000000000000000000000000000000000900462ffffff166102f8565b610241610369366004611701565b6001600160a01b03165f9081526005602052604090205490565b6009546001600160a01b03166101ed565b61020d61064b565b600b54790100000000000000000000000000000000000000000000000000900462ffffff166102f8565b61022d6103d4366004611688565b61065a565b6103ec6103e736600461172c565b61066f565b005b6104016103fc3660046117f9565b6108e7565b6040516101c29190611819565b6103ec610a87565b6103ec610424366004611870565b610c47565b6102416104373660046118dd565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b6060600280546104709061190e565b80601f016020809104026020016040519081016040528092919081815260200182805461049c9061190e565b80156104e75780601f106104be576101008083540402835291602001916104e7565b820191905f5260205f20905b8154815290600101906020018083116104ca57829003601f168201915b5050505050905090565b600b545f9074010000000000000000000000000000000000000000900460ff1615801561052c5750600a546001600160a01b03848116911614155b15610563576040517f86b1a17f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61056d8383610ccf565b9392505050565b600b545f9074010000000000000000000000000000000000000000900460ff161580156105ab5750600a546001600160a01b031633145b80156105c45750600b546001600160a01b038481169116145b80156105f857506001600160a01b038085165f908152600760209081526040808320600a54909416835292905220545f1914155b1561061757600a546106179085906001600160a01b03165f195f610cd9565b610622848484610df0565b61062d84848461100d565b949350505050565b5f6106433361dead846110b9565b506001919050565b6060600380546104709061190e565b5f6106663384846110b9565b50600192915050565b6009546001600160a01b031633146106ba576040517fa11a9a410000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b600b547501000000000000000000000000000000000000000000900460ff1615610710576040517f66a02dea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f5b81811015610794576001600c5f8686858181106107325761073261195f565b90506020020160208101906107479190611701565b6001600160a01b0316815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610713565b5050600a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039889161790555050600b80547501000000000000000000000000000000000000000000959096167fffffffffffffff000000ffff00000000000000000000000000000000000000009096169590951776010000000000000000000000000000000000000000000062ffffff948516021778ffffffffffffffffffffffffffffffffffffffffffffffffff1679010000000000000000000000000000000000000000000000000092909316919091027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16919091177c010000000000000000000000000000000000000000000000000000000063ffffffff9290921691909102177fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16179055565b5f5460609062ffffff168310610929576040517f52acd57900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5462ffffff168383011115610946575f5462ffffff1683900391505b5f8267ffffffffffffffff8111156109605761096061198c565b6040519080825280602002602001820160405280156109a457816020015b604080518082019091525f808252602082015281526020019060019003908161097e5790505b5090505f845b84821015610a7d575f600482815481106109c6576109c661195f565b5f918252602090912001546001600160a01b0316905061dead811480610a0157506001600160a01b0381165f90815260066020526040902054155b15610a0c5750610a75565b80848481518110610a1f57610a1f61195f565b6020908102919091018101516001600160a01b0392831690529082165f908152600690915260409020548451859085908110610a5d57610a5d61195f565b60200260200101516020018181525050826001019250505b6001016109aa565b5090949350505050565b6009546001600160a01b03163314610acd576040517fa11a9a410000000000000000000000000000000000000000000000000000000081523360048201526024016106b1565b600b5474010000000000000000000000000000000000000000900460ff1615610b24576040517fa11a9a410000000000000000000000000000000000000000000000000000000081523360048201526024016106b1565b600b54620186a076010000000000000000000000000000000000000000000090910462ffffff161015610b9557600b80547fffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff16780186a0000000000000000000000000000000000000000000001790555b60098054600b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000808416909455600a80549094169093557fffffffff000000ffffffff00000000000000000000000000000000000000000090921674010000000000000000000000000000000000000000179091556040516001600160a01b03909116905f9082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b600b5474010000000000000000000000000000000000000000900460ff16158015610c805750600a546001600160a01b03878116911614155b15610cb7576040517f86b1a17f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cc6878787878787876110d4565b50505050505050565b5f61066633848460015b6001600160a01b038416610d24576040517fe602df050000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016106b1565b6001600160a01b038316610d6f576040517f94280d620000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016106b1565b6001600160a01b038085165f9081526007602090815260408083209387168352929052208290558015610dea57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610de191815260200190565b60405180910390a35b50505050565b600b5474010000000000000000000000000000000000000000900460ff1680610eca57506009546001600160a01b038481169116148015610e3e5750600b546001600160a01b038381169116145b80610eca5750600b5474010000000000000000000000000000000000000000900460ff16158015610e7c57506009546001600160a01b038381169116145b80610e85575080155b80610e9a57506001600160a01b03821661dead145b80610eb25750600a546001600160a01b038381169116145b80610eca5750600b546001600160a01b038381169116145b15610ed457505050565b600b5474010000000000000000000000000000000000000000900460ff16610fdb576001600160a01b0382165f908152600c602052604090205460ff1615610f53576040517f342be1ce0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016106b1565b600b54760100000000000000000000000000000000000000000000900462ffffff16620186a01480610fd15750600154600b54610fb49190760100000000000000000000000000000000000000000000900462ffffff16620186a091020490565b6001600160a01b0383165f90815260066020526040902054820111155b15610fdb57505050565b6040517f9bd6a5a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f81156110a4576001600160a01b0384165f908152600760209081526040808320338085529252909120548381101561108b576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b038616600482015260248101829052604481018590526064016106b1565b5f1981146110a1576110a186838684035f610cd9565b50505b6110af8484846110b9565b5060019392505050565b6110c4838383610df0565b6110cf8383836112e4565b505050565b83421115611111576040517f62791302000000000000000000000000000000000000000000000000000000008152600481018590526024016106b1565b6001600160a01b038781165f8181526005602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958c166060860152608085018b905260a085019590955260c08085018a90528151808603909101815260e0850190915280519101207f19010000000000000000000000000000000000000000000000000000000000006101008401527f900979fd55e14bab2d0da3446aff05c75aca9b96973877652af864a0cd0dd247610102840152610122830152919061014201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201205f84529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa15801561126c573d5f5f3e3d5ffd5b505050602060405103519050876001600160a01b0316816001600160a01b0316146112d6576040517f4b800e460000000000000000000000000000000000000000000000000000000081526001600160a01b038083166004830152891660248201526044016106b1565b50610cc68787876001610cd9565b6001600160a01b03831661132f576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016106b1565b6001600160a01b038216158061134d57506001600160a01b03821630145b1561138f576040517fec442f050000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016106b1565b6001600160a01b0383165f90815260066020526040902054811115611409576001600160a01b0383165f81815260066020526040908190205490517fe450d38c00000000000000000000000000000000000000000000000000000000815260048101929092526024820152604481018290526064016106b1565b80156115c8576001600160a01b0383165f908152600660205260408120805483900390819055900361146c575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000811662ffffff9182165f19019091161790555b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21536001600160a01b038316016114aa576001805482900390556115c8565b6001600160a01b0382165f9081526006602052604081205490036114fe575f805462ffffff808216600101167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000009091161790555b6001600160a01b0382165f908152600660209081526040808320805485019055600890915290205460ff166115c8576001600160a01b0382165f81815260086020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091556004805491820181559091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690911790555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161160d91815260200190565b60405180910390a3505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b80356001600160a01b0381168114611683575f5ffd5b919050565b5f5f60408385031215611699575f5ffd5b6116a28361166d565b946020939093013593505050565b5f5f5f606084860312156116c2575f5ffd5b6116cb8461166d565b92506116d96020850161166d565b929592945050506040919091013590565b5f602082840312156116fa575f5ffd5b5035919050565b5f60208284031215611711575f5ffd5b61056d8261166d565b803562ffffff81168114611683575f5ffd5b5f5f5f5f5f5f5f60c0888a031215611742575f5ffd5b61174b8861166d565b96506117596020890161166d565b95506117676040890161171a565b94506117756060890161171a565b9350608088013563ffffffff8116811461178d575f5ffd5b925060a088013567ffffffffffffffff8111156117a8575f5ffd5b8801601f81018a136117b8575f5ffd5b803567ffffffffffffffff8111156117ce575f5ffd5b8a60208260051b84010111156117e2575f5ffd5b602082019350809250505092959891949750929550565b5f5f6040838503121561180a575f5ffd5b50508035926020909101359150565b602080825282518282018190525f918401906040840190835b8181101561186557835180516001600160a01b031684526020908101518185015290930192604090920191600101611832565b509095945050505050565b5f5f5f5f5f5f5f60e0888a031215611886575f5ffd5b61188f8861166d565b965061189d6020890161166d565b95506040880135945060608801359350608088013560ff811681146118c0575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f604083850312156118ee575f5ffd5b6118f78361166d565b91506119056020840161166d565b90509250929050565b600181811c9082168061192257607f821691505b602082108103611959577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffdfea2646970667358221220688214a33c697126760eeed157514a03e7bf0b8444ccad98749000ac1be5d87764736f6c634300081c0033

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

00000000000000000000000043eafbb9c8c4d91fd8d501e45b19c38da2fd0988000000000000000000000000b8f8a463a725502b5e0642bb0dc55ca8d167543400000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000001410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014100000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _owner_ (address): 0x43eaFBb9C8c4d91Fd8D501E45b19C38DA2fD0988
Arg [1] : _creator_ (address): 0xb8F8a463a725502B5E0642bB0dc55CA8d1675434
Arg [2] : _name_ (string): A
Arg [3] : _symbol_ (string): A
Arg [4] : _decimals_ (uint8): 18
Arg [5] : _totalSupply_ (uint256): 1000000

-----Encoded View---------------
10 Constructor Arguments found :
Arg [0] : 00000000000000000000000043eafbb9c8c4d91fd8d501e45b19c38da2fd0988
Arg [1] : 000000000000000000000000b8f8a463a725502b5e0642bb0dc55ca8d1675434
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [5] : 00000000000000000000000000000000000000000000000000000000000f4240
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [7] : 4100000000000000000000000000000000000000000000000000000000000000
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [9] : 4100000000000000000000000000000000000000000000000000000000000000


[ 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.