Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 5 from a total of 5 transactions
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
AuctionManager
Compiler Version
v0.8.16+commit.07a7930e
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: Unlicense pragma solidity ^0.8.0; import "@openzeppelin/contracts/access/AccessControl.sol"; import "./interfaces/IAuctionManager.sol"; error AuctionManager_AuctionEnded(); error AuctionManager_AuctionNotClosed(); error AuctionManager_AuctionNotEnded(); error AuctionManager_InvalidAuction(); error AuctionManager_InvalidBid(); error AuctionManager_InvalidWinningBid(); error AuctionManager_InvalidTokenType(); error AuctionManager_NothingToSettle(); /** . :++- *##- +####* -##+ *####- :%######%. -%###* *######: =##########= .######* *#######*-#############*-*#######* *################################* *################################* *################################* *################################* *################################* :*******************************+. .:. *###%*=: .##########+-. +###############=: %##################%+ =###################### -######################++++++++++++++++++=-: =###########################################*: =#############################################. +####%#*+=-:. -#############################################: %############################################################= %############################################################## %##############################################################%=----::. %#######################################################################%: %##########################################+: :+%#######################: *########################################* *####################### -%###################################### %###################### -%###################################% ####################### =###################################- :####################### ....+##################################*. .+######################## +###########################################%*++*%########################## %#########################################################################*. %#######################################################################+ ########################################################################- *#######################################################################- .######################################################################%. :+#################################################################- :=#####################################################:..... :--:.:##############################################+ :: +###############################################%- ####%+-. %##################################################. %#######%*-. :###################################################% %###########%*=*####################################################= %#################################################################### %####################################################################+ %#####################################################################. %#####################################################################% %######################################################################- .+*********************************************************************. * @title KaijuMart Auction Manager * @author Augminted Labs, LLC */ contract AuctionManager is IAuctionManager, AccessControl { bytes32 public constant KMART_CONTRACT_ROLE = keccak256("KMART_CONTRACT_ROLE"); struct BidConfig { uint104 sigFigs; uint64 snipeThreshold; uint64 timeExtension; } BidConfig public bidConfig; mapping(uint256 => Auction) public auctions; mapping(uint256 => mapping(address => uint104)) public bids; mapping(uint256 => address[]) public tiebrokenWinners; constructor( BidConfig memory _bidConfig, address admin ) { _grantRole(DEFAULT_ADMIN_ROLE, admin); bidConfig = _bidConfig; } /** * @notice Return an auction * @param id Identifier of the auction */ function get(uint256 id) public view returns (Auction memory) { return auctions[id]; } /** * @notice Return an account's current bid on an auction * @param id Identifier of the auction * @param account Address to return the current bid of */ function getBid(uint256 id, address account) public view returns (uint104) { return bids[id][account]; } /** * @notice Returns whether or not an account is included in a list of addresses * @param addresses List of addresses * @param account Address to search for */ function includes( address[] memory addresses, address account ) internal pure returns (bool) { for (uint256 i; i < addresses.length;) { if (addresses[i] == account) return true; unchecked { ++i; } } return false; } /** * @notice Return the winner status of an account for an auction * @param id Identifier of the auction * @param sender Account to check winner status for */ function isWinner( uint256 id, address sender ) public view override returns (bool) { uint104 lowestWinningBid = auctions[id].lowestWinningBid; if (lowestWinningBid == 0) revert AuctionManager_AuctionNotClosed(); uint104 _bid = bids[id][sender]; if (_bid > lowestWinningBid) return true; else if (_bid < lowestWinningBid) return false; else return tiebrokenWinners[id].length == 0 || includes(tiebrokenWinners[id], sender); } /** * @notice Normalize a bid to the configured number of significant figures * @param _bid Value to normalize */ function normalizeBid(uint104 _bid) public view returns (uint104) { unchecked { return (_bid / bidConfig.sigFigs) * bidConfig.sigFigs; } } /** * @notice Set new configuration for auction bids * @param _bidConfig New bid configuration */ function setBidConfig(BidConfig calldata _bidConfig) public onlyRole(DEFAULT_ADMIN_ROLE) { bidConfig = _bidConfig; } /** * @notice Create a new auction * @param id Identifier of the auction * @param auction Configuration details of the new auction */ function create( uint256 id, CreateAuction calldata auction ) public override onlyRole(KMART_CONTRACT_ROLE) { if ( auction.endsAt < block.timestamp + bidConfig.snipeThreshold || auction.reservePrice == 0 || auction.winners == 0 ) revert AuctionManager_InvalidAuction(); auctions[id] = Auction({ reservePrice: auction.reservePrice, winners: auction.winners, endsAt: auction.endsAt, lowestWinningBid: 0 }); } /** * @notice Close an auction * @param id Identifier of the auction * @param lowestWinningBid Lowest amount that is considered a winning bid * @param _tiebrokenWinners An array of winning addresses use to tiebreak identical winning bids */ function close( uint256 id, uint104 lowestWinningBid, address[] calldata _tiebrokenWinners ) public override onlyRole(KMART_CONTRACT_ROLE) { if (block.timestamp < auctions[id].endsAt) revert AuctionManager_AuctionNotEnded(); if (lowestWinningBid < auctions[id].reservePrice) revert AuctionManager_InvalidWinningBid(); auctions[id].lowestWinningBid = lowestWinningBid; if (_tiebrokenWinners.length > 0) tiebrokenWinners[id] = _tiebrokenWinners; } /** * @notice Replaces the sender's current bid on an auction lot * @param id Identifier of the auction * @param value New bid to replace the current bid with * @param sender Account placing the bid * @return uint104 Increase from the previous bid */ function bid( uint256 id, uint104 value, address sender ) public override onlyRole(KMART_CONTRACT_ROLE) returns (uint104) { if (auctions[id].endsAt < block.timestamp) revert AuctionManager_AuctionEnded(); uint104 newBid = normalizeBid(value); uint104 increase = newBid - bids[id][sender]; if (newBid < auctions[id].reservePrice || increase == 0) revert AuctionManager_InvalidBid(); if (auctions[id].endsAt - block.timestamp < bidConfig.snipeThreshold) auctions[id].endsAt += bidConfig.timeExtension; bids[id][sender] = newBid; return increase; } /** * @notice Settle an auction for an account * @param id Identifier of the auction * @param sender Account to settle the auction for */ function settle( uint256 id, address sender ) public override onlyRole(KMART_CONTRACT_ROLE) returns (uint104) { uint104 amount = bids[id][sender]; if (amount == 0) revert AuctionManager_NothingToSettle(); bids[id][sender] = 0; return amount; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (access/AccessControl.sol) pragma solidity ^0.8.0; import "./IAccessControl.sol"; import "../utils/Context.sol"; import "../utils/Strings.sol"; import "../utils/introspection/ERC165.sol"; /** * @dev Contract module that allows children to implement role-based access * control mechanisms. This is a lightweight version that doesn't allow enumerating role * members except through off-chain means by accessing the contract event logs. Some * applications may benefit from on-chain enumerability, for those cases see * {AccessControlEnumerable}. * * Roles are referred to by their `bytes32` identifier. These should be exposed * in the external API and be unique. The best way to achieve this is by * using `public constant` hash digests: * * ``` * bytes32 public constant MY_ROLE = keccak256("MY_ROLE"); * ``` * * Roles can be used to represent a set of permissions. To restrict access to a * function call, use {hasRole}: * * ``` * function foo() public { * require(hasRole(MY_ROLE, msg.sender)); * ... * } * ``` * * Roles can be granted and revoked dynamically via the {grantRole} and * {revokeRole} functions. Each role has an associated admin role, and only * accounts that have a role's admin role can call {grantRole} and {revokeRole}. * * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means * that only accounts with this role will be able to grant or revoke other * roles. More complex role relationships can be created by using * {_setRoleAdmin}. * * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to * grant and revoke this role. Extra precautions should be taken to secure * accounts that have been granted it. */ abstract contract AccessControl is Context, IAccessControl, ERC165 { struct RoleData { mapping(address => bool) members; bytes32 adminRole; } mapping(bytes32 => RoleData) private _roles; bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; /** * @dev Modifier that checks that an account has a specific role. Reverts * with a standardized message including the required role. * * The format of the revert reason is given by the following regular expression: * * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/ * * _Available since v4.1._ */ modifier onlyRole(bytes32 role) { _checkRole(role); _; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId); } /** * @dev Returns `true` if `account` has been granted `role`. */ function hasRole(bytes32 role, address account) public view virtual override returns (bool) { return _roles[role].members[account]; } /** * @dev Revert with a standard message if `_msgSender()` is missing `role`. * Overriding this function changes the behavior of the {onlyRole} modifier. * * Format of the revert message is described in {_checkRole}. * * _Available since v4.6._ */ function _checkRole(bytes32 role) internal view virtual { _checkRole(role, _msgSender()); } /** * @dev Revert with a standard message if `account` is missing `role`. * * The format of the revert reason is given by the following regular expression: * * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/ */ function _checkRole(bytes32 role, address account) internal view virtual { if (!hasRole(role, account)) { revert( string( abi.encodePacked( "AccessControl: account ", Strings.toHexString(uint160(account), 20), " is missing role ", Strings.toHexString(uint256(role), 32) ) ) ); } } /** * @dev Returns the admin role that controls `role`. See {grantRole} and * {revokeRole}. * * To change a role's admin, use {_setRoleAdmin}. */ function getRoleAdmin(bytes32 role) public view virtual override returns (bytes32) { return _roles[role].adminRole; } /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. * * Requirements: * * - the caller must have ``role``'s admin role. * * May emit a {RoleGranted} event. */ function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) { _grantRole(role, account); } /** * @dev Revokes `role` from `account`. * * If `account` had been granted `role`, emits a {RoleRevoked} event. * * Requirements: * * - the caller must have ``role``'s admin role. * * May emit a {RoleRevoked} event. */ function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) { _revokeRole(role, account); } /** * @dev Revokes `role` from the calling account. * * Roles are often managed via {grantRole} and {revokeRole}: this function's * purpose is to provide a mechanism for accounts to lose their privileges * if they are compromised (such as when a trusted device is misplaced). * * If the calling account had been revoked `role`, emits a {RoleRevoked} * event. * * Requirements: * * - the caller must be `account`. * * May emit a {RoleRevoked} event. */ function renounceRole(bytes32 role, address account) public virtual override { require(account == _msgSender(), "AccessControl: can only renounce roles for self"); _revokeRole(role, account); } /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. Note that unlike {grantRole}, this function doesn't perform any * checks on the calling account. * * May emit a {RoleGranted} event. * * [WARNING] * ==== * This function should only be called from the constructor when setting * up the initial roles for the system. * * Using this function in any other way is effectively circumventing the admin * system imposed by {AccessControl}. * ==== * * NOTE: This function is deprecated in favor of {_grantRole}. */ function _setupRole(bytes32 role, address account) internal virtual { _grantRole(role, account); } /** * @dev Sets `adminRole` as ``role``'s admin role. * * Emits a {RoleAdminChanged} event. */ function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual { bytes32 previousAdminRole = getRoleAdmin(role); _roles[role].adminRole = adminRole; emit RoleAdminChanged(role, previousAdminRole, adminRole); } /** * @dev Grants `role` to `account`. * * Internal function without access restriction. * * May emit a {RoleGranted} event. */ function _grantRole(bytes32 role, address account) internal virtual { if (!hasRole(role, account)) { _roles[role].members[account] = true; emit RoleGranted(role, account, _msgSender()); } } /** * @dev Revokes `role` from `account`. * * Internal function without access restriction. * * May emit a {RoleRevoked} event. */ function _revokeRole(bytes32 role, address account) internal virtual { if (hasRole(role, account)) { _roles[role].members[account] = false; emit RoleRevoked(role, account, _msgSender()); } } }
// SPDX-License-Identifier: Unlicense pragma solidity ^0.8.0; interface IAuctionManager { struct CreateAuction { uint104 reservePrice; uint16 winners; uint64 endsAt; } struct Auction { uint104 reservePrice; uint104 lowestWinningBid; uint16 winners; uint64 endsAt; } function get(uint256 id) external view returns (Auction memory); function getBid(uint256 id, address sender) external view returns (uint104); function isWinner(uint256 id, address sender) external view returns (bool); function create(uint256 id, CreateAuction calldata auction) external; function close(uint256 id, uint104 lowestWinningBid, address[] calldata _tiebrokenWinners) external; function bid(uint256 id, uint104 value, address sender) external returns (uint104); function settle(uint256 id, address sender) external returns (uint104); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol) pragma solidity ^0.8.0; /** * @dev External interface of AccessControl declared to support ERC165 detection. */ interface IAccessControl { /** * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` * * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite * {RoleAdminChanged} not being emitted signaling this. * * _Available since v3.1._ */ event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole); /** * @dev Emitted when `account` is granted `role`. * * `sender` is the account that originated the contract call, an admin role * bearer except when using {AccessControl-_setupRole}. */ event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Emitted when `account` is revoked `role`. * * `sender` is the account that originated the contract call: * - if using `revokeRole`, it is the admin role bearer * - if using `renounceRole`, it is the role bearer (i.e. `account`) */ event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Returns `true` if `account` has been granted `role`. */ function hasRole(bytes32 role, address account) external view returns (bool); /** * @dev Returns the admin role that controls `role`. See {grantRole} and * {revokeRole}. * * To change a role's admin, use {AccessControl-_setRoleAdmin}. */ function getRoleAdmin(bytes32 role) external view returns (bytes32); /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function grantRole(bytes32 role, address account) external; /** * @dev Revokes `role` from `account`. * * If `account` had been granted `role`, emits a {RoleRevoked} event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function revokeRole(bytes32 role, address account) external; /** * @dev Revokes `role` from the calling account. * * Roles are often managed via {grantRole} and {revokeRole}: this function's * purpose is to provide a mechanism for accounts to lose their privileges * if they are compromised (such as when a trusted device is misplaced). * * If the calling account had been granted `role`, emits a {RoleRevoked} * event. * * Requirements: * * - the caller must be `account`. */ function renounceRole(bytes32 role, address account) external; }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol) pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; uint8 private constant _ADDRESS_LENGTH = 20; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } /** * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation. */ function toHexString(address addr) internal pure returns (string memory) { return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol) pragma solidity ^0.8.0; import "./IERC165.sol"; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"components":[{"internalType":"uint104","name":"sigFigs","type":"uint104"},{"internalType":"uint64","name":"snipeThreshold","type":"uint64"},{"internalType":"uint64","name":"timeExtension","type":"uint64"}],"internalType":"struct AuctionManager.BidConfig","name":"_bidConfig","type":"tuple"},{"internalType":"address","name":"admin","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AuctionManager_AuctionEnded","type":"error"},{"inputs":[],"name":"AuctionManager_AuctionNotClosed","type":"error"},{"inputs":[],"name":"AuctionManager_AuctionNotEnded","type":"error"},{"inputs":[],"name":"AuctionManager_InvalidAuction","type":"error"},{"inputs":[],"name":"AuctionManager_InvalidBid","type":"error"},{"inputs":[],"name":"AuctionManager_InvalidWinningBid","type":"error"},{"inputs":[],"name":"AuctionManager_NothingToSettle","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"KMART_CONTRACT_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"auctions","outputs":[{"internalType":"uint104","name":"reservePrice","type":"uint104"},{"internalType":"uint104","name":"lowestWinningBid","type":"uint104"},{"internalType":"uint16","name":"winners","type":"uint16"},{"internalType":"uint64","name":"endsAt","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint104","name":"value","type":"uint104"},{"internalType":"address","name":"sender","type":"address"}],"name":"bid","outputs":[{"internalType":"uint104","name":"","type":"uint104"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"bidConfig","outputs":[{"internalType":"uint104","name":"sigFigs","type":"uint104"},{"internalType":"uint64","name":"snipeThreshold","type":"uint64"},{"internalType":"uint64","name":"timeExtension","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"bids","outputs":[{"internalType":"uint104","name":"","type":"uint104"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint104","name":"lowestWinningBid","type":"uint104"},{"internalType":"address[]","name":"_tiebrokenWinners","type":"address[]"}],"name":"close","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"components":[{"internalType":"uint104","name":"reservePrice","type":"uint104"},{"internalType":"uint16","name":"winners","type":"uint16"},{"internalType":"uint64","name":"endsAt","type":"uint64"}],"internalType":"struct IAuctionManager.CreateAuction","name":"auction","type":"tuple"}],"name":"create","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"get","outputs":[{"components":[{"internalType":"uint104","name":"reservePrice","type":"uint104"},{"internalType":"uint104","name":"lowestWinningBid","type":"uint104"},{"internalType":"uint16","name":"winners","type":"uint16"},{"internalType":"uint64","name":"endsAt","type":"uint64"}],"internalType":"struct IAuctionManager.Auction","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"getBid","outputs":[{"internalType":"uint104","name":"","type":"uint104"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"sender","type":"address"}],"name":"isWinner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint104","name":"_bid","type":"uint104"}],"name":"normalizeBid","outputs":[{"internalType":"uint104","name":"","type":"uint104"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint104","name":"sigFigs","type":"uint104"},{"internalType":"uint64","name":"snipeThreshold","type":"uint64"},{"internalType":"uint64","name":"timeExtension","type":"uint64"}],"internalType":"struct AuctionManager.BidConfig","name":"_bidConfig","type":"tuple"}],"name":"setBidConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"sender","type":"address"}],"name":"settle","outputs":[{"internalType":"uint104","name":"","type":"uint104"}],"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":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"tiebrokenWinners","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060405162002ed538038062002ed5833981810160405281019062000037919062000460565b6200004c6000801b82620000f160201b60201c565b81600160008201518160000160006101000a8154816cffffffffffffffffffffffffff02191690836cffffffffffffffffffffffffff160217905550602082015181600001600d6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160156101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505050620004a7565b620001038282620001e260201b60201c565b620001de57600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620001836200024c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b6000604051905090565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620002b38262000268565b810181811067ffffffffffffffff82111715620002d557620002d462000279565b5b80604052505050565b6000620002ea62000254565b9050620002f88282620002a8565b919050565b60006cffffffffffffffffffffffffff82169050919050565b6200032181620002fd565b81146200032d57600080fd5b50565b600081519050620003418162000316565b92915050565b600067ffffffffffffffff82169050919050565b620003668162000347565b81146200037257600080fd5b50565b60008151905062000386816200035b565b92915050565b600060608284031215620003a557620003a462000263565b5b620003b16060620002de565b90506000620003c38482850162000330565b6000830152506020620003d98482850162000375565b6020830152506040620003ef8482850162000375565b60408301525092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200042882620003fb565b9050919050565b6200043a816200041b565b81146200044657600080fd5b50565b6000815190506200045a816200042f565b92915050565b600080608083850312156200047a57620004796200025e565b5b60006200048a858286016200038c565b92505060606200049d8582860162000449565b9150509250929050565b612a1e80620004b76000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806391d14854116100b8578063bdd415af1161007c578063bdd415af146103ad578063ce592fc4146103dd578063d4934220146103f9578063d547741f14610419578063e4e5d51614610435578063eba1b60b1461045357610137565b806391d14854146102cf5780639507d39a146102ff578063962d19381461032f578063a217fddf1461035f578063b3a75a821461037d57610137565b806336568abe116100ff57806336568abe146102185780633f1ffcec14610234578063571a26a01461026457806358096a6c1461029757806387e193c4146102b357610137565b806301ffc9a71461013c578063248a9ca31461016c57806324cd411d1461019c5780632c791792146101cc5780632f2ff15d146101fc575b600080fd5b61015660048036038101906101519190611bb0565b610483565b6040516101639190611bf8565b60405180910390f35b61018660048036038101906101819190611c49565b6104fd565b6040516101939190611c85565b60405180910390f35b6101b660048036038101906101b19190611ce5565b61051c565b6040516101c39190611d21565b60405180910390f35b6101e660048036038101906101e19190611dd0565b610592565b6040516101f39190611d21565b60405180910390f35b61021660048036038101906102119190611e23565b6108c4565b005b610232600480360381019061022d9190611e23565b6108e5565b005b61024e60048036038101906102499190611e63565b610968565b60405161025b9190611d21565b60405180910390f35b61027e60048036038101906102799190611ea3565b6109a3565b60405161028e9493929190611f10565b60405180910390f35b6102b160048036038101906102ac9190611fba565b610a27565b005b6102cd60048036038101906102c89190612052565b610bc4565b005b6102e960048036038101906102e49190611e23565b610e22565b6040516102f69190611bf8565b60405180910390f35b61031960048036038101906103149190611ea3565b610e8c565b6040516103269190612114565b60405180910390f35b61034960048036038101906103449190611e63565b610f8d565b6040516103569190611d21565b60405180910390f35b6103676110fd565b6040516103749190611c85565b60405180910390f35b6103976004803603810190610392919061212f565b611104565b6040516103a4919061217e565b60405180910390f35b6103c760048036038101906103c29190611e63565b611152565b6040516103d49190611bf8565b60405180910390f35b6103f760048036038101906103f291906121b8565b61136d565b005b610401611390565b604051610410939291906121e5565b60405180910390f35b610433600480360381019061042e9190611e23565b6113e9565b005b61043d61140a565b60405161044a9190611c85565b60405180910390f35b61046d60048036038101906104689190611e63565b61142e565b60405161047a9190611d21565b60405180910390f35b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104f657506104f5826114a2565b5b9050919050565b6000806000838152602001908152602001600020600101549050919050565b6000600160000160009054906101000a90046cffffffffffffffffffffffffff16600160000160009054906101000a90046cffffffffffffffffffffffffff166cffffffffffffffffffffffffff16836cffffffffffffffffffffffffff16816105895761058861221c565b5b04029050919050565b60007f4b35b4c4f5ed4bc9ee0be7ce120f2201543aa776f93a3939a69ccca20bf7569b6105be8161150c565b426002600087815260200190815260200160002060010160009054906101000a900467ffffffffffffffff1667ffffffffffffffff16101561062c576040517f08ebbd0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006106378561051c565b905060006003600088815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046cffffffffffffffffffffffffff16826106b0919061227a565b90506002600088815260200190815260200160002060000160009054906101000a90046cffffffffffffffffffffffffff166cffffffffffffffffffffffffff16826cffffffffffffffffffffffffff16108061071c57506000816cffffffffffffffffffffffffff16145b15610753576040517f4434e7cb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600001600d9054906101000a900467ffffffffffffffff1667ffffffffffffffff1642600260008a815260200190815260200160002060010160009054906101000a900467ffffffffffffffff1667ffffffffffffffff166107b791906122bb565b101561083657600160000160159054906101000a900467ffffffffffffffff166002600089815260200190815260200160002060010160008282829054906101000a900467ffffffffffffffff1661080f91906122ef565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b816003600089815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816cffffffffffffffffffffffffff02191690836cffffffffffffffffffffffffff1602179055508093505050509392505050565b6108cd826104fd565b6108d68161150c565b6108e08383611520565b505050565b6108ed611600565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461095a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610951906123ae565b60405180910390fd5b6109648282611608565b5050565b60036020528160005260406000206020528060005260406000206000915091509054906101000a90046cffffffffffffffffffffffffff1681565b60026020528060005260406000206000915090508060000160009054906101000a90046cffffffffffffffffffffffffff169080600001600d9054906101000a90046cffffffffffffffffffffffffff169080600001601a9054906101000a900461ffff16908060010160009054906101000a900467ffffffffffffffff16905084565b7f4b35b4c4f5ed4bc9ee0be7ce120f2201543aa776f93a3939a69ccca20bf7569b610a518161150c565b6002600086815260200190815260200160002060010160009054906101000a900467ffffffffffffffff1667ffffffffffffffff16421015610abf576040517fff20983e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600086815260200190815260200160002060000160009054906101000a90046cffffffffffffffffffffffffff166cffffffffffffffffffffffffff16846cffffffffffffffffffffffffff161015610b46576040517fa7bce9de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8360026000878152602001908152602001600020600001600d6101000a8154816cffffffffffffffffffffffffff02191690836cffffffffffffffffffffffffff1602179055506000838390501115610bbd578282600460008881526020019081526020016000209190610bbb929190611a3d565b505b5050505050565b7f4b35b4c4f5ed4bc9ee0be7ce120f2201543aa776f93a3939a69ccca20bf7569b610bee8161150c565b6001600001600d9054906101000a900467ffffffffffffffff1667ffffffffffffffff1642610c1d91906123ce565b826040016020810190610c30919061242e565b67ffffffffffffffff161080610c6757506000826000016020810190610c569190611ce5565b6cffffffffffffffffffffffffff16145b80610c8857506000826020016020810190610c829190612487565b61ffff16145b15610cbf576040517ff8ea6fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518060800160405280836000016020810190610cdd9190611ce5565b6cffffffffffffffffffffffffff16815260200160006cffffffffffffffffffffffffff168152602001836020016020810190610d1a9190612487565b61ffff168152602001836040016020810190610d36919061242e565b67ffffffffffffffff168152506002600085815260200190815260200160002060008201518160000160006101000a8154816cffffffffffffffffffffffffff02191690836cffffffffffffffffffffffffff160217905550602082015181600001600d6101000a8154816cffffffffffffffffffffffffff02191690836cffffffffffffffffffffffffff160217905550604082015181600001601a6101000a81548161ffff021916908361ffff16021790555060608201518160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050505050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610e94611add565b600260008381526020019081526020016000206040518060800160405290816000820160009054906101000a90046cffffffffffffffffffffffffff166cffffffffffffffffffffffffff166cffffffffffffffffffffffffff16815260200160008201600d9054906101000a90046cffffffffffffffffffffffffff166cffffffffffffffffffffffffff166cffffffffffffffffffffffffff16815260200160008201601a9054906101000a900461ffff1661ffff1661ffff1681526020016001820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050919050565b60007f4b35b4c4f5ed4bc9ee0be7ce120f2201543aa776f93a3939a69ccca20bf7569b610fb98161150c565b60006003600086815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046cffffffffffffffffffffffffff1690506000816cffffffffffffffffffffffffff1603611070576040517f20fb312d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006003600087815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816cffffffffffffffffffffffffff02191690836cffffffffffffffffffffffffff160217905550809250505092915050565b6000801b81565b6004602052816000526040600020818154811061112057600080fd5b906000526020600020016000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060026000858152602001908152602001600020600001600d9054906101000a90046cffffffffffffffffffffffffff1690506000816cffffffffffffffffffffffffff16036111d0576040517fbff50f5700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006003600086815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046cffffffffffffffffffffffffff169050816cffffffffffffffffffffffffff16816cffffffffffffffffffffffffff16111561126f57600192505050611367565b816cffffffffffffffffffffffffff16816cffffffffffffffffffffffffff1610156112a057600092505050611367565b60006004600087815260200190815260200160002080549050148061136257506113616004600087815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561135657602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161130c575b5050505050856116e9565b5b925050505b92915050565b6000801b61137a8161150c565b816001818161138991906126de565b9050505050565b60018060000160009054906101000a90046cffffffffffffffffffffffffff169080600001600d9054906101000a900467ffffffffffffffff16908060000160159054906101000a900467ffffffffffffffff16905083565b6113f2826104fd565b6113fb8161150c565b6114058383611608565b505050565b7f4b35b4c4f5ed4bc9ee0be7ce120f2201543aa776f93a3939a69ccca20bf7569b81565b60006003600084815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046cffffffffffffffffffffffffff16905092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61151d81611518611600565b611764565b50565b61152a8282610e22565b6115fc57600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506115a1611600565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600033905090565b6116128282610e22565b156116e557600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061168a611600565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6000805b8351811015611758578273ffffffffffffffffffffffffffffffffffffffff168482815181106117205761171f6126ec565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff160361174d57600191505061175e565b8060010190506116ed565b50600090505b92915050565b61176e8282610e22565b6117fd576117938173ffffffffffffffffffffffffffffffffffffffff166014611801565b6117a18360001c6020611801565b6040516020016117b2929190612824565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f491906128a8565b60405180910390fd5b5050565b60606000600283600261181491906128ca565b61181e91906123ce565b67ffffffffffffffff81111561183757611836612924565b5b6040519080825280601f01601f1916602001820160405280156118695781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106118a1576118a06126ec565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611905576119046126ec565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000600184600261194591906128ca565b61194f91906123ce565b90505b60018111156119ef577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110611991576119906126ec565b5b1a60f81b8282815181106119a8576119a76126ec565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806119e890612953565b9050611952565b5060008414611a33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2a906129c8565b60405180910390fd5b8091505092915050565b828054828255906000526020600020908101928215611acc579160200282015b82811115611acb57823573ffffffffffffffffffffffffffffffffffffffff168260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190611a5d565b5b509050611ad99190611b31565b5090565b604051806080016040528060006cffffffffffffffffffffffffff16815260200160006cffffffffffffffffffffffffff168152602001600061ffff168152602001600067ffffffffffffffff1681525090565b5b80821115611b4a576000816000905550600101611b32565b5090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611b8d81611b58565b8114611b9857600080fd5b50565b600081359050611baa81611b84565b92915050565b600060208284031215611bc657611bc5611b4e565b5b6000611bd484828501611b9b565b91505092915050565b60008115159050919050565b611bf281611bdd565b82525050565b6000602082019050611c0d6000830184611be9565b92915050565b6000819050919050565b611c2681611c13565b8114611c3157600080fd5b50565b600081359050611c4381611c1d565b92915050565b600060208284031215611c5f57611c5e611b4e565b5b6000611c6d84828501611c34565b91505092915050565b611c7f81611c13565b82525050565b6000602082019050611c9a6000830184611c76565b92915050565b60006cffffffffffffffffffffffffff82169050919050565b611cc281611ca0565b8114611ccd57600080fd5b50565b600081359050611cdf81611cb9565b92915050565b600060208284031215611cfb57611cfa611b4e565b5b6000611d0984828501611cd0565b91505092915050565b611d1b81611ca0565b82525050565b6000602082019050611d366000830184611d12565b92915050565b6000819050919050565b611d4f81611d3c565b8114611d5a57600080fd5b50565b600081359050611d6c81611d46565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611d9d82611d72565b9050919050565b611dad81611d92565b8114611db857600080fd5b50565b600081359050611dca81611da4565b92915050565b600080600060608486031215611de957611de8611b4e565b5b6000611df786828701611d5d565b9350506020611e0886828701611cd0565b9250506040611e1986828701611dbb565b9150509250925092565b60008060408385031215611e3a57611e39611b4e565b5b6000611e4885828601611c34565b9250506020611e5985828601611dbb565b9150509250929050565b60008060408385031215611e7a57611e79611b4e565b5b6000611e8885828601611d5d565b9250506020611e9985828601611dbb565b9150509250929050565b600060208284031215611eb957611eb8611b4e565b5b6000611ec784828501611d5d565b91505092915050565b600061ffff82169050919050565b611ee781611ed0565b82525050565b600067ffffffffffffffff82169050919050565b611f0a81611eed565b82525050565b6000608082019050611f256000830187611d12565b611f326020830186611d12565b611f3f6040830185611ede565b611f4c6060830184611f01565b95945050505050565b600080fd5b600080fd5b600080fd5b60008083601f840112611f7a57611f79611f55565b5b8235905067ffffffffffffffff811115611f9757611f96611f5a565b5b602083019150836020820283011115611fb357611fb2611f5f565b5b9250929050565b60008060008060608587031215611fd457611fd3611b4e565b5b6000611fe287828801611d5d565b9450506020611ff387828801611cd0565b935050604085013567ffffffffffffffff81111561201457612013611b53565b5b61202087828801611f64565b925092505092959194509250565b600080fd5b6000606082840312156120495761204861202e565b5b81905092915050565b6000806080838503121561206957612068611b4e565b5b600061207785828601611d5d565b925050602061208885828601612033565b9150509250929050565b61209b81611ca0565b82525050565b6120aa81611ed0565b82525050565b6120b981611eed565b82525050565b6080820160008201516120d56000850182612092565b5060208201516120e86020850182612092565b5060408201516120fb60408501826120a1565b50606082015161210e60608501826120b0565b50505050565b600060808201905061212960008301846120bf565b92915050565b6000806040838503121561214657612145611b4e565b5b600061215485828601611d5d565b925050602061216585828601611d5d565b9150509250929050565b61217881611d92565b82525050565b6000602082019050612193600083018461216f565b92915050565b6000606082840312156121af576121ae61202e565b5b81905092915050565b6000606082840312156121ce576121cd611b4e565b5b60006121dc84828501612199565b91505092915050565b60006060820190506121fa6000830186611d12565b6122076020830185611f01565b6122146040830184611f01565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061228582611ca0565b915061229083611ca0565b925082820390506cffffffffffffffffffffffffff8111156122b5576122b461224b565b5b92915050565b60006122c682611d3c565b91506122d183611d3c565b92508282039050818111156122e9576122e861224b565b5b92915050565b60006122fa82611eed565b915061230583611eed565b9250828201905067ffffffffffffffff8111156123255761232461224b565b5b92915050565b600082825260208201905092915050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000612398602f8361232b565b91506123a38261233c565b604082019050919050565b600060208201905081810360008301526123c78161238b565b9050919050565b60006123d982611d3c565b91506123e483611d3c565b92508282019050808211156123fc576123fb61224b565b5b92915050565b61240b81611eed565b811461241657600080fd5b50565b60008135905061242881612402565b92915050565b60006020828403121561244457612443611b4e565b5b600061245284828501612419565b91505092915050565b61246481611ed0565b811461246f57600080fd5b50565b6000813590506124818161245b565b92915050565b60006020828403121561249d5761249c611b4e565b5b60006124ab84828501612472565b91505092915050565b600081356124c181611cb9565b80915050919050565b60008160001b9050919050565b60006cffffffffffffffffffffffffff6124f0846124ca565b9350801983169250808416831791505092915050565b6000819050919050565b600061252b61252661252184611ca0565b612506565b611ca0565b9050919050565b6000819050919050565b61254582612510565b61255861255182612532565b83546124d7565b8255505050565b6000813561256c81612402565b80915050919050565b60008160681b9050919050565b600074ffffffffffffffff000000000000000000000000006125a384612575565b9350801983169250808416831791505092915050565b60006125d46125cf6125ca84611eed565b612506565b611eed565b9050919050565b6000819050919050565b6125ee826125b9565b6126016125fa826125db565b8354612582565b8255505050565b60008160a81b9050919050565b60007cffffffffffffffff00000000000000000000000000000000000000000061263e84612608565b9350801983169250808416831791505092915050565b61265d826125b9565b612670612669826125db565b8354612615565b8255505050565b600081016000830180612689816124b4565b9050612695818461253c565b5050506000810160208301806126aa8161255f565b90506126b681846125e5565b5050506000810160408301806126cb8161255f565b90506126d78184612654565b5050505050565b6126e88282612677565b5050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b600061275c60178361271b565b915061276782612726565b601782019050919050565b600081519050919050565b60005b8381101561279b578082015181840152602081019050612780565b60008484015250505050565b60006127b282612772565b6127bc818561271b565b93506127cc81856020860161277d565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b600061280e60118361271b565b9150612819826127d8565b601182019050919050565b600061282f8261274f565b915061283b82856127a7565b915061284682612801565b915061285282846127a7565b91508190509392505050565b6000601f19601f8301169050919050565b600061287a82612772565b612884818561232b565b935061289481856020860161277d565b61289d8161285e565b840191505092915050565b600060208201905081810360008301526128c2818461286f565b905092915050565b60006128d582611d3c565b91506128e083611d3c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156129195761291861224b565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600061295e82611d3c565b9150600082036129715761297061224b565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b60006129b260208361232b565b91506129bd8261297c565b602082019050919050565b600060208201905081810360008301526129e1816129a5565b905091905056fea264697066735822122037665f7823a6d7a47df84d61e98e755716a2b743c2198d82b7306d7f5d237bb964736f6c634300081000330000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000000000000000000000000000000000000000012c0000000000000000000000000000000000000000000000000000000000000384000000000000000000000000084fd17c6a5697bd651b6482fa916c0b3a0e6161
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101375760003560e01c806391d14854116100b8578063bdd415af1161007c578063bdd415af146103ad578063ce592fc4146103dd578063d4934220146103f9578063d547741f14610419578063e4e5d51614610435578063eba1b60b1461045357610137565b806391d14854146102cf5780639507d39a146102ff578063962d19381461032f578063a217fddf1461035f578063b3a75a821461037d57610137565b806336568abe116100ff57806336568abe146102185780633f1ffcec14610234578063571a26a01461026457806358096a6c1461029757806387e193c4146102b357610137565b806301ffc9a71461013c578063248a9ca31461016c57806324cd411d1461019c5780632c791792146101cc5780632f2ff15d146101fc575b600080fd5b61015660048036038101906101519190611bb0565b610483565b6040516101639190611bf8565b60405180910390f35b61018660048036038101906101819190611c49565b6104fd565b6040516101939190611c85565b60405180910390f35b6101b660048036038101906101b19190611ce5565b61051c565b6040516101c39190611d21565b60405180910390f35b6101e660048036038101906101e19190611dd0565b610592565b6040516101f39190611d21565b60405180910390f35b61021660048036038101906102119190611e23565b6108c4565b005b610232600480360381019061022d9190611e23565b6108e5565b005b61024e60048036038101906102499190611e63565b610968565b60405161025b9190611d21565b60405180910390f35b61027e60048036038101906102799190611ea3565b6109a3565b60405161028e9493929190611f10565b60405180910390f35b6102b160048036038101906102ac9190611fba565b610a27565b005b6102cd60048036038101906102c89190612052565b610bc4565b005b6102e960048036038101906102e49190611e23565b610e22565b6040516102f69190611bf8565b60405180910390f35b61031960048036038101906103149190611ea3565b610e8c565b6040516103269190612114565b60405180910390f35b61034960048036038101906103449190611e63565b610f8d565b6040516103569190611d21565b60405180910390f35b6103676110fd565b6040516103749190611c85565b60405180910390f35b6103976004803603810190610392919061212f565b611104565b6040516103a4919061217e565b60405180910390f35b6103c760048036038101906103c29190611e63565b611152565b6040516103d49190611bf8565b60405180910390f35b6103f760048036038101906103f291906121b8565b61136d565b005b610401611390565b604051610410939291906121e5565b60405180910390f35b610433600480360381019061042e9190611e23565b6113e9565b005b61043d61140a565b60405161044a9190611c85565b60405180910390f35b61046d60048036038101906104689190611e63565b61142e565b60405161047a9190611d21565b60405180910390f35b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104f657506104f5826114a2565b5b9050919050565b6000806000838152602001908152602001600020600101549050919050565b6000600160000160009054906101000a90046cffffffffffffffffffffffffff16600160000160009054906101000a90046cffffffffffffffffffffffffff166cffffffffffffffffffffffffff16836cffffffffffffffffffffffffff16816105895761058861221c565b5b04029050919050565b60007f4b35b4c4f5ed4bc9ee0be7ce120f2201543aa776f93a3939a69ccca20bf7569b6105be8161150c565b426002600087815260200190815260200160002060010160009054906101000a900467ffffffffffffffff1667ffffffffffffffff16101561062c576040517f08ebbd0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006106378561051c565b905060006003600088815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046cffffffffffffffffffffffffff16826106b0919061227a565b90506002600088815260200190815260200160002060000160009054906101000a90046cffffffffffffffffffffffffff166cffffffffffffffffffffffffff16826cffffffffffffffffffffffffff16108061071c57506000816cffffffffffffffffffffffffff16145b15610753576040517f4434e7cb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600001600d9054906101000a900467ffffffffffffffff1667ffffffffffffffff1642600260008a815260200190815260200160002060010160009054906101000a900467ffffffffffffffff1667ffffffffffffffff166107b791906122bb565b101561083657600160000160159054906101000a900467ffffffffffffffff166002600089815260200190815260200160002060010160008282829054906101000a900467ffffffffffffffff1661080f91906122ef565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b816003600089815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816cffffffffffffffffffffffffff02191690836cffffffffffffffffffffffffff1602179055508093505050509392505050565b6108cd826104fd565b6108d68161150c565b6108e08383611520565b505050565b6108ed611600565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461095a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610951906123ae565b60405180910390fd5b6109648282611608565b5050565b60036020528160005260406000206020528060005260406000206000915091509054906101000a90046cffffffffffffffffffffffffff1681565b60026020528060005260406000206000915090508060000160009054906101000a90046cffffffffffffffffffffffffff169080600001600d9054906101000a90046cffffffffffffffffffffffffff169080600001601a9054906101000a900461ffff16908060010160009054906101000a900467ffffffffffffffff16905084565b7f4b35b4c4f5ed4bc9ee0be7ce120f2201543aa776f93a3939a69ccca20bf7569b610a518161150c565b6002600086815260200190815260200160002060010160009054906101000a900467ffffffffffffffff1667ffffffffffffffff16421015610abf576040517fff20983e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600086815260200190815260200160002060000160009054906101000a90046cffffffffffffffffffffffffff166cffffffffffffffffffffffffff16846cffffffffffffffffffffffffff161015610b46576040517fa7bce9de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8360026000878152602001908152602001600020600001600d6101000a8154816cffffffffffffffffffffffffff02191690836cffffffffffffffffffffffffff1602179055506000838390501115610bbd578282600460008881526020019081526020016000209190610bbb929190611a3d565b505b5050505050565b7f4b35b4c4f5ed4bc9ee0be7ce120f2201543aa776f93a3939a69ccca20bf7569b610bee8161150c565b6001600001600d9054906101000a900467ffffffffffffffff1667ffffffffffffffff1642610c1d91906123ce565b826040016020810190610c30919061242e565b67ffffffffffffffff161080610c6757506000826000016020810190610c569190611ce5565b6cffffffffffffffffffffffffff16145b80610c8857506000826020016020810190610c829190612487565b61ffff16145b15610cbf576040517ff8ea6fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518060800160405280836000016020810190610cdd9190611ce5565b6cffffffffffffffffffffffffff16815260200160006cffffffffffffffffffffffffff168152602001836020016020810190610d1a9190612487565b61ffff168152602001836040016020810190610d36919061242e565b67ffffffffffffffff168152506002600085815260200190815260200160002060008201518160000160006101000a8154816cffffffffffffffffffffffffff02191690836cffffffffffffffffffffffffff160217905550602082015181600001600d6101000a8154816cffffffffffffffffffffffffff02191690836cffffffffffffffffffffffffff160217905550604082015181600001601a6101000a81548161ffff021916908361ffff16021790555060608201518160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050505050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610e94611add565b600260008381526020019081526020016000206040518060800160405290816000820160009054906101000a90046cffffffffffffffffffffffffff166cffffffffffffffffffffffffff166cffffffffffffffffffffffffff16815260200160008201600d9054906101000a90046cffffffffffffffffffffffffff166cffffffffffffffffffffffffff166cffffffffffffffffffffffffff16815260200160008201601a9054906101000a900461ffff1661ffff1661ffff1681526020016001820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050919050565b60007f4b35b4c4f5ed4bc9ee0be7ce120f2201543aa776f93a3939a69ccca20bf7569b610fb98161150c565b60006003600086815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046cffffffffffffffffffffffffff1690506000816cffffffffffffffffffffffffff1603611070576040517f20fb312d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006003600087815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816cffffffffffffffffffffffffff02191690836cffffffffffffffffffffffffff160217905550809250505092915050565b6000801b81565b6004602052816000526040600020818154811061112057600080fd5b906000526020600020016000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060026000858152602001908152602001600020600001600d9054906101000a90046cffffffffffffffffffffffffff1690506000816cffffffffffffffffffffffffff16036111d0576040517fbff50f5700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006003600086815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046cffffffffffffffffffffffffff169050816cffffffffffffffffffffffffff16816cffffffffffffffffffffffffff16111561126f57600192505050611367565b816cffffffffffffffffffffffffff16816cffffffffffffffffffffffffff1610156112a057600092505050611367565b60006004600087815260200190815260200160002080549050148061136257506113616004600087815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561135657602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161130c575b5050505050856116e9565b5b925050505b92915050565b6000801b61137a8161150c565b816001818161138991906126de565b9050505050565b60018060000160009054906101000a90046cffffffffffffffffffffffffff169080600001600d9054906101000a900467ffffffffffffffff16908060000160159054906101000a900467ffffffffffffffff16905083565b6113f2826104fd565b6113fb8161150c565b6114058383611608565b505050565b7f4b35b4c4f5ed4bc9ee0be7ce120f2201543aa776f93a3939a69ccca20bf7569b81565b60006003600084815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046cffffffffffffffffffffffffff16905092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61151d81611518611600565b611764565b50565b61152a8282610e22565b6115fc57600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506115a1611600565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600033905090565b6116128282610e22565b156116e557600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061168a611600565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6000805b8351811015611758578273ffffffffffffffffffffffffffffffffffffffff168482815181106117205761171f6126ec565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff160361174d57600191505061175e565b8060010190506116ed565b50600090505b92915050565b61176e8282610e22565b6117fd576117938173ffffffffffffffffffffffffffffffffffffffff166014611801565b6117a18360001c6020611801565b6040516020016117b2929190612824565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f491906128a8565b60405180910390fd5b5050565b60606000600283600261181491906128ca565b61181e91906123ce565b67ffffffffffffffff81111561183757611836612924565b5b6040519080825280601f01601f1916602001820160405280156118695781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106118a1576118a06126ec565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611905576119046126ec565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000600184600261194591906128ca565b61194f91906123ce565b90505b60018111156119ef577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110611991576119906126ec565b5b1a60f81b8282815181106119a8576119a76126ec565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806119e890612953565b9050611952565b5060008414611a33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2a906129c8565b60405180910390fd5b8091505092915050565b828054828255906000526020600020908101928215611acc579160200282015b82811115611acb57823573ffffffffffffffffffffffffffffffffffffffff168260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190611a5d565b5b509050611ad99190611b31565b5090565b604051806080016040528060006cffffffffffffffffffffffffff16815260200160006cffffffffffffffffffffffffff168152602001600061ffff168152602001600067ffffffffffffffff1681525090565b5b80821115611b4a576000816000905550600101611b32565b5090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611b8d81611b58565b8114611b9857600080fd5b50565b600081359050611baa81611b84565b92915050565b600060208284031215611bc657611bc5611b4e565b5b6000611bd484828501611b9b565b91505092915050565b60008115159050919050565b611bf281611bdd565b82525050565b6000602082019050611c0d6000830184611be9565b92915050565b6000819050919050565b611c2681611c13565b8114611c3157600080fd5b50565b600081359050611c4381611c1d565b92915050565b600060208284031215611c5f57611c5e611b4e565b5b6000611c6d84828501611c34565b91505092915050565b611c7f81611c13565b82525050565b6000602082019050611c9a6000830184611c76565b92915050565b60006cffffffffffffffffffffffffff82169050919050565b611cc281611ca0565b8114611ccd57600080fd5b50565b600081359050611cdf81611cb9565b92915050565b600060208284031215611cfb57611cfa611b4e565b5b6000611d0984828501611cd0565b91505092915050565b611d1b81611ca0565b82525050565b6000602082019050611d366000830184611d12565b92915050565b6000819050919050565b611d4f81611d3c565b8114611d5a57600080fd5b50565b600081359050611d6c81611d46565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611d9d82611d72565b9050919050565b611dad81611d92565b8114611db857600080fd5b50565b600081359050611dca81611da4565b92915050565b600080600060608486031215611de957611de8611b4e565b5b6000611df786828701611d5d565b9350506020611e0886828701611cd0565b9250506040611e1986828701611dbb565b9150509250925092565b60008060408385031215611e3a57611e39611b4e565b5b6000611e4885828601611c34565b9250506020611e5985828601611dbb565b9150509250929050565b60008060408385031215611e7a57611e79611b4e565b5b6000611e8885828601611d5d565b9250506020611e9985828601611dbb565b9150509250929050565b600060208284031215611eb957611eb8611b4e565b5b6000611ec784828501611d5d565b91505092915050565b600061ffff82169050919050565b611ee781611ed0565b82525050565b600067ffffffffffffffff82169050919050565b611f0a81611eed565b82525050565b6000608082019050611f256000830187611d12565b611f326020830186611d12565b611f3f6040830185611ede565b611f4c6060830184611f01565b95945050505050565b600080fd5b600080fd5b600080fd5b60008083601f840112611f7a57611f79611f55565b5b8235905067ffffffffffffffff811115611f9757611f96611f5a565b5b602083019150836020820283011115611fb357611fb2611f5f565b5b9250929050565b60008060008060608587031215611fd457611fd3611b4e565b5b6000611fe287828801611d5d565b9450506020611ff387828801611cd0565b935050604085013567ffffffffffffffff81111561201457612013611b53565b5b61202087828801611f64565b925092505092959194509250565b600080fd5b6000606082840312156120495761204861202e565b5b81905092915050565b6000806080838503121561206957612068611b4e565b5b600061207785828601611d5d565b925050602061208885828601612033565b9150509250929050565b61209b81611ca0565b82525050565b6120aa81611ed0565b82525050565b6120b981611eed565b82525050565b6080820160008201516120d56000850182612092565b5060208201516120e86020850182612092565b5060408201516120fb60408501826120a1565b50606082015161210e60608501826120b0565b50505050565b600060808201905061212960008301846120bf565b92915050565b6000806040838503121561214657612145611b4e565b5b600061215485828601611d5d565b925050602061216585828601611d5d565b9150509250929050565b61217881611d92565b82525050565b6000602082019050612193600083018461216f565b92915050565b6000606082840312156121af576121ae61202e565b5b81905092915050565b6000606082840312156121ce576121cd611b4e565b5b60006121dc84828501612199565b91505092915050565b60006060820190506121fa6000830186611d12565b6122076020830185611f01565b6122146040830184611f01565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061228582611ca0565b915061229083611ca0565b925082820390506cffffffffffffffffffffffffff8111156122b5576122b461224b565b5b92915050565b60006122c682611d3c565b91506122d183611d3c565b92508282039050818111156122e9576122e861224b565b5b92915050565b60006122fa82611eed565b915061230583611eed565b9250828201905067ffffffffffffffff8111156123255761232461224b565b5b92915050565b600082825260208201905092915050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000612398602f8361232b565b91506123a38261233c565b604082019050919050565b600060208201905081810360008301526123c78161238b565b9050919050565b60006123d982611d3c565b91506123e483611d3c565b92508282019050808211156123fc576123fb61224b565b5b92915050565b61240b81611eed565b811461241657600080fd5b50565b60008135905061242881612402565b92915050565b60006020828403121561244457612443611b4e565b5b600061245284828501612419565b91505092915050565b61246481611ed0565b811461246f57600080fd5b50565b6000813590506124818161245b565b92915050565b60006020828403121561249d5761249c611b4e565b5b60006124ab84828501612472565b91505092915050565b600081356124c181611cb9565b80915050919050565b60008160001b9050919050565b60006cffffffffffffffffffffffffff6124f0846124ca565b9350801983169250808416831791505092915050565b6000819050919050565b600061252b61252661252184611ca0565b612506565b611ca0565b9050919050565b6000819050919050565b61254582612510565b61255861255182612532565b83546124d7565b8255505050565b6000813561256c81612402565b80915050919050565b60008160681b9050919050565b600074ffffffffffffffff000000000000000000000000006125a384612575565b9350801983169250808416831791505092915050565b60006125d46125cf6125ca84611eed565b612506565b611eed565b9050919050565b6000819050919050565b6125ee826125b9565b6126016125fa826125db565b8354612582565b8255505050565b60008160a81b9050919050565b60007cffffffffffffffff00000000000000000000000000000000000000000061263e84612608565b9350801983169250808416831791505092915050565b61265d826125b9565b612670612669826125db565b8354612615565b8255505050565b600081016000830180612689816124b4565b9050612695818461253c565b5050506000810160208301806126aa8161255f565b90506126b681846125e5565b5050506000810160408301806126cb8161255f565b90506126d78184612654565b5050505050565b6126e88282612677565b5050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b600061275c60178361271b565b915061276782612726565b601782019050919050565b600081519050919050565b60005b8381101561279b578082015181840152602081019050612780565b60008484015250505050565b60006127b282612772565b6127bc818561271b565b93506127cc81856020860161277d565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b600061280e60118361271b565b9150612819826127d8565b601182019050919050565b600061282f8261274f565b915061283b82856127a7565b915061284682612801565b915061285282846127a7565b91508190509392505050565b6000601f19601f8301169050919050565b600061287a82612772565b612884818561232b565b935061289481856020860161277d565b61289d8161285e565b840191505092915050565b600060208201905081810360008301526128c2818461286f565b905092915050565b60006128d582611d3c565b91506128e083611d3c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156129195761291861224b565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600061295e82611d3c565b9150600082036129715761297061224b565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b60006129b260208361232b565b91506129bd8261297c565b602082019050919050565b600060208201905081810360008301526129e1816129a5565b905091905056fea264697066735822122037665f7823a6d7a47df84d61e98e755716a2b743c2198d82b7306d7f5d237bb964736f6c63430008100033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000000000000000000000000000000000000000012c0000000000000000000000000000000000000000000000000000000000000384000000000000000000000000084fd17c6a5697bd651b6482fa916c0b3a0e6161
-----Decoded View---------------
Arg [0] : _bidConfig (tuple): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]
Arg [1] : admin (address): 0x084FD17c6A5697bd651b6482fa916C0b3a0e6161
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000de0b6b3a7640000
Arg [1] : 000000000000000000000000000000000000000000000000000000000000012c
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000384
Arg [3] : 000000000000000000000000084fd17c6a5697bd651b6482fa916c0b3a0e6161
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.