Polygon Sponsored slots available. Book your slot here!
ERC-20
NFT
Overview
Max Total Supply
19,586,250 KEY
Holders
31,890 (0.00%)
Market
Price
$0.00 @ 0.000000 MATIC
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
15 KEYValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
LinkKey
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./ERC20.sol"; import "./Timers.sol"; import "./Ownable.sol"; import "./Pausable.sol"; import "./SafeMath.sol"; contract LinkKey is ERC20,Ownable,Pausable { using Timers for Timers.Timestamp; using SafeMath for uint256; mapping(address => bool) public minter; address public userCollectAddress; address public teamCollectAddress; address public investorCollectAddress; address public bidderCollectAddress; uint256 public totalShare; uint256 public userShare; uint256 public teamShare; uint256 public investorShare; uint256 public bidderShare; uint256 public releaseAmount; Timers.Timestamp public releaseTime; constructor(string memory name_, string memory symbol_, uint64 deadline_, address userCollectAddress_, address teamCollectAddress_, address investorCollectAddress_, address bidderCollectAddress_, uint256 releaseAmount_) ERC20(name_,symbol_) Pausable(){ releaseTime.setDeadline(deadline_); userCollectAddress = userCollectAddress_; teamCollectAddress = teamCollectAddress_; investorCollectAddress = investorCollectAddress_; bidderCollectAddress = bidderCollectAddress_; userShare = 5; teamShare = 1; investorShare = 3; bidderShare = 1; setTotalShare(); releaseAmount = releaseAmount_; } modifier releasing(){ require(releaseTime.isPending(), "token release stop, permission denied."); _; } modifier releaseStop() { require(releaseTime.isExpired(), "token releasing, permission denied."); _; } function mint() public returns(bool){ if( (!minter[_msgSender()]) || releaseTime.isExpired() || paused() || totalShare <= 0){ return false; } uint256 userCollectToken = releaseAmount.mul(1 ether).mul(userShare).div(totalShare); uint256 teamCollectToken = releaseAmount.mul(1 ether).mul(teamShare).div(totalShare); uint256 investorCollectToken = releaseAmount.mul(1 ether).mul(investorShare).div(totalShare); uint256 bidderCollectToken = releaseAmount.mul(1 ether).mul(bidderShare).div(totalShare); _mint(userCollectAddress, userCollectToken); _mint(teamCollectAddress, teamCollectToken); _mint(investorCollectAddress, investorCollectToken); _mint(bidderCollectAddress, bidderCollectToken); return true; } function setTotalShare() internal{ totalShare = userShare + teamShare + investorShare +bidderShare; } function setUserShare(uint256 userShare_) public releaseStop onlyOwner{ userShare = userShare_; setTotalShare(); } function setTeamShare(uint256 teamShare_) public releaseStop onlyOwner{ teamShare = teamShare_; setTotalShare(); } function setInvestorShare(uint256 investorShare_) public releaseStop onlyOwner{ investorShare = investorShare_; setTotalShare(); } function setBidderShare(uint256 bidderShare_) public releaseStop onlyOwner{ bidderShare = bidderShare_; setTotalShare(); } function setReleaseTime(uint64 deadline_) public releaseStop onlyOwner{ releaseTime.setDeadline(deadline_); } function setUserCollectAddress(address userCollectAddress_) public onlyOwner{ userCollectAddress = userCollectAddress_; } function setTeamCollectAddress(address teamCollectAddress_) public onlyOwner{ teamCollectAddress = teamCollectAddress_; } function setInvestorCollectAddress(address investorCollectAddress_) public onlyOwner{ investorCollectAddress = investorCollectAddress_; } function setBidderCollectAddress(address bidderCollectAddress_) public onlyOwner{ bidderCollectAddress = bidderCollectAddress_; } function setMinter(address minter_) public onlyOwner{ minter[minter_] = true; } function removeMinter(address minter_) public onlyOwner{ minter[minter_] = false; } function burn(uint256 amount_) public whenNotPaused{ _burn(_msgSender(), amount_); } /** * @dev Destroys `amount` tokens from `account`, deducting from the caller's * allowance. * * See {ERC20-_burn} and {ERC20-allowance}. * * Requirements: * * - the caller must have allowance for ``accounts``'s tokens of at least * `amount`. */ function burnFrom(address account, uint256 amount) public whenNotPaused{ uint256 currentAllowance = allowance(account, _msgSender()); require(currentAllowance >= amount, "ERC20: burn amount exceeds allowance"); unchecked { _approve(account, _msgSender(), currentAllowance - amount); } _burn(account, amount); } function pause() public onlyOwner{ _pause(); } function unpause() public onlyOwner{ _unpause(); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.0 (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 v4.4.0 (token/ERC20/ERC20.sol) pragma solidity ^0.8.0; import "./IERC20.sol"; import "./IERC20Metadata.sol"; import "./Context.sol"; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `sender` to `recipient`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.0 (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.0 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.0; import "./IERC20.sol"; /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.0 (access/Ownable.sol) pragma solidity ^0.8.0; import "./Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.0 (security/Pausable.sol) pragma solidity ^0.8.0; import "./Context.sol"; /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ abstract contract Pausable is Context { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor() { _paused = false; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view virtual returns (bool) { return _paused; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { require(!paused(), "Pausable: paused"); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { require(paused(), "Pausable: not paused"); _; } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.0 (utils/math/SafeMath.sol) pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.0 (utils/Timers.sol) pragma solidity ^0.8.0; /** * @dev Tooling for timepoints, timers and delays */ library Timers { struct Timestamp { uint64 _deadline; } function getDeadline(Timestamp memory timer) internal pure returns (uint64) { return timer._deadline; } function setDeadline(Timestamp storage timer, uint64 timestamp) internal { timer._deadline = timestamp; } function reset(Timestamp storage timer) internal { timer._deadline = 0; } function isUnset(Timestamp memory timer) internal pure returns (bool) { return timer._deadline == 0; } function isStarted(Timestamp memory timer) internal pure returns (bool) { return timer._deadline > 0; } function isPending(Timestamp memory timer) internal view returns (bool) { return timer._deadline > block.timestamp; } function isExpired(Timestamp memory timer) internal view returns (bool) { return isStarted(timer) && timer._deadline <= block.timestamp; } struct BlockNumber { uint64 _deadline; } function getDeadline(BlockNumber memory timer) internal pure returns (uint64) { return timer._deadline; } function setDeadline(BlockNumber storage timer, uint64 timestamp) internal { timer._deadline = timestamp; } function reset(BlockNumber storage timer) internal { timer._deadline = 0; } function isUnset(BlockNumber memory timer) internal pure returns (bool) { return timer._deadline == 0; } function isStarted(BlockNumber memory timer) internal pure returns (bool) { return timer._deadline > 0; } function isPending(BlockNumber memory timer) internal view returns (bool) { return timer._deadline > block.number; } function isExpired(BlockNumber memory timer) internal view returns (bool) { return isStarted(timer) && timer._deadline <= block.number; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint64","name":"deadline_","type":"uint64"},{"internalType":"address","name":"userCollectAddress_","type":"address"},{"internalType":"address","name":"teamCollectAddress_","type":"address"},{"internalType":"address","name":"investorCollectAddress_","type":"address"},{"internalType":"address","name":"bidderCollectAddress_","type":"address"},{"internalType":"uint256","name":"releaseAmount_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bidderCollectAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bidderShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"investorCollectAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"investorShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"minter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"releaseAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"releaseTime","outputs":[{"internalType":"uint64","name":"_deadline","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter_","type":"address"}],"name":"removeMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"bidderCollectAddress_","type":"address"}],"name":"setBidderCollectAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"bidderShare_","type":"uint256"}],"name":"setBidderShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"investorCollectAddress_","type":"address"}],"name":"setInvestorCollectAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"investorShare_","type":"uint256"}],"name":"setInvestorShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter_","type":"address"}],"name":"setMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"deadline_","type":"uint64"}],"name":"setReleaseTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"teamCollectAddress_","type":"address"}],"name":"setTeamCollectAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"teamShare_","type":"uint256"}],"name":"setTeamShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"userCollectAddress_","type":"address"}],"name":"setUserCollectAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"userShare_","type":"uint256"}],"name":"setUserShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamCollectAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"userCollectAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"userShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060405162003f8938038062003f898339818101604052810190620000379190620004b4565b878781600390805190602001906200005192919062000341565b5080600490805190602001906200006a92919062000341565b5050506200008d620000816200020c60201b60201c565b6200021460201b60201c565b6000600560146101000a81548160ff021916908315150217905550620000c3866011620002da60201b62001e301790919060201c565b84600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005600c819055506001600d819055506003600e819055506001600f81905550620001f76200030960201b60201c565b8060108190555050505050505050506200086b565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b808260000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b600f54600e54600d54600c546200032191906200061a565b6200032d91906200061a565b6200033991906200061a565b600b81905550565b8280546200034f90620006ff565b90600052602060002090601f016020900481019282620003735760008555620003bf565b82601f106200038e57805160ff1916838001178555620003bf565b82800160010185558215620003bf579182015b82811115620003be578251825591602001919060010190620003a1565b5b509050620003ce9190620003d2565b5090565b5b80821115620003ed576000816000905550600101620003d3565b5090565b6000620004086200040284620005e4565b620005bb565b905082815260208101848484011115620004275762000426620007fd565b5b62000434848285620006c9565b509392505050565b6000815190506200044d816200081d565b92915050565b600082601f8301126200046b576200046a620007f8565b5b81516200047d848260208601620003f1565b91505092915050565b600081519050620004978162000837565b92915050565b600081519050620004ae8162000851565b92915050565b600080600080600080600080610100898b031215620004d857620004d762000807565b5b600089015167ffffffffffffffff811115620004f957620004f862000802565b5b620005078b828c0162000453565b985050602089015167ffffffffffffffff8111156200052b576200052a62000802565b5b620005398b828c0162000453565b97505060406200054c8b828c016200049d565b96505060606200055f8b828c016200043c565b9550506080620005728b828c016200043c565b94505060a0620005858b828c016200043c565b93505060c0620005988b828c016200043c565b92505060e0620005ab8b828c0162000486565b9150509295985092959890939650565b6000620005c7620005da565b9050620005d5828262000735565b919050565b6000604051905090565b600067ffffffffffffffff821115620006025762000601620007c9565b5b6200060d826200080c565b9050602081019050919050565b60006200062782620006ab565b91506200063483620006ab565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200066c576200066b6200076b565b5b828201905092915050565b600062000684826200068b565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b60005b83811015620006e9578082015181840152602081019050620006cc565b83811115620006f9576000848401525b50505050565b600060028204905060018216806200071857607f821691505b602082108114156200072f576200072e6200079a565b5b50919050565b62000740826200080c565b810181811067ffffffffffffffff82111715620007625762000761620007c9565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b620008288162000677565b81146200083457600080fd5b50565b6200084281620006ab565b81146200084e57600080fd5b50565b6200085c81620006b5565b81146200086857600080fd5b50565b61370e806200087b6000396000f3fe608060405234801561001057600080fd5b50600436106102695760003560e01c8063715018a611610151578063ae97ca2a116100c3578063d279d37311610087578063d279d373146106f0578063dd62ed3e1461070c578063ea6ef2fe1461073c578063ec98f71e1461075a578063f2fde38b14610778578063fca3b5aa1461079457610269565b8063ae97ca2a1461065c578063b91d40011461067a578063c062dc5f14610698578063c1cf0507146106b6578063c5695f9a146106d457610269565b80638da5cb5b116101155780638da5cb5b1461058657806395d89b41146105a4578063a062e276146105c2578063a457c2d7146105de578063a4e78bef1461060e578063a9059cbb1461062c57610269565b8063715018a61461051c57806371d73b7b1461052657806379cc6790146105445780637b41b741146105605780638456cb591461057c57610269565b80633092afd5116101ea5780633f4ba83a116101ae5780633f4ba83a1461047057806342966c681461047a5780634f05dc41146104965780635c975abb146104b257806364dd4fc3146104d057806370a08231146104ec57610269565b80633092afd5146103b8578063313ce567146103d457806339509351146103f25780633bfeb3ce146104225780633dd08c381461044057610269565b80631249c58b116102315780631249c58b1461031457806318160ddd146103325780632032912e1461035057806323b872dd1461036c57806325e60b3a1461039c57610269565b8063026c42071461026e57806306fdde031461028c578063073f9a57146102aa578063095ea7b3146102c65780630fe5c236146102f6575b600080fd5b6102766107b0565b6040516102839190612f48565b60405180910390f35b6102946107b6565b6040516102a19190612d26565b60405180910390f35b6102c460048036038101906102bf91906128e2565b610848565b005b6102e060048036038101906102db91906129a2565b610908565b6040516102ed9190612d0b565b60405180910390f35b6102fe610926565b60405161030b9190612f48565b60405180910390f35b61031c61092c565b6040516103299190612d0b565b60405180910390f35b61033a610bdc565b6040516103479190612f48565b60405180910390f35b61036a600480360381019061036591906128e2565b610be6565b005b6103866004803603810190610381919061294f565b610ca6565b6040516103939190612d0b565b60405180910390f35b6103b660048036038101906103b191906129e2565b610d9e565b005b6103d260048036038101906103cd91906128e2565b610eb2565b005b6103dc610f89565b6040516103e99190612f7e565b60405180910390f35b61040c600480360381019061040791906129a2565b610f92565b6040516104199190612d0b565b60405180910390f35b61042a61103e565b6040516104379190612cf0565b60405180910390f35b61045a600480360381019061045591906128e2565b611064565b6040516104679190612d0b565b60405180910390f35b610478611084565b005b610494600480360381019061048f91906129e2565b61110a565b005b6104b060048036038101906104ab91906129e2565b611166565b005b6104ba61127a565b6040516104c79190612d0b565b60405180910390f35b6104ea60048036038101906104e591906129e2565b611291565b005b610506600480360381019061050191906128e2565b6113a5565b6040516105139190612f48565b60405180910390f35b6105246113ed565b005b61052e611475565b60405161053b9190612cf0565b60405180910390f35b61055e600480360381019061055991906129a2565b61149b565b005b61057a600480360381019061057591906128e2565b61155e565b005b61058461161e565b005b61058e6116a4565b60405161059b9190612cf0565b60405180910390f35b6105ac6116ce565b6040516105b99190612d26565b60405180910390f35b6105dc60048036038101906105d791906129e2565b611760565b005b6105f860048036038101906105f391906129a2565b611874565b6040516106059190612d0b565b60405180910390f35b61061661195f565b6040516106239190612cf0565b60405180910390f35b610646600480360381019061064191906129a2565b611985565b6040516106539190612d0b565b60405180910390f35b6106646119a3565b6040516106719190612cf0565b60405180910390f35b6106826119c9565b60405161068f9190612f63565b60405180910390f35b6106a06119e9565b6040516106ad9190612f48565b60405180910390f35b6106be6119ef565b6040516106cb9190612f48565b60405180910390f35b6106ee60048036038101906106e99190612a0f565b6119f5565b005b61070a600480360381019061070591906128e2565b611b0e565b005b6107266004803603810190610721919061290f565b611bce565b6040516107339190612f48565b60405180910390f35b610744611c55565b6040516107519190612f48565b60405180910390f35b610762611c5b565b60405161076f9190612f48565b60405180910390f35b610792600480360381019061078d91906128e2565b611c61565b005b6107ae60048036038101906107a991906128e2565b611d59565b005b600b5481565b6060600380546107c590613166565b80601f01602080910402602001604051908101604052809291908181526020018280546107f190613166565b801561083e5780601f106108135761010080835404028352916020019161083e565b820191906000526020600020905b81548152906001019060200180831161082157829003601f168201915b5050505050905090565b610850611e5f565b73ffffffffffffffffffffffffffffffffffffffff1661086e6116a4565b73ffffffffffffffffffffffffffffffffffffffff16146108c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108bb90612e68565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061091c610915611e5f565b8484611e67565b6001905092915050565b600e5481565b60006006600061093a611e5f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615806109d157506109d060116040518060200160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050612032565b5b806109e057506109df61127a565b5b806109ee57506000600b5411155b156109fc5760009050610bd9565b6000610a43600b54610a35600c54610a27670de0b6b3a764000060105461205e90919063ffffffff16565b61205e90919063ffffffff16565b61207490919063ffffffff16565b90506000610a8c600b54610a7e600d54610a70670de0b6b3a764000060105461205e90919063ffffffff16565b61205e90919063ffffffff16565b61207490919063ffffffff16565b90506000610ad5600b54610ac7600e54610ab9670de0b6b3a764000060105461205e90919063ffffffff16565b61205e90919063ffffffff16565b61207490919063ffffffff16565b90506000610b1e600b54610b10600f54610b02670de0b6b3a764000060105461205e90919063ffffffff16565b61205e90919063ffffffff16565b61207490919063ffffffff16565b9050610b4c600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168561208a565b610b78600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461208a565b610ba4600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361208a565b610bd0600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261208a565b60019450505050505b90565b6000600254905090565b610bee611e5f565b73ffffffffffffffffffffffffffffffffffffffff16610c0c6116a4565b73ffffffffffffffffffffffffffffffffffffffff1614610c62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5990612e68565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000610cb38484846121ea565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610cfe611e5f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610d7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7590612e48565b60405180910390fd5b610d9285610d8a611e5f565b858403611e67565b60019150509392505050565b610de560116040518060200160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050612032565b610e24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1b90612e28565b60405180910390fd5b610e2c611e5f565b73ffffffffffffffffffffffffffffffffffffffff16610e4a6116a4565b73ffffffffffffffffffffffffffffffffffffffff1614610ea0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9790612e68565b60405180910390fd5b80600c81905550610eaf61246b565b50565b610eba611e5f565b73ffffffffffffffffffffffffffffffffffffffff16610ed86116a4565b73ffffffffffffffffffffffffffffffffffffffff1614610f2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2590612e68565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006012905090565b6000611034610f9f611e5f565b848460016000610fad611e5f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461102f9190612fb5565b611e67565b6001905092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60066020528060005260406000206000915054906101000a900460ff1681565b61108c611e5f565b73ffffffffffffffffffffffffffffffffffffffff166110aa6116a4565b73ffffffffffffffffffffffffffffffffffffffff1614611100576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f790612e68565b60405180910390fd5b61110861249d565b565b61111261127a565b15611152576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114990612e08565b60405180910390fd5b61116361115d611e5f565b8261253f565b50565b6111ad60116040518060200160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050612032565b6111ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e390612e28565b60405180910390fd5b6111f4611e5f565b73ffffffffffffffffffffffffffffffffffffffff166112126116a4565b73ffffffffffffffffffffffffffffffffffffffff1614611268576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125f90612e68565b60405180910390fd5b80600f8190555061127761246b565b50565b6000600560149054906101000a900460ff16905090565b6112d860116040518060200160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050612032565b611317576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130e90612e28565b60405180910390fd5b61131f611e5f565b73ffffffffffffffffffffffffffffffffffffffff1661133d6116a4565b73ffffffffffffffffffffffffffffffffffffffff1614611393576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138a90612e68565b60405180910390fd5b80600e819055506113a261246b565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113f5611e5f565b73ffffffffffffffffffffffffffffffffffffffff166114136116a4565b73ffffffffffffffffffffffffffffffffffffffff1614611469576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146090612e68565b60405180910390fd5b6114736000612716565b565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6114a361127a565b156114e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114da90612e08565b60405180910390fd5b60006114f6836114f1611e5f565b611bce565b90508181101561153b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153290612e88565b60405180910390fd5b61154f83611547611e5f565b848403611e67565b611559838361253f565b505050565b611566611e5f565b73ffffffffffffffffffffffffffffffffffffffff166115846116a4565b73ffffffffffffffffffffffffffffffffffffffff16146115da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d190612e68565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611626611e5f565b73ffffffffffffffffffffffffffffffffffffffff166116446116a4565b73ffffffffffffffffffffffffffffffffffffffff161461169a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169190612e68565b60405180910390fd5b6116a26127dc565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546116dd90613166565b80601f016020809104026020016040519081016040528092919081815260200182805461170990613166565b80156117565780601f1061172b57610100808354040283529160200191611756565b820191906000526020600020905b81548152906001019060200180831161173957829003601f168201915b5050505050905090565b6117a760116040518060200160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050612032565b6117e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117dd90612e28565b60405180910390fd5b6117ee611e5f565b73ffffffffffffffffffffffffffffffffffffffff1661180c6116a4565b73ffffffffffffffffffffffffffffffffffffffff1614611862576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185990612e68565b60405180910390fd5b80600d8190555061187161246b565b50565b60008060016000611883611e5f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611940576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193790612f08565b60405180910390fd5b61195461194b611e5f565b85858403611e67565b600191505092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611999611992611e5f565b84846121ea565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60118060000160009054906101000a900467ffffffffffffffff16905081565b60105481565b600f5481565b611a3c60116040518060200160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050612032565b611a7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7290612e28565b60405180910390fd5b611a83611e5f565b73ffffffffffffffffffffffffffffffffffffffff16611aa16116a4565b73ffffffffffffffffffffffffffffffffffffffff1614611af7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aee90612e68565b60405180910390fd5b611b0b816011611e3090919063ffffffff16565b50565b611b16611e5f565b73ffffffffffffffffffffffffffffffffffffffff16611b346116a4565b73ffffffffffffffffffffffffffffffffffffffff1614611b8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8190612e68565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600d5481565b600c5481565b611c69611e5f565b73ffffffffffffffffffffffffffffffffffffffff16611c876116a4565b73ffffffffffffffffffffffffffffffffffffffff1614611cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd490612e68565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611d4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4490612da8565b60405180910390fd5b611d5681612716565b50565b611d61611e5f565b73ffffffffffffffffffffffffffffffffffffffff16611d7f6116a4565b73ffffffffffffffffffffffffffffffffffffffff1614611dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcc90612e68565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b808260000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611ed7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ece90612ee8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3e90612dc8565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120259190612f48565b60405180910390a3505050565b600061203d8261287f565b8015612057575042826000015167ffffffffffffffff1611155b9050919050565b6000818361206c919061303c565b905092915050565b60008183612082919061300b565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f190612f28565b60405180910390fd5b61210660008383612899565b80600260008282546121189190612fb5565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461216d9190612fb5565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516121d29190612f48565b60405180910390a36121e66000838361289e565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561225a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225190612ec8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c190612d48565b60405180910390fd5b6122d5838383612899565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561235b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235290612de8565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546123ee9190612fb5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516124529190612f48565b60405180910390a361246584848461289e565b50505050565b600f54600e54600d54600c546124819190612fb5565b61248b9190612fb5565b6124959190612fb5565b600b81905550565b6124a561127a565b6124e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124db90612d68565b60405180910390fd5b6000600560146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612528611e5f565b6040516125359190612cf0565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a690612ea8565b60405180910390fd5b6125bb82600083612899565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263890612d88565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282546126989190613096565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126fd9190612f48565b60405180910390a36127118360008461289e565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6127e461127a565b15612824576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281b90612e08565b60405180910390fd5b6001600560146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612868611e5f565b6040516128759190612cf0565b60405180910390a1565b600080826000015167ffffffffffffffff16119050919050565b505050565b505050565b6000813590506128b281613693565b92915050565b6000813590506128c7816136aa565b92915050565b6000813590506128dc816136c1565b92915050565b6000602082840312156128f8576128f7613225565b5b6000612906848285016128a3565b91505092915050565b6000806040838503121561292657612925613225565b5b6000612934858286016128a3565b9250506020612945858286016128a3565b9150509250929050565b60008060006060848603121561296857612967613225565b5b6000612976868287016128a3565b9350506020612987868287016128a3565b9250506040612998868287016128b8565b9150509250925092565b600080604083850312156129b9576129b8613225565b5b60006129c7858286016128a3565b92505060206129d8858286016128b8565b9150509250929050565b6000602082840312156129f8576129f7613225565b5b6000612a06848285016128b8565b91505092915050565b600060208284031215612a2557612a24613225565b5b6000612a33848285016128cd565b91505092915050565b612a45816130ca565b82525050565b612a54816130dc565b82525050565b6000612a6582612f99565b612a6f8185612fa4565b9350612a7f818560208601613133565b612a888161322a565b840191505092915050565b6000612aa0602383612fa4565b9150612aab8261323b565b604082019050919050565b6000612ac3601483612fa4565b9150612ace8261328a565b602082019050919050565b6000612ae6602283612fa4565b9150612af1826132b3565b604082019050919050565b6000612b09602683612fa4565b9150612b1482613302565b604082019050919050565b6000612b2c602283612fa4565b9150612b3782613351565b604082019050919050565b6000612b4f602683612fa4565b9150612b5a826133a0565b604082019050919050565b6000612b72601083612fa4565b9150612b7d826133ef565b602082019050919050565b6000612b95602383612fa4565b9150612ba082613418565b604082019050919050565b6000612bb8602883612fa4565b9150612bc382613467565b604082019050919050565b6000612bdb602083612fa4565b9150612be6826134b6565b602082019050919050565b6000612bfe602483612fa4565b9150612c09826134df565b604082019050919050565b6000612c21602183612fa4565b9150612c2c8261352e565b604082019050919050565b6000612c44602583612fa4565b9150612c4f8261357d565b604082019050919050565b6000612c67602483612fa4565b9150612c72826135cc565b604082019050919050565b6000612c8a602583612fa4565b9150612c958261361b565b604082019050919050565b6000612cad601f83612fa4565b9150612cb88261366a565b602082019050919050565b612ccc81613108565b82525050565b612cdb81613112565b82525050565b612cea81613126565b82525050565b6000602082019050612d056000830184612a3c565b92915050565b6000602082019050612d206000830184612a4b565b92915050565b60006020820190508181036000830152612d408184612a5a565b905092915050565b60006020820190508181036000830152612d6181612a93565b9050919050565b60006020820190508181036000830152612d8181612ab6565b9050919050565b60006020820190508181036000830152612da181612ad9565b9050919050565b60006020820190508181036000830152612dc181612afc565b9050919050565b60006020820190508181036000830152612de181612b1f565b9050919050565b60006020820190508181036000830152612e0181612b42565b9050919050565b60006020820190508181036000830152612e2181612b65565b9050919050565b60006020820190508181036000830152612e4181612b88565b9050919050565b60006020820190508181036000830152612e6181612bab565b9050919050565b60006020820190508181036000830152612e8181612bce565b9050919050565b60006020820190508181036000830152612ea181612bf1565b9050919050565b60006020820190508181036000830152612ec181612c14565b9050919050565b60006020820190508181036000830152612ee181612c37565b9050919050565b60006020820190508181036000830152612f0181612c5a565b9050919050565b60006020820190508181036000830152612f2181612c7d565b9050919050565b60006020820190508181036000830152612f4181612ca0565b9050919050565b6000602082019050612f5d6000830184612cc3565b92915050565b6000602082019050612f786000830184612cd2565b92915050565b6000602082019050612f936000830184612ce1565b92915050565b600081519050919050565b600082825260208201905092915050565b6000612fc082613108565b9150612fcb83613108565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561300057612fff613198565b5b828201905092915050565b600061301682613108565b915061302183613108565b925082613031576130306131c7565b5b828204905092915050565b600061304782613108565b915061305283613108565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561308b5761308a613198565b5b828202905092915050565b60006130a182613108565b91506130ac83613108565b9250828210156130bf576130be613198565b5b828203905092915050565b60006130d5826130e8565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b60005b83811015613151578082015181840152602081019050613136565b83811115613160576000848401525b50505050565b6000600282049050600182168061317e57607f821691505b60208210811415613192576131916131f6565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b7f746f6b656e2072656c656173696e672c207065726d697373696f6e2064656e6960008201527f65642e0000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f7760008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b61369c816130ca565b81146136a757600080fd5b50565b6136b381613108565b81146136be57600080fd5b50565b6136ca81613112565b81146136d557600080fd5b5056fea2646970667358221220fa7bed262809ee11943b76c6ad4393ceacf64900f555332956e4772c2d413d3b64736f6c634300080700330000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000676ada80000000000000000000000000eb4ccd588ee3c4c39d101ba0c7702a984148566600000000000000000000000075747b05867be1d3fcb67c54ef5a3783f03a0fd30000000000000000000000003cf704830fda42a29e140d52b3f04151e6c3c238000000000000000000000000ce54e09f62acaa6ab6d74c44d20e6f780a6d91d0000000000000000000000000000000000000000000000000000000000000009600000000000000000000000000000000000000000000000000000000000000034b4559000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034b45590000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102695760003560e01c8063715018a611610151578063ae97ca2a116100c3578063d279d37311610087578063d279d373146106f0578063dd62ed3e1461070c578063ea6ef2fe1461073c578063ec98f71e1461075a578063f2fde38b14610778578063fca3b5aa1461079457610269565b8063ae97ca2a1461065c578063b91d40011461067a578063c062dc5f14610698578063c1cf0507146106b6578063c5695f9a146106d457610269565b80638da5cb5b116101155780638da5cb5b1461058657806395d89b41146105a4578063a062e276146105c2578063a457c2d7146105de578063a4e78bef1461060e578063a9059cbb1461062c57610269565b8063715018a61461051c57806371d73b7b1461052657806379cc6790146105445780637b41b741146105605780638456cb591461057c57610269565b80633092afd5116101ea5780633f4ba83a116101ae5780633f4ba83a1461047057806342966c681461047a5780634f05dc41146104965780635c975abb146104b257806364dd4fc3146104d057806370a08231146104ec57610269565b80633092afd5146103b8578063313ce567146103d457806339509351146103f25780633bfeb3ce146104225780633dd08c381461044057610269565b80631249c58b116102315780631249c58b1461031457806318160ddd146103325780632032912e1461035057806323b872dd1461036c57806325e60b3a1461039c57610269565b8063026c42071461026e57806306fdde031461028c578063073f9a57146102aa578063095ea7b3146102c65780630fe5c236146102f6575b600080fd5b6102766107b0565b6040516102839190612f48565b60405180910390f35b6102946107b6565b6040516102a19190612d26565b60405180910390f35b6102c460048036038101906102bf91906128e2565b610848565b005b6102e060048036038101906102db91906129a2565b610908565b6040516102ed9190612d0b565b60405180910390f35b6102fe610926565b60405161030b9190612f48565b60405180910390f35b61031c61092c565b6040516103299190612d0b565b60405180910390f35b61033a610bdc565b6040516103479190612f48565b60405180910390f35b61036a600480360381019061036591906128e2565b610be6565b005b6103866004803603810190610381919061294f565b610ca6565b6040516103939190612d0b565b60405180910390f35b6103b660048036038101906103b191906129e2565b610d9e565b005b6103d260048036038101906103cd91906128e2565b610eb2565b005b6103dc610f89565b6040516103e99190612f7e565b60405180910390f35b61040c600480360381019061040791906129a2565b610f92565b6040516104199190612d0b565b60405180910390f35b61042a61103e565b6040516104379190612cf0565b60405180910390f35b61045a600480360381019061045591906128e2565b611064565b6040516104679190612d0b565b60405180910390f35b610478611084565b005b610494600480360381019061048f91906129e2565b61110a565b005b6104b060048036038101906104ab91906129e2565b611166565b005b6104ba61127a565b6040516104c79190612d0b565b60405180910390f35b6104ea60048036038101906104e591906129e2565b611291565b005b610506600480360381019061050191906128e2565b6113a5565b6040516105139190612f48565b60405180910390f35b6105246113ed565b005b61052e611475565b60405161053b9190612cf0565b60405180910390f35b61055e600480360381019061055991906129a2565b61149b565b005b61057a600480360381019061057591906128e2565b61155e565b005b61058461161e565b005b61058e6116a4565b60405161059b9190612cf0565b60405180910390f35b6105ac6116ce565b6040516105b99190612d26565b60405180910390f35b6105dc60048036038101906105d791906129e2565b611760565b005b6105f860048036038101906105f391906129a2565b611874565b6040516106059190612d0b565b60405180910390f35b61061661195f565b6040516106239190612cf0565b60405180910390f35b610646600480360381019061064191906129a2565b611985565b6040516106539190612d0b565b60405180910390f35b6106646119a3565b6040516106719190612cf0565b60405180910390f35b6106826119c9565b60405161068f9190612f63565b60405180910390f35b6106a06119e9565b6040516106ad9190612f48565b60405180910390f35b6106be6119ef565b6040516106cb9190612f48565b60405180910390f35b6106ee60048036038101906106e99190612a0f565b6119f5565b005b61070a600480360381019061070591906128e2565b611b0e565b005b6107266004803603810190610721919061290f565b611bce565b6040516107339190612f48565b60405180910390f35b610744611c55565b6040516107519190612f48565b60405180910390f35b610762611c5b565b60405161076f9190612f48565b60405180910390f35b610792600480360381019061078d91906128e2565b611c61565b005b6107ae60048036038101906107a991906128e2565b611d59565b005b600b5481565b6060600380546107c590613166565b80601f01602080910402602001604051908101604052809291908181526020018280546107f190613166565b801561083e5780601f106108135761010080835404028352916020019161083e565b820191906000526020600020905b81548152906001019060200180831161082157829003601f168201915b5050505050905090565b610850611e5f565b73ffffffffffffffffffffffffffffffffffffffff1661086e6116a4565b73ffffffffffffffffffffffffffffffffffffffff16146108c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108bb90612e68565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061091c610915611e5f565b8484611e67565b6001905092915050565b600e5481565b60006006600061093a611e5f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615806109d157506109d060116040518060200160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050612032565b5b806109e057506109df61127a565b5b806109ee57506000600b5411155b156109fc5760009050610bd9565b6000610a43600b54610a35600c54610a27670de0b6b3a764000060105461205e90919063ffffffff16565b61205e90919063ffffffff16565b61207490919063ffffffff16565b90506000610a8c600b54610a7e600d54610a70670de0b6b3a764000060105461205e90919063ffffffff16565b61205e90919063ffffffff16565b61207490919063ffffffff16565b90506000610ad5600b54610ac7600e54610ab9670de0b6b3a764000060105461205e90919063ffffffff16565b61205e90919063ffffffff16565b61207490919063ffffffff16565b90506000610b1e600b54610b10600f54610b02670de0b6b3a764000060105461205e90919063ffffffff16565b61205e90919063ffffffff16565b61207490919063ffffffff16565b9050610b4c600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168561208a565b610b78600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461208a565b610ba4600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361208a565b610bd0600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261208a565b60019450505050505b90565b6000600254905090565b610bee611e5f565b73ffffffffffffffffffffffffffffffffffffffff16610c0c6116a4565b73ffffffffffffffffffffffffffffffffffffffff1614610c62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5990612e68565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000610cb38484846121ea565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610cfe611e5f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610d7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7590612e48565b60405180910390fd5b610d9285610d8a611e5f565b858403611e67565b60019150509392505050565b610de560116040518060200160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050612032565b610e24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1b90612e28565b60405180910390fd5b610e2c611e5f565b73ffffffffffffffffffffffffffffffffffffffff16610e4a6116a4565b73ffffffffffffffffffffffffffffffffffffffff1614610ea0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9790612e68565b60405180910390fd5b80600c81905550610eaf61246b565b50565b610eba611e5f565b73ffffffffffffffffffffffffffffffffffffffff16610ed86116a4565b73ffffffffffffffffffffffffffffffffffffffff1614610f2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2590612e68565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006012905090565b6000611034610f9f611e5f565b848460016000610fad611e5f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461102f9190612fb5565b611e67565b6001905092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60066020528060005260406000206000915054906101000a900460ff1681565b61108c611e5f565b73ffffffffffffffffffffffffffffffffffffffff166110aa6116a4565b73ffffffffffffffffffffffffffffffffffffffff1614611100576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f790612e68565b60405180910390fd5b61110861249d565b565b61111261127a565b15611152576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114990612e08565b60405180910390fd5b61116361115d611e5f565b8261253f565b50565b6111ad60116040518060200160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050612032565b6111ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e390612e28565b60405180910390fd5b6111f4611e5f565b73ffffffffffffffffffffffffffffffffffffffff166112126116a4565b73ffffffffffffffffffffffffffffffffffffffff1614611268576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125f90612e68565b60405180910390fd5b80600f8190555061127761246b565b50565b6000600560149054906101000a900460ff16905090565b6112d860116040518060200160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050612032565b611317576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130e90612e28565b60405180910390fd5b61131f611e5f565b73ffffffffffffffffffffffffffffffffffffffff1661133d6116a4565b73ffffffffffffffffffffffffffffffffffffffff1614611393576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138a90612e68565b60405180910390fd5b80600e819055506113a261246b565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113f5611e5f565b73ffffffffffffffffffffffffffffffffffffffff166114136116a4565b73ffffffffffffffffffffffffffffffffffffffff1614611469576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146090612e68565b60405180910390fd5b6114736000612716565b565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6114a361127a565b156114e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114da90612e08565b60405180910390fd5b60006114f6836114f1611e5f565b611bce565b90508181101561153b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153290612e88565b60405180910390fd5b61154f83611547611e5f565b848403611e67565b611559838361253f565b505050565b611566611e5f565b73ffffffffffffffffffffffffffffffffffffffff166115846116a4565b73ffffffffffffffffffffffffffffffffffffffff16146115da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d190612e68565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611626611e5f565b73ffffffffffffffffffffffffffffffffffffffff166116446116a4565b73ffffffffffffffffffffffffffffffffffffffff161461169a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169190612e68565b60405180910390fd5b6116a26127dc565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546116dd90613166565b80601f016020809104026020016040519081016040528092919081815260200182805461170990613166565b80156117565780601f1061172b57610100808354040283529160200191611756565b820191906000526020600020905b81548152906001019060200180831161173957829003601f168201915b5050505050905090565b6117a760116040518060200160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050612032565b6117e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117dd90612e28565b60405180910390fd5b6117ee611e5f565b73ffffffffffffffffffffffffffffffffffffffff1661180c6116a4565b73ffffffffffffffffffffffffffffffffffffffff1614611862576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185990612e68565b60405180910390fd5b80600d8190555061187161246b565b50565b60008060016000611883611e5f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611940576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193790612f08565b60405180910390fd5b61195461194b611e5f565b85858403611e67565b600191505092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611999611992611e5f565b84846121ea565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60118060000160009054906101000a900467ffffffffffffffff16905081565b60105481565b600f5481565b611a3c60116040518060200160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050612032565b611a7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7290612e28565b60405180910390fd5b611a83611e5f565b73ffffffffffffffffffffffffffffffffffffffff16611aa16116a4565b73ffffffffffffffffffffffffffffffffffffffff1614611af7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aee90612e68565b60405180910390fd5b611b0b816011611e3090919063ffffffff16565b50565b611b16611e5f565b73ffffffffffffffffffffffffffffffffffffffff16611b346116a4565b73ffffffffffffffffffffffffffffffffffffffff1614611b8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8190612e68565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600d5481565b600c5481565b611c69611e5f565b73ffffffffffffffffffffffffffffffffffffffff16611c876116a4565b73ffffffffffffffffffffffffffffffffffffffff1614611cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd490612e68565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611d4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4490612da8565b60405180910390fd5b611d5681612716565b50565b611d61611e5f565b73ffffffffffffffffffffffffffffffffffffffff16611d7f6116a4565b73ffffffffffffffffffffffffffffffffffffffff1614611dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcc90612e68565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b808260000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611ed7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ece90612ee8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3e90612dc8565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120259190612f48565b60405180910390a3505050565b600061203d8261287f565b8015612057575042826000015167ffffffffffffffff1611155b9050919050565b6000818361206c919061303c565b905092915050565b60008183612082919061300b565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f190612f28565b60405180910390fd5b61210660008383612899565b80600260008282546121189190612fb5565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461216d9190612fb5565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516121d29190612f48565b60405180910390a36121e66000838361289e565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561225a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225190612ec8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c190612d48565b60405180910390fd5b6122d5838383612899565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561235b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235290612de8565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546123ee9190612fb5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516124529190612f48565b60405180910390a361246584848461289e565b50505050565b600f54600e54600d54600c546124819190612fb5565b61248b9190612fb5565b6124959190612fb5565b600b81905550565b6124a561127a565b6124e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124db90612d68565b60405180910390fd5b6000600560146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612528611e5f565b6040516125359190612cf0565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a690612ea8565b60405180910390fd5b6125bb82600083612899565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263890612d88565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282546126989190613096565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126fd9190612f48565b60405180910390a36127118360008461289e565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6127e461127a565b15612824576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281b90612e08565b60405180910390fd5b6001600560146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612868611e5f565b6040516128759190612cf0565b60405180910390a1565b600080826000015167ffffffffffffffff16119050919050565b505050565b505050565b6000813590506128b281613693565b92915050565b6000813590506128c7816136aa565b92915050565b6000813590506128dc816136c1565b92915050565b6000602082840312156128f8576128f7613225565b5b6000612906848285016128a3565b91505092915050565b6000806040838503121561292657612925613225565b5b6000612934858286016128a3565b9250506020612945858286016128a3565b9150509250929050565b60008060006060848603121561296857612967613225565b5b6000612976868287016128a3565b9350506020612987868287016128a3565b9250506040612998868287016128b8565b9150509250925092565b600080604083850312156129b9576129b8613225565b5b60006129c7858286016128a3565b92505060206129d8858286016128b8565b9150509250929050565b6000602082840312156129f8576129f7613225565b5b6000612a06848285016128b8565b91505092915050565b600060208284031215612a2557612a24613225565b5b6000612a33848285016128cd565b91505092915050565b612a45816130ca565b82525050565b612a54816130dc565b82525050565b6000612a6582612f99565b612a6f8185612fa4565b9350612a7f818560208601613133565b612a888161322a565b840191505092915050565b6000612aa0602383612fa4565b9150612aab8261323b565b604082019050919050565b6000612ac3601483612fa4565b9150612ace8261328a565b602082019050919050565b6000612ae6602283612fa4565b9150612af1826132b3565b604082019050919050565b6000612b09602683612fa4565b9150612b1482613302565b604082019050919050565b6000612b2c602283612fa4565b9150612b3782613351565b604082019050919050565b6000612b4f602683612fa4565b9150612b5a826133a0565b604082019050919050565b6000612b72601083612fa4565b9150612b7d826133ef565b602082019050919050565b6000612b95602383612fa4565b9150612ba082613418565b604082019050919050565b6000612bb8602883612fa4565b9150612bc382613467565b604082019050919050565b6000612bdb602083612fa4565b9150612be6826134b6565b602082019050919050565b6000612bfe602483612fa4565b9150612c09826134df565b604082019050919050565b6000612c21602183612fa4565b9150612c2c8261352e565b604082019050919050565b6000612c44602583612fa4565b9150612c4f8261357d565b604082019050919050565b6000612c67602483612fa4565b9150612c72826135cc565b604082019050919050565b6000612c8a602583612fa4565b9150612c958261361b565b604082019050919050565b6000612cad601f83612fa4565b9150612cb88261366a565b602082019050919050565b612ccc81613108565b82525050565b612cdb81613112565b82525050565b612cea81613126565b82525050565b6000602082019050612d056000830184612a3c565b92915050565b6000602082019050612d206000830184612a4b565b92915050565b60006020820190508181036000830152612d408184612a5a565b905092915050565b60006020820190508181036000830152612d6181612a93565b9050919050565b60006020820190508181036000830152612d8181612ab6565b9050919050565b60006020820190508181036000830152612da181612ad9565b9050919050565b60006020820190508181036000830152612dc181612afc565b9050919050565b60006020820190508181036000830152612de181612b1f565b9050919050565b60006020820190508181036000830152612e0181612b42565b9050919050565b60006020820190508181036000830152612e2181612b65565b9050919050565b60006020820190508181036000830152612e4181612b88565b9050919050565b60006020820190508181036000830152612e6181612bab565b9050919050565b60006020820190508181036000830152612e8181612bce565b9050919050565b60006020820190508181036000830152612ea181612bf1565b9050919050565b60006020820190508181036000830152612ec181612c14565b9050919050565b60006020820190508181036000830152612ee181612c37565b9050919050565b60006020820190508181036000830152612f0181612c5a565b9050919050565b60006020820190508181036000830152612f2181612c7d565b9050919050565b60006020820190508181036000830152612f4181612ca0565b9050919050565b6000602082019050612f5d6000830184612cc3565b92915050565b6000602082019050612f786000830184612cd2565b92915050565b6000602082019050612f936000830184612ce1565b92915050565b600081519050919050565b600082825260208201905092915050565b6000612fc082613108565b9150612fcb83613108565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561300057612fff613198565b5b828201905092915050565b600061301682613108565b915061302183613108565b925082613031576130306131c7565b5b828204905092915050565b600061304782613108565b915061305283613108565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561308b5761308a613198565b5b828202905092915050565b60006130a182613108565b91506130ac83613108565b9250828210156130bf576130be613198565b5b828203905092915050565b60006130d5826130e8565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b60005b83811015613151578082015181840152602081019050613136565b83811115613160576000848401525b50505050565b6000600282049050600182168061317e57607f821691505b60208210811415613192576131916131f6565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b7f746f6b656e2072656c656173696e672c207065726d697373696f6e2064656e6960008201527f65642e0000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f7760008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b61369c816130ca565b81146136a757600080fd5b50565b6136b381613108565b81146136be57600080fd5b50565b6136ca81613112565b81146136d557600080fd5b5056fea2646970667358221220fa7bed262809ee11943b76c6ad4393ceacf64900f555332956e4772c2d413d3b64736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000676ada80000000000000000000000000eb4ccd588ee3c4c39d101ba0c7702a984148566600000000000000000000000075747b05867be1d3fcb67c54ef5a3783f03a0fd30000000000000000000000003cf704830fda42a29e140d52b3f04151e6c3c238000000000000000000000000ce54e09f62acaa6ab6d74c44d20e6f780a6d91d0000000000000000000000000000000000000000000000000000000000000009600000000000000000000000000000000000000000000000000000000000000034b4559000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034b45590000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : name_ (string): KEY
Arg [1] : symbol_ (string): KEY
Arg [2] : deadline_ (uint64): 1735056000
Arg [3] : userCollectAddress_ (address): 0xeb4ccD588eE3C4c39D101Ba0c7702a9841485666
Arg [4] : teamCollectAddress_ (address): 0x75747b05867BE1d3FCB67C54ef5A3783f03A0fD3
Arg [5] : investorCollectAddress_ (address): 0x3cf704830fdA42A29e140D52b3f04151e6C3c238
Arg [6] : bidderCollectAddress_ (address): 0xcE54e09f62acaa6ab6d74c44d20e6f780a6D91d0
Arg [7] : releaseAmount_ (uint256): 150
-----Encoded View---------------
12 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000140
Arg [2] : 00000000000000000000000000000000000000000000000000000000676ada80
Arg [3] : 000000000000000000000000eb4ccd588ee3c4c39d101ba0c7702a9841485666
Arg [4] : 00000000000000000000000075747b05867be1d3fcb67c54ef5a3783f03a0fd3
Arg [5] : 0000000000000000000000003cf704830fda42a29e140d52b3f04151e6c3c238
Arg [6] : 000000000000000000000000ce54e09f62acaa6ab6d74c44d20e6f780a6d91d0
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000096
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [9] : 4b45590000000000000000000000000000000000000000000000000000000000
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [11] : 4b45590000000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
177:4846:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;507:25;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2120:98:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3494:133:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4217:166:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;598:28:4;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1709:810;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3208:106:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3788:141:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4850:466:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2644:134:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4032:95;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3057:91:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5711:212;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;465:35:4;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;299:38;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4959:62;;;:::i;:::-;;4133:96;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3080:142;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1091:84:6;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2924:150:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3372:125:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1661:101:5;;;:::i;:::-;;422:37:4;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4535:354;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3633:149;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4895:58;;;:::i;:::-;;1029:85:5;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2331:102:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2784:134:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6410:393:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;383:33:4;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3700:172:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;344:33:4;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;700:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;665:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;632:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3228:121;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3355:133;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3930:149:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;568:24:4;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;538;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1911:198:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3935:91:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;507:25;;;;:::o;2120:98:1:-;2174:13;2206:5;2199:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2120:98;:::o;3494:133:4:-;1252:12:5;:10;:12::i;:::-;1241:23;;:7;:5;:7::i;:::-;:23;;;1233:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3601:19:4::1;3580:18;;:40;;;;;;;;;;;;;;;;;;3494:133:::0;:::o;4217:166:1:-;4300:4;4316:39;4325:12;:10;:12::i;:::-;4339:7;4348:6;4316:8;:39::i;:::-;4372:4;4365:11;;4217:166;;;;:::o;598:28:4:-;;;;:::o;1709:810::-;1740:4;1761:6;:20;1768:12;:10;:12::i;:::-;1761:20;;;;;;;;;;;;;;;;;;;;;;;;;1760:21;1759:50;;;;1786:23;:11;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23::i;:::-;1759:50;:62;;;;1813:8;:6;:8::i;:::-;1759:62;:81;;;;1839:1;1825:10;;:15;;1759:81;1755:123;;;1862:5;1855:12;;;;1755:123;1888:24;1915:57;1961:10;;1915:41;1946:9;;1915:26;1933:7;1915:13;;:17;;:26;;;;:::i;:::-;:30;;:41;;;;:::i;:::-;:45;;:57;;;;:::i;:::-;1888:84;;1982:24;2009:57;2055:10;;2009:41;2040:9;;2009:26;2027:7;2009:13;;:17;;:26;;;;:::i;:::-;:30;;:41;;;;:::i;:::-;:45;;:57;;;;:::i;:::-;1982:84;;2076:28;2107:61;2157:10;;2107:45;2138:13;;2107:26;2125:7;2107:13;;:17;;:26;;;;:::i;:::-;:30;;:45;;;;:::i;:::-;:49;;:61;;;;:::i;:::-;2076:92;;2178:26;2207:59;2255:10;;2207:43;2238:11;;2207:26;2225:7;2207:13;;:17;;:26;;;;:::i;:::-;:30;;:43;;;;:::i;:::-;:47;;:59;;;;:::i;:::-;2178:88;;2277:43;2283:18;;;;;;;;;;;2303:16;2277:5;:43::i;:::-;2330;2336:18;;;;;;;;;;;2356:16;2330:5;:43::i;:::-;2383:51;2389:22;;;;;;;;;;;2413:20;2383:5;:51::i;:::-;2444:47;2450:20;;;;;;;;;;;2472:18;2444:5;:47::i;:::-;2508:4;2501:11;;;;;;1709:810;;:::o;3208:106:1:-;3269:7;3295:12;;3288:19;;3208:106;:::o;3788:141:4:-;1252:12:5;:10;:12::i;:::-;1241:23;;:7;:5;:7::i;:::-;:23;;;1233:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3901:21:4::1;3878:20;;:44;;;;;;;;;;;;;;;;;;3788:141:::0;:::o;4850:466:1:-;4986:4;5002:36;5012:6;5020:9;5031:6;5002:9;:36::i;:::-;5049:24;5076:11;:19;5088:6;5076:19;;;;;;;;;;;;;;;:33;5096:12;:10;:12::i;:::-;5076:33;;;;;;;;;;;;;;;;5049:60;;5147:6;5127:16;:26;;5119:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5224:57;5233:6;5241:12;:10;:12::i;:::-;5274:6;5255:16;:25;5224:8;:57::i;:::-;5305:4;5298:11;;;4850:466;;;;;:::o;2644:134:4:-;1622:23;:11;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23::i;:::-;1614:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;1252:12:5::1;:10;:12::i;:::-;1241:23;;:7;:5;:7::i;:::-;:23;;;1233:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2736:10:4::2;2724:9;:22;;;;2756:15;:13;:15::i;:::-;2644:134:::0;:::o;4032:95::-;1252:12:5;:10;:12::i;:::-;1241:23;;:7;:5;:7::i;:::-;:23;;;1233:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4115:5:4::1;4097:6;:15;4104:7;4097:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;4032:95:::0;:::o;3057:91:1:-;3115:5;3139:2;3132:9;;3057:91;:::o;5711:212::-;5799:4;5815:80;5824:12;:10;:12::i;:::-;5838:7;5884:10;5847:11;:25;5859:12;:10;:12::i;:::-;5847:25;;;;;;;;;;;;;;;:34;5873:7;5847:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;5815:8;:80::i;:::-;5912:4;5905:11;;5711:212;;;;:::o;465:35:4:-;;;;;;;;;;;;;:::o;299:38::-;;;;;;;;;;;;;;;;;;;;;;:::o;4959:62::-;1252:12:5;:10;:12::i;:::-;1241:23;;:7;:5;:7::i;:::-;:23;;;1233:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5004:10:4::1;:8;:10::i;:::-;4959:62::o:0;4133:96::-;1405:8:6;:6;:8::i;:::-;1404:9;1396:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;4194:28:4::1;4200:12;:10;:12::i;:::-;4214:7;4194:5;:28::i;:::-;4133:96:::0;:::o;3080:142::-;1622:23;:11;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23::i;:::-;1614:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;1252:12:5::1;:10;:12::i;:::-;1241:23;;:7;:5;:7::i;:::-;:23;;;1233:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3178:12:4::2;3164:11;:26;;;;3200:15;:13;:15::i;:::-;3080:142:::0;:::o;1091:84:6:-;1138:4;1161:7;;;;;;;;;;;1154:14;;1091:84;:::o;2924:150:4:-;1622:23;:11;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23::i;:::-;1614:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;1252:12:5::1;:10;:12::i;:::-;1241:23;;:7;:5;:7::i;:::-;:23;;;1233:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3028:14:4::2;3012:13;:30;;;;3052:15;:13;:15::i;:::-;2924:150:::0;:::o;3372:125:1:-;3446:7;3472:9;:18;3482:7;3472:18;;;;;;;;;;;;;;;;3465:25;;3372:125;;;:::o;1661:101:5:-;1252:12;:10;:12::i;:::-;1241:23;;:7;:5;:7::i;:::-;:23;;;1233:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1725:30:::1;1752:1;1725:18;:30::i;:::-;1661:101::o:0;422:37:4:-;;;;;;;;;;;;;:::o;4535:354::-;1405:8:6;:6;:8::i;:::-;1404:9;1396:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;4616:24:4::1;4643:32;4653:7;4662:12;:10;:12::i;:::-;4643:9;:32::i;:::-;4616:59;;4713:6;4693:16;:26;;4685:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;4786:58;4795:7;4804:12;:10;:12::i;:::-;4837:6;4818:16;:25;4786:8;:58::i;:::-;4860:22;4866:7;4875:6;4860:5;:22::i;:::-;4606:283;4535:354:::0;;:::o;3633:149::-;1252:12:5;:10;:12::i;:::-;1241:23;;:7;:5;:7::i;:::-;:23;;;1233:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3752:23:4::1;3727:22;;:48;;;;;;;;;;;;;;;;;;3633:149:::0;:::o;4895:58::-;1252:12:5;:10;:12::i;:::-;1241:23;;:7;:5;:7::i;:::-;:23;;;1233:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4938:8:4::1;:6;:8::i;:::-;4895:58::o:0;1029:85:5:-;1075:7;1101:6;;;;;;;;;;;1094:13;;1029:85;:::o;2331:102:1:-;2387:13;2419:7;2412:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2331:102;:::o;2784:134:4:-;1622:23;:11;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23::i;:::-;1614:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;1252:12:5::1;:10;:12::i;:::-;1241:23;;:7;:5;:7::i;:::-;:23;;;1233:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2876:10:4::2;2864:9;:22;;;;2896:15;:13;:15::i;:::-;2784:134:::0;:::o;6410:393:1:-;6503:4;6519:24;6546:11;:25;6558:12;:10;:12::i;:::-;6546:25;;;;;;;;;;;;;;;:34;6572:7;6546:34;;;;;;;;;;;;;;;;6519:61;;6618:15;6598:16;:35;;6590:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6701:67;6710:12;:10;:12::i;:::-;6724:7;6752:15;6733:16;:34;6701:8;:67::i;:::-;6792:4;6785:11;;;6410:393;;;;:::o;383:33:4:-;;;;;;;;;;;;;:::o;3700:172:1:-;3786:4;3802:42;3812:12;:10;:12::i;:::-;3826:9;3837:6;3802:9;:42::i;:::-;3861:4;3854:11;;3700:172;;;;:::o;344:33:4:-;;;;;;;;;;;;;:::o;700:35::-;;;;;;;;;;;;;;;;;;:::o;665:28::-;;;;:::o;632:26::-;;;;:::o;3228:121::-;1622:23;:11;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23::i;:::-;1614:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;1252:12:5::1;:10;:12::i;:::-;1241:23;;:7;:5;:7::i;:::-;:23;;;1233:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3308:34:4::2;3332:9;3308:11;:23;;:34;;;;:::i;:::-;3228:121:::0;:::o;3355:133::-;1252:12:5;:10;:12::i;:::-;1241:23;;:7;:5;:7::i;:::-;:23;;;1233:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3462:19:4::1;3441:18;;:40;;;;;;;;;;;;;;;;;;3355:133:::0;:::o;3930:149:1:-;4019:7;4045:11;:18;4057:5;4045:18;;;;;;;;;;;;;;;:27;4064:7;4045:27;;;;;;;;;;;;;;;;4038:34;;3930:149;;;;:::o;568:24:4:-;;;;:::o;538:::-;;;;:::o;1911:198:5:-;1252:12;:10;:12::i;:::-;1241:23;;:7;:5;:7::i;:::-;:23;;;1233:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2019:1:::1;1999:22;;:8;:22;;;;1991:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2074:28;2093:8;2074:18;:28::i;:::-;1911:198:::0;:::o;3935:91:4:-;1252:12:5;:10;:12::i;:::-;1241:23;;:7;:5;:7::i;:::-;:23;;;1233:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4015:4:4::1;3997:6;:15;4004:7;3997:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;3935:91:::0;:::o;366:117:8:-;467:9;449:5;:15;;;:27;;;;;;;;;;;;;;;;;;366:117;;:::o;640:96:0:-;693:7;719:10;712:17;;640:96;:::o;9950:370:1:-;10098:1;10081:19;;:5;:19;;;;10073:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10178:1;10159:21;;:7;:21;;;;10151:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10260:6;10230:11;:18;10242:5;10230:18;;;;;;;;;;;;;;;:27;10249:7;10230:27;;;;;;;;;;;;;;;:36;;;;10297:7;10281:32;;10290:5;10281:32;;;10306:6;10281:32;;;;;;:::i;:::-;;;;;;;;9950:370;;;:::o;956:150:8:-;1022:4;1045:16;1055:5;1045:9;:16::i;:::-;:54;;;;;1084:15;1065:5;:15;;;:34;;;;1045:54;1038:61;;956:150;;;:::o;3347:96:7:-;3405:7;3435:1;3431;:5;;;;:::i;:::-;3424:12;;3347:96;;;;:::o;3732:::-;3790:7;3820:1;3816;:5;;;;:::i;:::-;3809:12;;3732:96;;;;:::o;8254:389:1:-;8356:1;8337:21;;:7;:21;;;;8329:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;8405:49;8434:1;8438:7;8447:6;8405:20;:49::i;:::-;8481:6;8465:12;;:22;;;;;;;:::i;:::-;;;;;;;;8519:6;8497:9;:18;8507:7;8497:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;8561:7;8540:37;;8557:1;8540:37;;;8570:6;8540:37;;;;;;:::i;:::-;;;;;;;;8588:48;8616:1;8620:7;8629:6;8588:19;:48::i;:::-;8254:389;;:::o;7277:701::-;7430:1;7412:20;;:6;:20;;;;7404:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7513:1;7492:23;;:9;:23;;;;7484:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7566:47;7587:6;7595:9;7606:6;7566:20;:47::i;:::-;7624:21;7648:9;:17;7658:6;7648:17;;;;;;;;;;;;;;;;7624:41;;7700:6;7683:13;:23;;7675:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;7811:6;7795:13;:22;7775:9;:17;7785:6;7775:17;;;;;;;;;;;;;;;:42;;;;7857:6;7833:9;:20;7843:9;7833:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;7896:9;7879:35;;7888:6;7879:35;;;7907:6;7879:35;;;;;;:::i;:::-;;;;;;;;7925:46;7945:6;7953:9;7964:6;7925:19;:46::i;:::-;7394:584;7277:701;;;:::o;2525:113:4:-;2620:11;;2605:13;;2593:9;;2581;;:21;;;;:::i;:::-;:37;;;;:::i;:::-;:50;;;;:::i;:::-;2568:10;:63;;;;2525:113::o;2103:117:6:-;1670:8;:6;:8::i;:::-;1662:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;2171:5:::1;2161:7;;:15;;;;;;;;;;;;;;;;;;2191:22;2200:12;:10;:12::i;:::-;2191:22;;;;;;:::i;:::-;;;;;;;;2103:117::o:0;8963:564:1:-;9065:1;9046:21;;:7;:21;;;;9038:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9116:49;9137:7;9154:1;9158:6;9116:20;:49::i;:::-;9176:22;9201:9;:18;9211:7;9201:18;;;;;;;;;;;;;;;;9176:43;;9255:6;9237:14;:24;;9229:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9364:6;9347:14;:23;9326:9;:18;9336:7;9326:18;;;;;;;;;;;;;;;:44;;;;9402:6;9386:12;;:22;;;;;;;:::i;:::-;;;;;;;;9450:1;9424:37;;9433:7;9424:37;;;9454:6;9424:37;;;;;;:::i;:::-;;;;;;;;9472:48;9492:7;9509:1;9513:6;9472:19;:48::i;:::-;9028:499;8963:564;;:::o;2263:187:5:-;2336:16;2355:6;;;;;;;;;;;2336:25;;2380:8;2371:6;;:17;;;;;;;;;;;;;;;;;;2434:8;2403:40;;2424:8;2403:40;;;;;;;;;;;;2326:124;2263:187;:::o;1856:115:6:-;1405:8;:6;:8::i;:::-;1404:9;1396:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;1925:4:::1;1915:7;;:14;;;;;;;;;;;;;;;;;;1944:20;1951:12;:10;:12::i;:::-;1944:20;;;;;;:::i;:::-;;;;;;;;1856:115::o:0;700::8:-;766:4;807:1;789:5;:15;;;:19;;;782:26;;700:115;;;:::o;10904:121:1:-;;;;:::o;11613:120::-;;;;:::o;7:139:9:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:::-;198:5;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;152:139;;;;:::o;297:137::-;342:5;380:6;367:20;358:29;;396:32;422:5;396:32;:::i;:::-;297:137;;;;:::o;440:329::-;499:6;548:2;536:9;527:7;523:23;519:32;516:119;;;554:79;;:::i;:::-;516:119;674:1;699:53;744:7;735:6;724:9;720:22;699:53;:::i;:::-;689:63;;645:117;440:329;;;;:::o;775:474::-;843:6;851;900:2;888:9;879:7;875:23;871:32;868:119;;;906:79;;:::i;:::-;868:119;1026:1;1051:53;1096:7;1087:6;1076:9;1072:22;1051:53;:::i;:::-;1041:63;;997:117;1153:2;1179:53;1224:7;1215:6;1204:9;1200:22;1179:53;:::i;:::-;1169:63;;1124:118;775:474;;;;;:::o;1255:619::-;1332:6;1340;1348;1397:2;1385:9;1376:7;1372:23;1368:32;1365:119;;;1403:79;;:::i;:::-;1365:119;1523:1;1548:53;1593:7;1584:6;1573:9;1569:22;1548:53;:::i;:::-;1538:63;;1494:117;1650:2;1676:53;1721:7;1712:6;1701:9;1697:22;1676:53;:::i;:::-;1666:63;;1621:118;1778:2;1804:53;1849:7;1840:6;1829:9;1825:22;1804:53;:::i;:::-;1794:63;;1749:118;1255:619;;;;;:::o;1880:474::-;1948:6;1956;2005:2;1993:9;1984:7;1980:23;1976:32;1973:119;;;2011:79;;:::i;:::-;1973:119;2131:1;2156:53;2201:7;2192:6;2181:9;2177:22;2156:53;:::i;:::-;2146:63;;2102:117;2258:2;2284:53;2329:7;2320:6;2309:9;2305:22;2284:53;:::i;:::-;2274:63;;2229:118;1880:474;;;;;:::o;2360:329::-;2419:6;2468:2;2456:9;2447:7;2443:23;2439:32;2436:119;;;2474:79;;:::i;:::-;2436:119;2594:1;2619:53;2664:7;2655:6;2644:9;2640:22;2619:53;:::i;:::-;2609:63;;2565:117;2360:329;;;;:::o;2695:327::-;2753:6;2802:2;2790:9;2781:7;2777:23;2773:32;2770:119;;;2808:79;;:::i;:::-;2770:119;2928:1;2953:52;2997:7;2988:6;2977:9;2973:22;2953:52;:::i;:::-;2943:62;;2899:116;2695:327;;;;:::o;3028:118::-;3115:24;3133:5;3115:24;:::i;:::-;3110:3;3103:37;3028:118;;:::o;3152:109::-;3233:21;3248:5;3233:21;:::i;:::-;3228:3;3221:34;3152:109;;:::o;3267:364::-;3355:3;3383:39;3416:5;3383:39;:::i;:::-;3438:71;3502:6;3497:3;3438:71;:::i;:::-;3431:78;;3518:52;3563:6;3558:3;3551:4;3544:5;3540:16;3518:52;:::i;:::-;3595:29;3617:6;3595:29;:::i;:::-;3590:3;3586:39;3579:46;;3359:272;3267:364;;;;:::o;3637:366::-;3779:3;3800:67;3864:2;3859:3;3800:67;:::i;:::-;3793:74;;3876:93;3965:3;3876:93;:::i;:::-;3994:2;3989:3;3985:12;3978:19;;3637:366;;;:::o;4009:::-;4151:3;4172:67;4236:2;4231:3;4172:67;:::i;:::-;4165:74;;4248:93;4337:3;4248:93;:::i;:::-;4366:2;4361:3;4357:12;4350:19;;4009:366;;;:::o;4381:::-;4523:3;4544:67;4608:2;4603:3;4544:67;:::i;:::-;4537:74;;4620:93;4709:3;4620:93;:::i;:::-;4738:2;4733:3;4729:12;4722:19;;4381:366;;;:::o;4753:::-;4895:3;4916:67;4980:2;4975:3;4916:67;:::i;:::-;4909:74;;4992:93;5081:3;4992:93;:::i;:::-;5110:2;5105:3;5101:12;5094:19;;4753:366;;;:::o;5125:::-;5267:3;5288:67;5352:2;5347:3;5288:67;:::i;:::-;5281:74;;5364:93;5453:3;5364:93;:::i;:::-;5482:2;5477:3;5473:12;5466:19;;5125:366;;;:::o;5497:::-;5639:3;5660:67;5724:2;5719:3;5660:67;:::i;:::-;5653:74;;5736:93;5825:3;5736:93;:::i;:::-;5854:2;5849:3;5845:12;5838:19;;5497:366;;;:::o;5869:::-;6011:3;6032:67;6096:2;6091:3;6032:67;:::i;:::-;6025:74;;6108:93;6197:3;6108:93;:::i;:::-;6226:2;6221:3;6217:12;6210:19;;5869:366;;;:::o;6241:::-;6383:3;6404:67;6468:2;6463:3;6404:67;:::i;:::-;6397:74;;6480:93;6569:3;6480:93;:::i;:::-;6598:2;6593:3;6589:12;6582:19;;6241:366;;;:::o;6613:::-;6755:3;6776:67;6840:2;6835:3;6776:67;:::i;:::-;6769:74;;6852:93;6941:3;6852:93;:::i;:::-;6970:2;6965:3;6961:12;6954:19;;6613:366;;;:::o;6985:::-;7127:3;7148:67;7212:2;7207:3;7148:67;:::i;:::-;7141:74;;7224:93;7313:3;7224:93;:::i;:::-;7342:2;7337:3;7333:12;7326:19;;6985:366;;;:::o;7357:::-;7499:3;7520:67;7584:2;7579:3;7520:67;:::i;:::-;7513:74;;7596:93;7685:3;7596:93;:::i;:::-;7714:2;7709:3;7705:12;7698:19;;7357:366;;;:::o;7729:::-;7871:3;7892:67;7956:2;7951:3;7892:67;:::i;:::-;7885:74;;7968:93;8057:3;7968:93;:::i;:::-;8086:2;8081:3;8077:12;8070:19;;7729:366;;;:::o;8101:::-;8243:3;8264:67;8328:2;8323:3;8264:67;:::i;:::-;8257:74;;8340:93;8429:3;8340:93;:::i;:::-;8458:2;8453:3;8449:12;8442:19;;8101:366;;;:::o;8473:::-;8615:3;8636:67;8700:2;8695:3;8636:67;:::i;:::-;8629:74;;8712:93;8801:3;8712:93;:::i;:::-;8830:2;8825:3;8821:12;8814:19;;8473:366;;;:::o;8845:::-;8987:3;9008:67;9072:2;9067:3;9008:67;:::i;:::-;9001:74;;9084:93;9173:3;9084:93;:::i;:::-;9202:2;9197:3;9193:12;9186:19;;8845:366;;;:::o;9217:::-;9359:3;9380:67;9444:2;9439:3;9380:67;:::i;:::-;9373:74;;9456:93;9545:3;9456:93;:::i;:::-;9574:2;9569:3;9565:12;9558:19;;9217:366;;;:::o;9589:118::-;9676:24;9694:5;9676:24;:::i;:::-;9671:3;9664:37;9589:118;;:::o;9713:115::-;9798:23;9815:5;9798:23;:::i;:::-;9793:3;9786:36;9713:115;;:::o;9834:112::-;9917:22;9933:5;9917:22;:::i;:::-;9912:3;9905:35;9834:112;;:::o;9952:222::-;10045:4;10083:2;10072:9;10068:18;10060:26;;10096:71;10164:1;10153:9;10149:17;10140:6;10096:71;:::i;:::-;9952:222;;;;:::o;10180:210::-;10267:4;10305:2;10294:9;10290:18;10282:26;;10318:65;10380:1;10369:9;10365:17;10356:6;10318:65;:::i;:::-;10180:210;;;;:::o;10396:313::-;10509:4;10547:2;10536:9;10532:18;10524:26;;10596:9;10590:4;10586:20;10582:1;10571:9;10567:17;10560:47;10624:78;10697:4;10688:6;10624:78;:::i;:::-;10616:86;;10396:313;;;;:::o;10715:419::-;10881:4;10919:2;10908:9;10904:18;10896:26;;10968:9;10962:4;10958:20;10954:1;10943:9;10939:17;10932:47;10996:131;11122:4;10996:131;:::i;:::-;10988:139;;10715:419;;;:::o;11140:::-;11306:4;11344:2;11333:9;11329:18;11321:26;;11393:9;11387:4;11383:20;11379:1;11368:9;11364:17;11357:47;11421:131;11547:4;11421:131;:::i;:::-;11413:139;;11140:419;;;:::o;11565:::-;11731:4;11769:2;11758:9;11754:18;11746:26;;11818:9;11812:4;11808:20;11804:1;11793:9;11789:17;11782:47;11846:131;11972:4;11846:131;:::i;:::-;11838:139;;11565:419;;;:::o;11990:::-;12156:4;12194:2;12183:9;12179:18;12171:26;;12243:9;12237:4;12233:20;12229:1;12218:9;12214:17;12207:47;12271:131;12397:4;12271:131;:::i;:::-;12263:139;;11990:419;;;:::o;12415:::-;12581:4;12619:2;12608:9;12604:18;12596:26;;12668:9;12662:4;12658:20;12654:1;12643:9;12639:17;12632:47;12696:131;12822:4;12696:131;:::i;:::-;12688:139;;12415:419;;;:::o;12840:::-;13006:4;13044:2;13033:9;13029:18;13021:26;;13093:9;13087:4;13083:20;13079:1;13068:9;13064:17;13057:47;13121:131;13247:4;13121:131;:::i;:::-;13113:139;;12840:419;;;:::o;13265:::-;13431:4;13469:2;13458:9;13454:18;13446:26;;13518:9;13512:4;13508:20;13504:1;13493:9;13489:17;13482:47;13546:131;13672:4;13546:131;:::i;:::-;13538:139;;13265:419;;;:::o;13690:::-;13856:4;13894:2;13883:9;13879:18;13871:26;;13943:9;13937:4;13933:20;13929:1;13918:9;13914:17;13907:47;13971:131;14097:4;13971:131;:::i;:::-;13963:139;;13690:419;;;:::o;14115:::-;14281:4;14319:2;14308:9;14304:18;14296:26;;14368:9;14362:4;14358:20;14354:1;14343:9;14339:17;14332:47;14396:131;14522:4;14396:131;:::i;:::-;14388:139;;14115:419;;;:::o;14540:::-;14706:4;14744:2;14733:9;14729:18;14721:26;;14793:9;14787:4;14783:20;14779:1;14768:9;14764:17;14757:47;14821:131;14947:4;14821:131;:::i;:::-;14813:139;;14540:419;;;:::o;14965:::-;15131:4;15169:2;15158:9;15154:18;15146:26;;15218:9;15212:4;15208:20;15204:1;15193:9;15189:17;15182:47;15246:131;15372:4;15246:131;:::i;:::-;15238:139;;14965:419;;;:::o;15390:::-;15556:4;15594:2;15583:9;15579:18;15571:26;;15643:9;15637:4;15633:20;15629:1;15618:9;15614:17;15607:47;15671:131;15797:4;15671:131;:::i;:::-;15663:139;;15390:419;;;:::o;15815:::-;15981:4;16019:2;16008:9;16004:18;15996:26;;16068:9;16062:4;16058:20;16054:1;16043:9;16039:17;16032:47;16096:131;16222:4;16096:131;:::i;:::-;16088:139;;15815:419;;;:::o;16240:::-;16406:4;16444:2;16433:9;16429:18;16421:26;;16493:9;16487:4;16483:20;16479:1;16468:9;16464:17;16457:47;16521:131;16647:4;16521:131;:::i;:::-;16513:139;;16240:419;;;:::o;16665:::-;16831:4;16869:2;16858:9;16854:18;16846:26;;16918:9;16912:4;16908:20;16904:1;16893:9;16889:17;16882:47;16946:131;17072:4;16946:131;:::i;:::-;16938:139;;16665:419;;;:::o;17090:::-;17256:4;17294:2;17283:9;17279:18;17271:26;;17343:9;17337:4;17333:20;17329:1;17318:9;17314:17;17307:47;17371:131;17497:4;17371:131;:::i;:::-;17363:139;;17090:419;;;:::o;17515:222::-;17608:4;17646:2;17635:9;17631:18;17623:26;;17659:71;17727:1;17716:9;17712:17;17703:6;17659:71;:::i;:::-;17515:222;;;;:::o;17743:218::-;17834:4;17872:2;17861:9;17857:18;17849:26;;17885:69;17951:1;17940:9;17936:17;17927:6;17885:69;:::i;:::-;17743:218;;;;:::o;17967:214::-;18056:4;18094:2;18083:9;18079:18;18071:26;;18107:67;18171:1;18160:9;18156:17;18147:6;18107:67;:::i;:::-;17967:214;;;;:::o;18268:99::-;18320:6;18354:5;18348:12;18338:22;;18268:99;;;:::o;18373:169::-;18457:11;18491:6;18486:3;18479:19;18531:4;18526:3;18522:14;18507:29;;18373:169;;;;:::o;18548:305::-;18588:3;18607:20;18625:1;18607:20;:::i;:::-;18602:25;;18641:20;18659:1;18641:20;:::i;:::-;18636:25;;18795:1;18727:66;18723:74;18720:1;18717:81;18714:107;;;18801:18;;:::i;:::-;18714:107;18845:1;18842;18838:9;18831:16;;18548:305;;;;:::o;18859:185::-;18899:1;18916:20;18934:1;18916:20;:::i;:::-;18911:25;;18950:20;18968:1;18950:20;:::i;:::-;18945:25;;18989:1;18979:35;;18994:18;;:::i;:::-;18979:35;19036:1;19033;19029:9;19024:14;;18859:185;;;;:::o;19050:348::-;19090:7;19113:20;19131:1;19113:20;:::i;:::-;19108:25;;19147:20;19165:1;19147:20;:::i;:::-;19142:25;;19335:1;19267:66;19263:74;19260:1;19257:81;19252:1;19245:9;19238:17;19234:105;19231:131;;;19342:18;;:::i;:::-;19231:131;19390:1;19387;19383:9;19372:20;;19050:348;;;;:::o;19404:191::-;19444:4;19464:20;19482:1;19464:20;:::i;:::-;19459:25;;19498:20;19516:1;19498:20;:::i;:::-;19493:25;;19537:1;19534;19531:8;19528:34;;;19542:18;;:::i;:::-;19528:34;19587:1;19584;19580:9;19572:17;;19404:191;;;;:::o;19601:96::-;19638:7;19667:24;19685:5;19667:24;:::i;:::-;19656:35;;19601:96;;;:::o;19703:90::-;19737:7;19780:5;19773:13;19766:21;19755:32;;19703:90;;;:::o;19799:126::-;19836:7;19876:42;19869:5;19865:54;19854:65;;19799:126;;;:::o;19931:77::-;19968:7;19997:5;19986:16;;19931:77;;;:::o;20014:101::-;20050:7;20090:18;20083:5;20079:30;20068:41;;20014:101;;;:::o;20121:86::-;20156:7;20196:4;20189:5;20185:16;20174:27;;20121:86;;;:::o;20213:307::-;20281:1;20291:113;20305:6;20302:1;20299:13;20291:113;;;20390:1;20385:3;20381:11;20375:18;20371:1;20366:3;20362:11;20355:39;20327:2;20324:1;20320:10;20315:15;;20291:113;;;20422:6;20419:1;20416:13;20413:101;;;20502:1;20493:6;20488:3;20484:16;20477:27;20413:101;20262:258;20213:307;;;:::o;20526:320::-;20570:6;20607:1;20601:4;20597:12;20587:22;;20654:1;20648:4;20644:12;20675:18;20665:81;;20731:4;20723:6;20719:17;20709:27;;20665:81;20793:2;20785:6;20782:14;20762:18;20759:38;20756:84;;;20812:18;;:::i;:::-;20756:84;20577:269;20526:320;;;:::o;20852:180::-;20900:77;20897:1;20890:88;20997:4;20994:1;20987:15;21021:4;21018:1;21011:15;21038:180;21086:77;21083:1;21076:88;21183:4;21180:1;21173:15;21207:4;21204:1;21197:15;21224:180;21272:77;21269:1;21262:88;21369:4;21366:1;21359:15;21393:4;21390:1;21383:15;21533:117;21642:1;21639;21632:12;21656:102;21697:6;21748:2;21744:7;21739:2;21732:5;21728:14;21724:28;21714:38;;21656:102;;;:::o;21764:222::-;21904:34;21900:1;21892:6;21888:14;21881:58;21973:5;21968:2;21960:6;21956:15;21949:30;21764:222;:::o;21992:170::-;22132:22;22128:1;22120:6;22116:14;22109:46;21992:170;:::o;22168:221::-;22308:34;22304:1;22296:6;22292:14;22285:58;22377:4;22372:2;22364:6;22360:15;22353:29;22168:221;:::o;22395:225::-;22535:34;22531:1;22523:6;22519:14;22512:58;22604:8;22599:2;22591:6;22587:15;22580:33;22395:225;:::o;22626:221::-;22766:34;22762:1;22754:6;22750:14;22743:58;22835:4;22830:2;22822:6;22818:15;22811:29;22626:221;:::o;22853:225::-;22993:34;22989:1;22981:6;22977:14;22970:58;23062:8;23057:2;23049:6;23045:15;23038:33;22853:225;:::o;23084:166::-;23224:18;23220:1;23212:6;23208:14;23201:42;23084:166;:::o;23256:222::-;23396:34;23392:1;23384:6;23380:14;23373:58;23465:5;23460:2;23452:6;23448:15;23441:30;23256:222;:::o;23484:227::-;23624:34;23620:1;23612:6;23608:14;23601:58;23693:10;23688:2;23680:6;23676:15;23669:35;23484:227;:::o;23717:182::-;23857:34;23853:1;23845:6;23841:14;23834:58;23717:182;:::o;23905:223::-;24045:34;24041:1;24033:6;24029:14;24022:58;24114:6;24109:2;24101:6;24097:15;24090:31;23905:223;:::o;24134:220::-;24274:34;24270:1;24262:6;24258:14;24251:58;24343:3;24338:2;24330:6;24326:15;24319:28;24134:220;:::o;24360:224::-;24500:34;24496:1;24488:6;24484:14;24477:58;24569:7;24564:2;24556:6;24552:15;24545:32;24360:224;:::o;24590:223::-;24730:34;24726:1;24718:6;24714:14;24707:58;24799:6;24794:2;24786:6;24782:15;24775:31;24590:223;:::o;24819:224::-;24959:34;24955:1;24947:6;24943:14;24936:58;25028:7;25023:2;25015:6;25011:15;25004:32;24819:224;:::o;25049:181::-;25189:33;25185:1;25177:6;25173:14;25166:57;25049:181;:::o;25236:122::-;25309:24;25327:5;25309:24;:::i;:::-;25302:5;25299:35;25289:63;;25348:1;25345;25338:12;25289:63;25236:122;:::o;25364:::-;25437:24;25455:5;25437:24;:::i;:::-;25430:5;25427:35;25417:63;;25476:1;25473;25466:12;25417:63;25364:122;:::o;25492:120::-;25564:23;25581:5;25564:23;:::i;:::-;25557:5;25554:34;25544:62;;25602:1;25599;25592:12;25544:62;25492:120;:::o
Swarm Source
ipfs://fa7bed262809ee11943b76c6ad4393ceacf64900f555332956e4772c2d413d3b
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.