Feature Tip: Add private address tag to any address under My Name Tag !
ERC-1155
Overview
Max Total Supply
0
Holders
5
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
HashnoteVaultShare
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
Yes with 100000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: BUSL-1.1 pragma solidity ^0.8.0; // external librares import { ERC1155 } from "../../lib/solmate/src/tokens/ERC1155.sol"; // interfaces import { IVaultShare } from "../interfaces/IVaultShare.sol"; import { IVaultShareDescriptor } from "../interfaces/IVaultShareDescriptor.sol"; import { IWhitelist } from "../interfaces/IWhitelist.sol"; import "../libraries/Errors.sol"; contract HashnoteVaultShare is ERC1155, IVaultShare { ///@dev whitelist serve as the vault registry IWhitelist public immutable whitelist; IVaultShareDescriptor public immutable descriptor; // total supply of a particular tokenId mapping(uint256 => uint256) private _totalSupply; constructor(address _whitelist, address _descriptor) { // solhint-disable-next-line reason-string if (_whitelist == address(0)) revert(); whitelist = IWhitelist(_whitelist); descriptor = IVaultShareDescriptor(_descriptor); } /** * @dev return string as defined in token descriptor * */ function uri(uint256 id) public view override returns (string memory) { return descriptor.tokenURI(id); } /** * @dev mint option token to an address. Can only be called by corresponding margin engine * @param _recipient where to mint token to * @param _amount amount to mint */ function mint(address _recipient, address _vault, uint256 _amount) external override { if (!whitelist.isVault(msg.sender)) revert Unauthorized(); uint256 tokenId = vaultToTokenId(_vault); _totalSupply[tokenId] += _amount; _mint(_recipient, tokenId, _amount, ""); } /** * @dev burn option token from an address. Can only be called by corresponding margin engine * @param _from account to burn from * @param _amount amount to burn * */ function burn(address _from, address _vault, uint256 _amount) external override { if (!whitelist.isVault(msg.sender)) revert Unauthorized(); uint256 tokenId = vaultToTokenId(_vault); uint256 supply = _totalSupply[tokenId]; if (supply < _amount) revert VS_SupplyExceeded(); _totalSupply[tokenId] = supply - _amount; _burn(_from, tokenId, _amount); } function totalSupply(address _vault) external view override returns (uint256) { return _totalSupply[vaultToTokenId(_vault)]; } function getBalanceOf(address _owner, address _vault) external view override returns (uint256) { return balanceOf[_owner][vaultToTokenId(_vault)]; } function transferFrom(address _from, address _to, address _vault, uint256 _amount, bytes calldata _data) public override { ERC1155.safeTransferFrom(_from, _to, vaultToTokenId(_vault), _amount, _data); } function tokenIdToVault(uint256 tokenId) external pure returns (address) { return address(uint160(tokenId)); } function vaultToTokenId(address _vault) internal pure returns (uint256) { return uint256(uint160(_vault)); } }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity >=0.8.0; /// @notice Minimalist and gas efficient standard ERC1155 implementation. /// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC1155.sol) abstract contract ERC1155 { /*////////////////////////////////////////////////////////////// EVENTS //////////////////////////////////////////////////////////////*/ event TransferSingle( address indexed operator, address indexed from, address indexed to, uint256 id, uint256 amount ); event TransferBatch( address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] amounts ); event ApprovalForAll(address indexed owner, address indexed operator, bool approved); event URI(string value, uint256 indexed id); /*////////////////////////////////////////////////////////////// ERC1155 STORAGE //////////////////////////////////////////////////////////////*/ mapping(address => mapping(uint256 => uint256)) public balanceOf; mapping(address => mapping(address => bool)) public isApprovedForAll; /*////////////////////////////////////////////////////////////// METADATA LOGIC //////////////////////////////////////////////////////////////*/ function uri(uint256 id) public view virtual returns (string memory); /*////////////////////////////////////////////////////////////// ERC1155 LOGIC //////////////////////////////////////////////////////////////*/ function setApprovalForAll(address operator, bool approved) public virtual { isApprovedForAll[msg.sender][operator] = approved; emit ApprovalForAll(msg.sender, operator, approved); } function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes calldata data ) public virtual { require(msg.sender == from || isApprovedForAll[from][msg.sender], "NOT_AUTHORIZED"); balanceOf[from][id] -= amount; balanceOf[to][id] += amount; emit TransferSingle(msg.sender, from, to, id, amount); require( to.code.length == 0 ? to != address(0) : ERC1155TokenReceiver(to).onERC1155Received(msg.sender, from, id, amount, data) == ERC1155TokenReceiver.onERC1155Received.selector, "UNSAFE_RECIPIENT" ); } function safeBatchTransferFrom( address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data ) public virtual { require(ids.length == amounts.length, "LENGTH_MISMATCH"); require(msg.sender == from || isApprovedForAll[from][msg.sender], "NOT_AUTHORIZED"); // Storing these outside the loop saves ~15 gas per iteration. uint256 id; uint256 amount; for (uint256 i = 0; i < ids.length; ) { id = ids[i]; amount = amounts[i]; balanceOf[from][id] -= amount; balanceOf[to][id] += amount; // An array can't have a total length // larger than the max uint256 value. unchecked { ++i; } } emit TransferBatch(msg.sender, from, to, ids, amounts); require( to.code.length == 0 ? to != address(0) : ERC1155TokenReceiver(to).onERC1155BatchReceived(msg.sender, from, ids, amounts, data) == ERC1155TokenReceiver.onERC1155BatchReceived.selector, "UNSAFE_RECIPIENT" ); } function balanceOfBatch(address[] calldata owners, uint256[] calldata ids) public view virtual returns (uint256[] memory balances) { require(owners.length == ids.length, "LENGTH_MISMATCH"); balances = new uint256[](owners.length); // Unchecked because the only math done is incrementing // the array index counter which cannot possibly overflow. unchecked { for (uint256 i = 0; i < owners.length; ++i) { balances[i] = balanceOf[owners[i]][ids[i]]; } } } /*////////////////////////////////////////////////////////////// ERC165 LOGIC //////////////////////////////////////////////////////////////*/ function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) { return interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165 interfaceId == 0xd9b67a26 || // ERC165 Interface ID for ERC1155 interfaceId == 0x0e89341c; // ERC165 Interface ID for ERC1155MetadataURI } /*////////////////////////////////////////////////////////////// INTERNAL MINT/BURN LOGIC //////////////////////////////////////////////////////////////*/ function _mint( address to, uint256 id, uint256 amount, bytes memory data ) internal virtual { balanceOf[to][id] += amount; emit TransferSingle(msg.sender, address(0), to, id, amount); require( to.code.length == 0 ? to != address(0) : ERC1155TokenReceiver(to).onERC1155Received(msg.sender, address(0), id, amount, data) == ERC1155TokenReceiver.onERC1155Received.selector, "UNSAFE_RECIPIENT" ); } function _batchMint( address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual { uint256 idsLength = ids.length; // Saves MLOADs. require(idsLength == amounts.length, "LENGTH_MISMATCH"); for (uint256 i = 0; i < idsLength; ) { balanceOf[to][ids[i]] += amounts[i]; // An array can't have a total length // larger than the max uint256 value. unchecked { ++i; } } emit TransferBatch(msg.sender, address(0), to, ids, amounts); require( to.code.length == 0 ? to != address(0) : ERC1155TokenReceiver(to).onERC1155BatchReceived(msg.sender, address(0), ids, amounts, data) == ERC1155TokenReceiver.onERC1155BatchReceived.selector, "UNSAFE_RECIPIENT" ); } function _batchBurn( address from, uint256[] memory ids, uint256[] memory amounts ) internal virtual { uint256 idsLength = ids.length; // Saves MLOADs. require(idsLength == amounts.length, "LENGTH_MISMATCH"); for (uint256 i = 0; i < idsLength; ) { balanceOf[from][ids[i]] -= amounts[i]; // An array can't have a total length // larger than the max uint256 value. unchecked { ++i; } } emit TransferBatch(msg.sender, from, address(0), ids, amounts); } function _burn( address from, uint256 id, uint256 amount ) internal virtual { balanceOf[from][id] -= amount; emit TransferSingle(msg.sender, from, address(0), id, amount); } } /// @notice A generic interface for a contract which properly accepts ERC1155 tokens. /// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC1155.sol) abstract contract ERC1155TokenReceiver { function onERC1155Received( address, address, uint256, uint256, bytes calldata ) external virtual returns (bytes4) { return ERC1155TokenReceiver.onERC1155Received.selector; } function onERC1155BatchReceived( address, address, uint256[] calldata, uint256[] calldata, bytes calldata ) external virtual returns (bytes4) { return ERC1155TokenReceiver.onERC1155BatchReceived.selector; } }
// SPDX-License-Identifier: BUSL-1.1 pragma solidity ^0.8.0; interface IVaultShare { /** * @dev mint option token to an address. Can only be called by corresponding vault * @param _recipient where to mint token to * @param _vault vault to mint for * @param _amount amount to mint * */ function mint(address _recipient, address _vault, uint256 _amount) external; /** * @dev burn option token from an address. Can only be called by corresponding vault * @param _from account to burn from * @param _vault vault to mint for * @param _amount amount to burn * */ function burn(address _from, address _vault, uint256 _amount) external; /** * @dev returns total supply of a vault * @param _vault address of the vault * */ function totalSupply(address _vault) external view returns (uint256 amount); /** * @dev returns vault share balance for a given holder * @param _owner address of token holder * @param _vault address of the vault * */ function getBalanceOf(address _owner, address _vault) external view returns (uint256 amount); /** * @dev exposing transfer method to vault * */ function transferFrom(address _from, address _to, address _vault, uint256 _amount, bytes calldata _data) external; }
// SPDX-License-Identifier: BUSL-1.1 pragma solidity ^0.8.0; /// @title Describes Option NFT interface IVaultShareDescriptor { function tokenURI(uint256 tokenId) external view returns (string memory); }
// SPDX-License-Identifier: BUSL-1.1 pragma solidity ^0.8.0; interface ISanctionsList { function isSanctioned(address _address) external view returns (bool); } interface IWhitelist { function isCustomer(address _address) external view returns (bool); function isLP(address _address) external view returns (bool); function isOTC(address _address) external view returns (bool); function isVault(address _vault) external view returns (bool); function engineAccess(address _address) external view returns (bool); }
// SPDX-License-Identifier: BUSL-1.1 pragma solidity ^0.8.0; // common error Unauthorized(); error Overflow(); // Vault error HV_ActiveRound(); error HV_AuctionInProgress(); error HV_BadAddress(); error HV_BadAmount(); error HV_BadCap(); error HV_BadCollaterals(); error HV_BadCollateralPosition(); error HV_BadDepositAmount(); error HV_BadDuration(); error HV_BadExpiry(); error HV_BadFee(); error HV_BadLevRatio(); error HV_BadNumRounds(); error HV_BadNumShares(); error HV_BadNumStrikes(); error HV_BadOption(); error HV_BadPPS(); error HV_BadRound(); error HV_BadRoundConfig(); error HV_BadSB(); error HV_BadStructures(); error HV_CustomerNotPermissioned(); error HV_ExistingWithdraw(); error HV_ExceedsCap(); error HV_ExceedsAvailable(); error HV_Initialized(); error HV_InsufficientFunds(); error HV_OptionNotExpired(); error HV_RoundClosed(); error HV_RoundNotClosed(); error HV_Unauthorized(); error HV_Uninitialized(); // VaultPauser error VP_BadAddress(); error VP_CustomerNotPermissioned(); error VP_Overflow(); error VP_PositionPaused(); error VP_RoundOpen(); error VP_Unauthorized(); error VP_VaultNotPermissioned(); // VaultUtil error VL_BadCap(); error VL_BadCollateral(); error VL_BadCollateralAddress(); error VL_BadDuration(); error VL_BadExpiryDate(); error VL_BadFee(); error VL_BadFeeAddress(); error VL_BadId(); error VL_BadInstruments(); error VL_BadManagerAddress(); error VL_BadOracleAddress(); error VL_BadOwnerAddress(); error VL_BadPauserAddress(); error VL_BadPrecision(); error VL_BadStrikeAddress(); error VL_BadSupply(); error VL_BadUnderlyingAddress(); error VL_BadWeight(); error VL_DifferentLengths(); error VL_ExceedsSurplus(); error VL_Overflow(); error VL_Unauthorized(); // FeeUtil error FU_NPSLow(); // BatchAuction error BA_AuctionClosed(); error BA_AuctionNotClosed(); error BA_AuctionSettled(); error BA_AuctionUnsettled(); error BA_BadAddress(); error BA_BadAmount(); error BA_BadBiddingAddress(); error BA_BadCollateral(); error BA_BadOptionAddress(); error BA_BadOptions(); error BA_BadPrice(); error BA_BadSize(); error BA_BadTime(); error BA_EmptyAuction(); error BA_Unauthorized(); error BA_Uninitialized(); // Whitelist error WL_BadAddress(); error WL_BadRole(); error WL_Paused(); error WL_Unauthorized(); // VaultShare error VS_SupplyExceeded();
{ "optimizer": { "enabled": true, "runs": 100000 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_whitelist","type":"address"},{"internalType":"address","name":"_descriptor","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"VS_SupplyExceeded","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"owners","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"balances","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_vault","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"descriptor","outputs":[{"internalType":"contract IVaultShareDescriptor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_vault","type":"address"}],"name":"getBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"address","name":"_vault","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenIdToVault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"address","name":"_vault","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"whitelist","outputs":[{"internalType":"contract IWhitelist","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60c06040523480156200001157600080fd5b5060405162001d2238038062001d2283398101604081905262000034916200007d565b6001600160a01b0382166200004857600080fd5b6001600160a01b039182166080521660a052620000b5565b80516001600160a01b03811681146200007857600080fd5b919050565b600080604083850312156200009157600080fd5b6200009c8362000060565b9150620000ac6020840162000060565b90509250929050565b60805160a051611c32620000f0600039600081816101d2015261042801526000818161023f01528181610b820152610fc10152611c326000f3fe608060405234801561001057600080fd5b50600436106100ff5760003560e01c806353290b4411610097578063e4dc2aa411610066578063e4dc2aa414610287578063e985e9c5146102bd578063f242432a146102eb578063f6b911bc146102fe57600080fd5b806353290b441461022757806393e59dc11461023a578063a22cb46514610261578063c6c3bbe61461027457600080fd5b80632eb2c2d6116100d35780632eb2c2d6146101b8578063303e74df146101cd5780634a280a55146101f45780634e1273f41461020757600080fd5b8062fdd58e1461010457806301ffc9a71461013f5780630e89341c1461016257806316ffc42314610182575b600080fd5b61012c6101123660046113c7565b600060208181529281526040808220909352908152205481565b6040519081526020015b60405180910390f35b61015261014d366004611422565b610311565b6040519015158152602001610136565b610175610170366004611446565b6103f6565b60405161013691906114cd565b610193610190366004611446565b90565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610136565b6101cb6101c636600461156e565b6104ca565b005b6101937f000000000000000000000000000000000000000000000000000000000000000081565b6101cb610202366004611629565b6108c0565b61021a6102153660046116a8565b6108ec565b6040516101369190611714565b61012c610235366004611758565b610a63565b6101937f000000000000000000000000000000000000000000000000000000000000000081565b6101cb61026f366004611799565b610abd565b6101cb6102823660046117d0565b610b54565b61012c61029536600461180c565b73ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205490565b6101526102cb366004611758565b600160209081526000928352604080842090915290825290205460ff1681565b6101cb6102f9366004611827565b610c95565b6101cb61030c3660046117d0565b610f93565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614806103a457507fd9b67a26000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806103f057507f0e89341c000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6040517fc87b56dd000000000000000000000000000000000000000000000000000000008152600481018290526060907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063c87b56dd90602401600060405180830381865afa158015610484573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103f091908101906118b0565b848314610538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c454e4754485f4d49534d41544348000000000000000000000000000000000060448201526064015b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff8916148061058c575073ffffffffffffffffffffffffffffffffffffffff8816600090815260016020908152604080832033845290915290205460ff165b6105f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a4544000000000000000000000000000000000000604482015260640161052f565b60008060005b878110156106c7578888828181106106125761061261197b565b90506020020135925086868281811061062d5761062d61197b565b73ffffffffffffffffffffffffffffffffffffffff8e16600090815260208181526040808320898452825282208054939091029490940135955085939250906106779084906119d9565b909155505073ffffffffffffffffffffffffffffffffffffffff8a16600090815260208181526040808320868452909152812080548492906106ba9084906119ec565b90915550506001016105f8565b508873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8b8b8b8b6040516107429493929190611a4a565b60405180910390a473ffffffffffffffffffffffffffffffffffffffff89163b15610834576040517fbc197c81000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff8b169063bc197c81906107c99033908f908e908e908e908e908e908e90600401611aba565b6020604051808303816000875af11580156107e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080c9190611b2b565b7fffffffff00000000000000000000000000000000000000000000000000000000161461084e565b73ffffffffffffffffffffffffffffffffffffffff891615155b6108b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e5400000000000000000000000000000000604482015260640161052f565b50505050505050505050565b6108e4868673ffffffffffffffffffffffffffffffffffffffff8716868686610c95565b505050505050565b6060838214610957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c454e4754485f4d49534d415443480000000000000000000000000000000000604482015260640161052f565b8367ffffffffffffffff81111561097057610970611881565b604051908082528060200260200182016040528015610999578160200160208202803683370190505b50905060005b84811015610a5a576000808787848181106109bc576109bc61197b565b90506020020160208101906109d1919061180c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858584818110610a1f57610a1f61197b565b90506020020135815260200190815260200160002054828281518110610a4757610a4761197b565b602090810291909101015260010161099f565b50949350505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040812081610aa68473ffffffffffffffffffffffffffffffffffffffff1690565b815260200190815260200160002054905092915050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6040517f652b9b410000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063652b9b4190602401602060405180830381865afa158015610bde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c029190611b48565b610c38576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660008181526002602052604081208054849290610c6d9084906119ec565b92505081905550610c8f84828460405180602001604052806000815250611102565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff87161480610ce9575073ffffffffffffffffffffffffffffffffffffffff8616600090815260016020908152604080832033845290915290205460ff165b610d4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a4544000000000000000000000000000000000000604482015260640161052f565b73ffffffffffffffffffffffffffffffffffffffff861660009081526020818152604080832087845290915281208054859290610d8d9084906119d9565b909155505073ffffffffffffffffffffffffffffffffffffffff851660009081526020818152604080832087845290915281208054859290610dd09084906119ec565b9091555050604080518581526020810185905273ffffffffffffffffffffffffffffffffffffffff808816929089169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a473ffffffffffffffffffffffffffffffffffffffff85163b15610f13576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff87169063f23a6e6190610ea89033908b908a908a908a908a90600401611b65565b6020604051808303816000875af1158015610ec7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eeb9190611b2b565b7fffffffff000000000000000000000000000000000000000000000000000000001614610f2d565b73ffffffffffffffffffffffffffffffffffffffff851615155b6108e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e5400000000000000000000000000000000604482015260640161052f565b6040517f652b9b410000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063652b9b4190602401602060405180830381865afa15801561101d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110419190611b48565b611077576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216600081815260026020526040902054828110156110d7576040517fd04abcdf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e183826119d9565b6000838152600260205260409020556110fb858385611300565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260208181526040808320868452909152812080548492906111409084906119ec565b9091555050604080518481526020810184905273ffffffffffffffffffffffffffffffffffffffff86169160009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a473ffffffffffffffffffffffffffffffffffffffff84163b15611280576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff86169063f23a6e6190611215903390600090899089908990600401611bb7565b6020604051808303816000875af1158015611234573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112589190611b2b565b7fffffffff00000000000000000000000000000000000000000000000000000000161461129a565b73ffffffffffffffffffffffffffffffffffffffff841615155b610c8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e5400000000000000000000000000000000604482015260640161052f565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081815260408083208584529091528120805483929061133e9084906119d9565b9091555050604080518381526020810183905260009173ffffffffffffffffffffffffffffffffffffffff86169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146113c257600080fd5b919050565b600080604083850312156113da57600080fd5b6113e38361139e565b946020939093013593505050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461141f57600080fd5b50565b60006020828403121561143457600080fd5b813561143f816113f1565b9392505050565b60006020828403121561145857600080fd5b5035919050565b60005b8381101561147a578181015183820152602001611462565b50506000910152565b6000815180845261149b81602086016020860161145f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061143f6020830184611483565b60008083601f8401126114f257600080fd5b50813567ffffffffffffffff81111561150a57600080fd5b6020830191508360208260051b850101111561152557600080fd5b9250929050565b60008083601f84011261153e57600080fd5b50813567ffffffffffffffff81111561155657600080fd5b60208301915083602082850101111561152557600080fd5b60008060008060008060008060a0898b03121561158a57600080fd5b6115938961139e565b97506115a160208a0161139e565b9650604089013567ffffffffffffffff808211156115be57600080fd5b6115ca8c838d016114e0565b909850965060608b01359150808211156115e357600080fd5b6115ef8c838d016114e0565b909650945060808b013591508082111561160857600080fd5b506116158b828c0161152c565b999c989b5096995094979396929594505050565b60008060008060008060a0878903121561164257600080fd5b61164b8761139e565b95506116596020880161139e565b94506116676040880161139e565b935060608701359250608087013567ffffffffffffffff81111561168a57600080fd5b61169689828a0161152c565b979a9699509497509295939492505050565b600080600080604085870312156116be57600080fd5b843567ffffffffffffffff808211156116d657600080fd5b6116e2888389016114e0565b909650945060208701359150808211156116fb57600080fd5b50611708878288016114e0565b95989497509550505050565b6020808252825182820181905260009190848201906040850190845b8181101561174c57835183529284019291840191600101611730565b50909695505050505050565b6000806040838503121561176b57600080fd5b6117748361139e565b91506117826020840161139e565b90509250929050565b801515811461141f57600080fd5b600080604083850312156117ac57600080fd5b6117b58361139e565b915060208301356117c58161178b565b809150509250929050565b6000806000606084860312156117e557600080fd5b6117ee8461139e565b92506117fc6020850161139e565b9150604084013590509250925092565b60006020828403121561181e57600080fd5b61143f8261139e565b60008060008060008060a0878903121561184057600080fd5b6118498761139e565b95506118576020880161139e565b94506040870135935060608701359250608087013567ffffffffffffffff81111561168a57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156118c257600080fd5b815167ffffffffffffffff808211156118da57600080fd5b818401915084601f8301126118ee57600080fd5b81518181111561190057611900611881565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561194657611946611881565b8160405282815287602084870101111561195f57600080fd5b61197083602083016020880161145f565b979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156103f0576103f06119aa565b808201808211156103f0576103f06119aa565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115611a3157600080fd5b8260051b80836020870137939093016020019392505050565b604081526000611a5e6040830186886119ff565b82810360208401526119708185876119ff565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808b168352808a1660208401525060a06040830152611af460a08301888a6119ff565b8281036060840152611b078187896119ff565b90508281036080840152611b1c818587611a71565b9b9a5050505050505050505050565b600060208284031215611b3d57600080fd5b815161143f816113f1565b600060208284031215611b5a57600080fd5b815161143f8161178b565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a06080830152611bab60a083018486611a71565b98975050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015283606083015260a0608083015261197060a083018461148356fea264697066735822122084577a7da01b2246338e3ef6baa79389f1844e0a83299623f27903d092c963a164736f6c63430008110033000000000000000000000000cedafe1eaa250da15c434a54ece8ba1702876e3a000000000000000000000000a1db133924fc6a615bc5a27fc9b01961250b0381
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100ff5760003560e01c806353290b4411610097578063e4dc2aa411610066578063e4dc2aa414610287578063e985e9c5146102bd578063f242432a146102eb578063f6b911bc146102fe57600080fd5b806353290b441461022757806393e59dc11461023a578063a22cb46514610261578063c6c3bbe61461027457600080fd5b80632eb2c2d6116100d35780632eb2c2d6146101b8578063303e74df146101cd5780634a280a55146101f45780634e1273f41461020757600080fd5b8062fdd58e1461010457806301ffc9a71461013f5780630e89341c1461016257806316ffc42314610182575b600080fd5b61012c6101123660046113c7565b600060208181529281526040808220909352908152205481565b6040519081526020015b60405180910390f35b61015261014d366004611422565b610311565b6040519015158152602001610136565b610175610170366004611446565b6103f6565b60405161013691906114cd565b610193610190366004611446565b90565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610136565b6101cb6101c636600461156e565b6104ca565b005b6101937f000000000000000000000000a1db133924fc6a615bc5a27fc9b01961250b038181565b6101cb610202366004611629565b6108c0565b61021a6102153660046116a8565b6108ec565b6040516101369190611714565b61012c610235366004611758565b610a63565b6101937f000000000000000000000000cedafe1eaa250da15c434a54ece8ba1702876e3a81565b6101cb61026f366004611799565b610abd565b6101cb6102823660046117d0565b610b54565b61012c61029536600461180c565b73ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205490565b6101526102cb366004611758565b600160209081526000928352604080842090915290825290205460ff1681565b6101cb6102f9366004611827565b610c95565b6101cb61030c3660046117d0565b610f93565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614806103a457507fd9b67a26000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806103f057507f0e89341c000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6040517fc87b56dd000000000000000000000000000000000000000000000000000000008152600481018290526060907f000000000000000000000000a1db133924fc6a615bc5a27fc9b01961250b038173ffffffffffffffffffffffffffffffffffffffff169063c87b56dd90602401600060405180830381865afa158015610484573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103f091908101906118b0565b848314610538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c454e4754485f4d49534d41544348000000000000000000000000000000000060448201526064015b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff8916148061058c575073ffffffffffffffffffffffffffffffffffffffff8816600090815260016020908152604080832033845290915290205460ff165b6105f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a4544000000000000000000000000000000000000604482015260640161052f565b60008060005b878110156106c7578888828181106106125761061261197b565b90506020020135925086868281811061062d5761062d61197b565b73ffffffffffffffffffffffffffffffffffffffff8e16600090815260208181526040808320898452825282208054939091029490940135955085939250906106779084906119d9565b909155505073ffffffffffffffffffffffffffffffffffffffff8a16600090815260208181526040808320868452909152812080548492906106ba9084906119ec565b90915550506001016105f8565b508873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8b8b8b8b6040516107429493929190611a4a565b60405180910390a473ffffffffffffffffffffffffffffffffffffffff89163b15610834576040517fbc197c81000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff8b169063bc197c81906107c99033908f908e908e908e908e908e908e90600401611aba565b6020604051808303816000875af11580156107e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080c9190611b2b565b7fffffffff00000000000000000000000000000000000000000000000000000000161461084e565b73ffffffffffffffffffffffffffffffffffffffff891615155b6108b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e5400000000000000000000000000000000604482015260640161052f565b50505050505050505050565b6108e4868673ffffffffffffffffffffffffffffffffffffffff8716868686610c95565b505050505050565b6060838214610957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c454e4754485f4d49534d415443480000000000000000000000000000000000604482015260640161052f565b8367ffffffffffffffff81111561097057610970611881565b604051908082528060200260200182016040528015610999578160200160208202803683370190505b50905060005b84811015610a5a576000808787848181106109bc576109bc61197b565b90506020020160208101906109d1919061180c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858584818110610a1f57610a1f61197b565b90506020020135815260200190815260200160002054828281518110610a4757610a4761197b565b602090810291909101015260010161099f565b50949350505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040812081610aa68473ffffffffffffffffffffffffffffffffffffffff1690565b815260200190815260200160002054905092915050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6040517f652b9b410000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000cedafe1eaa250da15c434a54ece8ba1702876e3a73ffffffffffffffffffffffffffffffffffffffff169063652b9b4190602401602060405180830381865afa158015610bde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c029190611b48565b610c38576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660008181526002602052604081208054849290610c6d9084906119ec565b92505081905550610c8f84828460405180602001604052806000815250611102565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff87161480610ce9575073ffffffffffffffffffffffffffffffffffffffff8616600090815260016020908152604080832033845290915290205460ff165b610d4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a4544000000000000000000000000000000000000604482015260640161052f565b73ffffffffffffffffffffffffffffffffffffffff861660009081526020818152604080832087845290915281208054859290610d8d9084906119d9565b909155505073ffffffffffffffffffffffffffffffffffffffff851660009081526020818152604080832087845290915281208054859290610dd09084906119ec565b9091555050604080518581526020810185905273ffffffffffffffffffffffffffffffffffffffff808816929089169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a473ffffffffffffffffffffffffffffffffffffffff85163b15610f13576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff87169063f23a6e6190610ea89033908b908a908a908a908a90600401611b65565b6020604051808303816000875af1158015610ec7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eeb9190611b2b565b7fffffffff000000000000000000000000000000000000000000000000000000001614610f2d565b73ffffffffffffffffffffffffffffffffffffffff851615155b6108e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e5400000000000000000000000000000000604482015260640161052f565b6040517f652b9b410000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000cedafe1eaa250da15c434a54ece8ba1702876e3a73ffffffffffffffffffffffffffffffffffffffff169063652b9b4190602401602060405180830381865afa15801561101d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110419190611b48565b611077576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216600081815260026020526040902054828110156110d7576040517fd04abcdf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e183826119d9565b6000838152600260205260409020556110fb858385611300565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260208181526040808320868452909152812080548492906111409084906119ec565b9091555050604080518481526020810184905273ffffffffffffffffffffffffffffffffffffffff86169160009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a473ffffffffffffffffffffffffffffffffffffffff84163b15611280576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff86169063f23a6e6190611215903390600090899089908990600401611bb7565b6020604051808303816000875af1158015611234573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112589190611b2b565b7fffffffff00000000000000000000000000000000000000000000000000000000161461129a565b73ffffffffffffffffffffffffffffffffffffffff841615155b610c8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e5400000000000000000000000000000000604482015260640161052f565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081815260408083208584529091528120805483929061133e9084906119d9565b9091555050604080518381526020810183905260009173ffffffffffffffffffffffffffffffffffffffff86169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146113c257600080fd5b919050565b600080604083850312156113da57600080fd5b6113e38361139e565b946020939093013593505050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461141f57600080fd5b50565b60006020828403121561143457600080fd5b813561143f816113f1565b9392505050565b60006020828403121561145857600080fd5b5035919050565b60005b8381101561147a578181015183820152602001611462565b50506000910152565b6000815180845261149b81602086016020860161145f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061143f6020830184611483565b60008083601f8401126114f257600080fd5b50813567ffffffffffffffff81111561150a57600080fd5b6020830191508360208260051b850101111561152557600080fd5b9250929050565b60008083601f84011261153e57600080fd5b50813567ffffffffffffffff81111561155657600080fd5b60208301915083602082850101111561152557600080fd5b60008060008060008060008060a0898b03121561158a57600080fd5b6115938961139e565b97506115a160208a0161139e565b9650604089013567ffffffffffffffff808211156115be57600080fd5b6115ca8c838d016114e0565b909850965060608b01359150808211156115e357600080fd5b6115ef8c838d016114e0565b909650945060808b013591508082111561160857600080fd5b506116158b828c0161152c565b999c989b5096995094979396929594505050565b60008060008060008060a0878903121561164257600080fd5b61164b8761139e565b95506116596020880161139e565b94506116676040880161139e565b935060608701359250608087013567ffffffffffffffff81111561168a57600080fd5b61169689828a0161152c565b979a9699509497509295939492505050565b600080600080604085870312156116be57600080fd5b843567ffffffffffffffff808211156116d657600080fd5b6116e2888389016114e0565b909650945060208701359150808211156116fb57600080fd5b50611708878288016114e0565b95989497509550505050565b6020808252825182820181905260009190848201906040850190845b8181101561174c57835183529284019291840191600101611730565b50909695505050505050565b6000806040838503121561176b57600080fd5b6117748361139e565b91506117826020840161139e565b90509250929050565b801515811461141f57600080fd5b600080604083850312156117ac57600080fd5b6117b58361139e565b915060208301356117c58161178b565b809150509250929050565b6000806000606084860312156117e557600080fd5b6117ee8461139e565b92506117fc6020850161139e565b9150604084013590509250925092565b60006020828403121561181e57600080fd5b61143f8261139e565b60008060008060008060a0878903121561184057600080fd5b6118498761139e565b95506118576020880161139e565b94506040870135935060608701359250608087013567ffffffffffffffff81111561168a57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156118c257600080fd5b815167ffffffffffffffff808211156118da57600080fd5b818401915084601f8301126118ee57600080fd5b81518181111561190057611900611881565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561194657611946611881565b8160405282815287602084870101111561195f57600080fd5b61197083602083016020880161145f565b979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156103f0576103f06119aa565b808201808211156103f0576103f06119aa565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115611a3157600080fd5b8260051b80836020870137939093016020019392505050565b604081526000611a5e6040830186886119ff565b82810360208401526119708185876119ff565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808b168352808a1660208401525060a06040830152611af460a08301888a6119ff565b8281036060840152611b078187896119ff565b90508281036080840152611b1c818587611a71565b9b9a5050505050505050505050565b600060208284031215611b3d57600080fd5b815161143f816113f1565b600060208284031215611b5a57600080fd5b815161143f8161178b565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a06080830152611bab60a083018486611a71565b98975050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015283606083015260a0608083015261197060a083018461148356fea264697066735822122084577a7da01b2246338e3ef6baa79389f1844e0a83299623f27903d092c963a164736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000cedafe1eaa250da15c434a54ece8ba1702876e3a000000000000000000000000a1db133924fc6a615bc5a27fc9b01961250b0381
-----Decoded View---------------
Arg [0] : _whitelist (address): 0xCEDAfE1EaA250DA15c434A54ece8BA1702876e3A
Arg [1] : _descriptor (address): 0xA1Db133924Fc6A615BC5a27fc9b01961250B0381
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000cedafe1eaa250da15c434a54ece8ba1702876e3a
Arg [1] : 000000000000000000000000a1db133924fc6a615bc5a27fc9b01961250b0381
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.