Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
GokuStaking
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-03-13 */ //SPDX-License-Identifier: MIT pragma solidity ^0.8.0; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } 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 Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling 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); } } interface IERC20 { /** * @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); /** * @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 `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, 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 `from` to `to` 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 from, address to, uint256 amount) external returns (bool); } 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); } library SafeMath { /** * @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) { uint256 c = a + b; require(c >= a, 'SafeMath: addition overflow'); return c; } /** * @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 sub(a, b, 'SafeMath: subtraction overflow'); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @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) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, 'SafeMath: multiplication overflow'); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts 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) internal pure returns (uint256) { return div(a, b, 'SafeMath: division by zero'); } /** * @dev Returns the integer division of two unsigned integers. Reverts 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) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts 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 mod(a, b, 'SafeMath: modulo by zero'); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message 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, string memory errorMessage ) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } function min(uint256 x, uint256 y) internal pure returns (uint256 z) { z = x < y ? x : y; } // babylonian method (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method) function sqrt(uint256 y) internal pure returns (uint256 z) { if (y > 3) { z = y; uint256 x = y / 2 + 1; while (x < z) { z = x; x = (y / x + x) / 2; } } else if (y != 0) { z = 1; } } } abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } } contract GokuStaking is Ownable, ReentrancyGuard { using SafeMath for uint256; IERC20 public GOKU = IERC20(0xc1f72Ea42c96041eeA89f5F43486f38C29E964eE); uint256 public INTEREST_RATE_PACKAGE_1 = 118; uint256 public INTEREST_RATE_PACKAGE_2 = 219; uint256 public INTEREST_RATE_PACKAGE_3 = 308; uint256 public WITHDRAW_PERIOD_1 = 30 days; uint256 public WITHDRAW_PERIOD_2 = 90 days; uint256 public WITHDRAW_PERIOD_3 = 180 days; struct UserInfo { uint256 package; uint256 stakingAmount; uint256 bonusDebt; uint256 depositAt; } mapping(address => UserInfo) public userInfo; event RescueFundsGoku(address indexed owner, address _to, uint256 _amount); event SetGokuToken(address indexed owner, address _to); event SetInterestRatePackage(address indexed owner, uint256 _interestRatePackage1, uint256 _interestRatePackage2, uint256 _interestRatePackage3); event SetWithdrawPeriod(address indexed owner, uint256 _withdrawPeriod1, uint256 _withdrawPeriod2, uint256 _withdrawPeriod3); event Stake(address indexed owner, uint256 _package, uint256 _amount); event Withdraw(address indexed owner, uint256 _amount); event Claim(address indexed owner); event AddUserInfo(address indexed owner, address _account, uint256 _package, uint256 _stakingAmount, uint256 _bonusDebt, uint256 _depositAt); event RemoveUserInfo(address indexed owner, address _account); /* --VIEWS-- */ function balanceGoku() public view returns(uint256) { return GOKU.balanceOf(address(this)); } function balanceGokuOfUser(address account) public view returns(uint256) { return GOKU.balanceOf(account); } function calculateBonus(address account) public view returns(uint256) { UserInfo storage user = userInfo[account]; if(user.stakingAmount > 0) { uint256 dayBonus = 0; uint256 timestampBonus = block.timestamp.sub(user.depositAt); if(timestampBonus > 86400) { uint256 modBonus = timestampBonus.mod(86400); uint256 modBonusTimeStamp = timestampBonus.sub(modBonus); dayBonus = modBonusTimeStamp.div(86400); } else { return 0; } if(user.package == 1) { return user.stakingAmount.mul(INTEREST_RATE_PACKAGE_1).div(100).div(365).mul(dayBonus).sub(user.bonusDebt); } else if (user.package == 2) { return user.stakingAmount.mul(INTEREST_RATE_PACKAGE_2).div(100).div(365).mul(dayBonus).sub(user.bonusDebt); } else if (user.package == 3) { return user.stakingAmount.mul(INTEREST_RATE_PACKAGE_3).div(100).div(365).mul(dayBonus).sub(user.bonusDebt); } } else { return 0; } } function checkWithdraw(address account) public view returns(bool) { UserInfo storage user = userInfo[account]; if(user.package == 1) { if(user.depositAt.add(WITHDRAW_PERIOD_1) > block.timestamp) { return false; } } else if (user.package == 2) { if(user.depositAt.add(WITHDRAW_PERIOD_2) > block.timestamp) { return false; } } else if (user.package == 3) { if(user.depositAt.add(WITHDRAW_PERIOD_3) > block.timestamp) { return false; } } return true; } /* --OWNER-- */ function addUserInfo(address account, uint256 _package, uint256 _stakingAmount, uint256 _bonusDebt, uint256 _depositAt) external onlyOwner { userInfo[account].package = _package; userInfo[account].stakingAmount = _stakingAmount; userInfo[account].bonusDebt = _bonusDebt; userInfo[account].depositAt = _depositAt; emit AddUserInfo(msg.sender, account, _package, _stakingAmount, _bonusDebt, _depositAt); } function removeUserInfo(address account) external onlyOwner { delete userInfo[account]; emit RemoveUserInfo(msg.sender, account); } function rescueFundsGoku(address to, uint256 _amount) external onlyOwner { uint256 bal = balanceGoku(); require(_amount > 0, 'dont have a GOKU'); require(bal >= _amount, 'dont have a GOKU'); GOKU.transfer(to, _amount); emit RescueFundsGoku(msg.sender, to, _amount); } function setGokuToken(address _goku) external onlyOwner { GOKU = IERC20(_goku); emit SetGokuToken(msg.sender, _goku); } function setInterestRatePackage(uint256 _interestRatePackage1, uint256 _interestRatePackage2, uint256 _interestRatePackage3) external onlyOwner { INTEREST_RATE_PACKAGE_1 = _interestRatePackage1; INTEREST_RATE_PACKAGE_2 = _interestRatePackage2; INTEREST_RATE_PACKAGE_3 = _interestRatePackage3; emit SetInterestRatePackage(msg.sender, _interestRatePackage1, _interestRatePackage2, _interestRatePackage3); } function setWithdrawPeriod(uint256 _withdrawPeriod1, uint256 _withdrawPeriod2, uint256 _withdrawPeriod3) external onlyOwner { WITHDRAW_PERIOD_1 = _withdrawPeriod1; WITHDRAW_PERIOD_2 = _withdrawPeriod2; WITHDRAW_PERIOD_3 = _withdrawPeriod3; emit SetWithdrawPeriod(msg.sender, _withdrawPeriod1, _withdrawPeriod2, _withdrawPeriod3); } /* --EXTERNAL-- */ function stake(uint256 package, uint256 amount) public { if(!_isContract(msg.sender)) { _stake(package, msg.sender, amount); } } function withdraw(uint256 amount) public { if(!_isContract(msg.sender)) { _withdraw(msg.sender, amount); } } function claim() public { if(!_isContract(msg.sender)) { _claim(msg.sender); } } /* --INTERNAL-- */ /** * @notice Checks if address is a contract */ function _isContract(address addr) internal view returns (bool) { uint256 size; assembly { size := extcodesize(addr) } return size > 0; } function _stake(uint256 package, address account, uint256 amount) private { require(amount > 0, "amount must greater than zero"); require(account != address(0), "account must not zero address"); require(balanceGokuOfUser(account) >= amount, "balance GOKU is not enough"); UserInfo storage user = userInfo[account]; if(user.stakingAmount > 0) { require(package == user.package, "user already staked on other package"); } user.package = package; user.stakingAmount = user.stakingAmount.add(amount); user.depositAt = block.timestamp; user.bonusDebt = 0; GOKU.transferFrom(account, address(this), amount); emit Stake(account, package, amount); } function _withdraw(address account, uint256 amount) private nonReentrant { UserInfo storage user = userInfo[account]; require(user.stakingAmount >= amount, "sender dont have a enough fund"); require(amount > 0, "amount must greater than zero"); require(account != address(0), "account must not zero address"); require(checkWithdraw(account) == true, "your account was locked"); uint256 balGoku = balanceGoku(); require(balGoku >= amount, "smartcontract is not enough GOKU"); user.stakingAmount = user.stakingAmount.sub(amount); user.depositAt = block.timestamp; user.bonusDebt = 0; GOKU.transfer(account, amount); emit Withdraw(account, amount); } function _claim(address account) private nonReentrant { UserInfo storage user = userInfo[account]; require(user.stakingAmount > 0, "user is not staking"); uint256 bonus = calculateBonus(account); require(bonus > 0, "bonus must be greater than zero"); GOKU.transfer(account, bonus); userInfo[account].bonusDebt = userInfo[account].bonusDebt.add(bonus); emit Claim(account); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"address","name":"_account","type":"address"},{"indexed":false,"internalType":"uint256","name":"_package","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_stakingAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_bonusDebt","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_depositAt","type":"uint256"}],"name":"AddUserInfo","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"address","name":"_account","type":"address"}],"name":"RemoveUserInfo","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"RescueFundsGoku","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"address","name":"_to","type":"address"}],"name":"SetGokuToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"_interestRatePackage1","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_interestRatePackage2","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_interestRatePackage3","type":"uint256"}],"name":"SetInterestRatePackage","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"_withdrawPeriod1","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_withdrawPeriod2","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_withdrawPeriod3","type":"uint256"}],"name":"SetWithdrawPeriod","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"_package","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"Stake","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"GOKU","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INTEREST_RATE_PACKAGE_1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INTEREST_RATE_PACKAGE_2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INTEREST_RATE_PACKAGE_3","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WITHDRAW_PERIOD_1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WITHDRAW_PERIOD_2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WITHDRAW_PERIOD_3","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"_package","type":"uint256"},{"internalType":"uint256","name":"_stakingAmount","type":"uint256"},{"internalType":"uint256","name":"_bonusDebt","type":"uint256"},{"internalType":"uint256","name":"_depositAt","type":"uint256"}],"name":"addUserInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"balanceGoku","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceGokuOfUser","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"calculateBonus","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"checkWithdraw","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeUserInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueFundsGoku","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_goku","type":"address"}],"name":"setGokuToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_interestRatePackage1","type":"uint256"},{"internalType":"uint256","name":"_interestRatePackage2","type":"uint256"},{"internalType":"uint256","name":"_interestRatePackage3","type":"uint256"}],"name":"setInterestRatePackage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_withdrawPeriod1","type":"uint256"},{"internalType":"uint256","name":"_withdrawPeriod2","type":"uint256"},{"internalType":"uint256","name":"_withdrawPeriod3","type":"uint256"}],"name":"setWithdrawPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"package","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userInfo","outputs":[{"internalType":"uint256","name":"package","type":"uint256"},{"internalType":"uint256","name":"stakingAmount","type":"uint256"},{"internalType":"uint256","name":"bonusDebt","type":"uint256"},{"internalType":"uint256","name":"depositAt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405273c1f72ea42c96041eea89f5f43486f38c29e964ee600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550607660035560db60045561013460055562278d006006556276a70060075562ed4e006008553480156200008b57600080fd5b50620000ac620000a0620000b960201b60201c565b620000c160201b60201c565b6001808190555062000185565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612abe80620001956000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c80637283738d116100c35780639d2930b11161007c5780639d2930b114610380578063ad1f3bdc1461039c578063c36effe5146103cc578063cad798c4146103e8578063d564c1d814610404578063f2fde38b1461042257610158565b80637283738d146102c05780637319e5aa146102dc5780637b0472f01461030c57806389eeb9a7146103285780638da5cb5b146103445780639b95614d1461036257610158565b80634e39576d116101155780634e39576d146102245780634e71d92d14610254578063519b7c2a1461025e5780635a8c50cf1461027c578063642b23d214610298578063715018a6146102b657610158565b806302f369bc1461015d57806314e0f87b1461017b5780631959a002146101995780632e1a7d4d146101cc5780632e938d88146101e857806332d1cdb914610206575b600080fd5b61016561043e565b60405161017291906124f6565b60405180910390f35b610183610464565b6040516101909190612713565b60405180910390f35b6101b360048036038101906101ae9190611d84565b61046a565b6040516101c3949392919061278e565b60405180910390f35b6101e660048036038101906101e19190611e89565b61049a565b005b6101f06104b5565b6040516101fd9190612713565b60405180910390f35b61020e6104bb565b60405161021b9190612713565b60405180910390f35b61023e60048036038101906102399190611d84565b6104c1565b60405161024b9190612713565b60405180910390f35b61025c610575565b005b61026661058e565b6040516102739190612713565b60405180910390f35b61029660048036038101906102919190611f17565b610640565b005b6102a06106b4565b6040516102ad9190612713565b60405180910390f35b6102be6106ba565b005b6102da60048036038101906102d59190611de9565b6106ce565b005b6102f660048036038101906102f19190611d84565b61084f565b6040516103039190612713565b60405180910390f35b61032660048036038101906103219190611edb565b610ab8565b005b610342600480360381019061033d9190611f17565b610ad5565b005b61034c610b49565b604051610359919061240d565b60405180910390f35b61036a610b72565b6040516103779190612713565b60405180910390f35b61039a60048036038101906103959190611d84565b610b78565b005b6103b660048036038101906103b19190611d84565b610c12565b6040516103c391906124db565b60405180910390f35b6103e660048036038101906103e19190611dad565b610d13565b005b61040260048036038101906103fd9190611d84565b610eb2565b005b61040c610f6d565b6040516104199190612713565b60405180910390f35b61043c60048036038101906104379190611d84565b610f73565b005b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b60096020528060005260406000206000915090508060000154908060010154908060020154908060030154905084565b6104a333610ff7565b6104b2576104b1338261100a565b5b50565b60045481565b60035481565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b815260040161051e919061240d565b60206040518083038186803b15801561053657600080fd5b505afa15801561054a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056e9190611eb2565b9050919050565b61057e33610ff7565b61058c5761058b33611370565b5b565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016105eb919061240d565b60206040518083038186803b15801561060357600080fd5b505afa158015610617573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063b9190611eb2565b905090565b610648611632565b8260038190555081600481905550806005819055503373ffffffffffffffffffffffffffffffffffffffff167f24b7059fd35ea9c1ccb52a2283df9673d9872f6f374e986d03ed2cd5969bef9d8484846040516106a793929190612757565b60405180910390a2505050565b60075481565b6106c2611632565b6106cc60006116b0565b565b6106d6611632565b83600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555082600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555081600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002018190555080600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301819055503373ffffffffffffffffffffffffffffffffffffffff167fa5ae5eca11d1469115584718f8d38b682b62ac5452c7c8e39b8d6c9d40b059dd8686868686604051610840959493929190612488565b60405180910390a25050505050565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600081600101541115610aa7576000806108ba83600301544261177490919063ffffffff16565b9050620151808111156109175760006108df62015180836117be90919063ffffffff16565b905060006108f6828461177490919063ffffffff16565b905061090e620151808261180890919063ffffffff16565b93505050610923565b60009350505050610ab3565b6001836000015414156109a257610998836002015461098a8461097c61016d61096e60646109606003548c6001015461185290919063ffffffff16565b61180890919063ffffffff16565b61180890919063ffffffff16565b61185290919063ffffffff16565b61177490919063ffffffff16565b9350505050610ab3565b600283600001541415610a2157610a178360020154610a09846109fb61016d6109ed60646109df6004548c6001015461185290919063ffffffff16565b61180890919063ffffffff16565b61180890919063ffffffff16565b61185290919063ffffffff16565b61177490919063ffffffff16565b9350505050610ab3565b600383600001541415610aa057610a968360020154610a8884610a7a61016d610a6c6064610a5e6005548c6001015461185290919063ffffffff16565b61180890919063ffffffff16565b61180890919063ffffffff16565b61185290919063ffffffff16565b61177490919063ffffffff16565b9350505050610ab3565b5050610ab1565b6000915050610ab3565b505b919050565b610ac133610ff7565b610ad157610ad08233836118cd565b5b5050565b610add611632565b8260068190555081600781905550806008819055503373ffffffffffffffffffffffffffffffffffffffff167ff779b769d15e40831898bf7d94c051bed0a4a7b9382b79649766fc49028dfa38848484604051610b3c93929190612757565b60405180910390a2505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60055481565b610b80611632565b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fd725c1e57e3f01dd65d76c59d080e46a13ffe1875cd7c45242556273bed3409882604051610c07919061240d565b60405180910390a250565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600181600001541415610c925742610c7d6006548360030154611ba590919063ffffffff16565b1115610c8d576000915050610d0e565b610d08565b600281600001541415610cce5742610cb96007548360030154611ba590919063ffffffff16565b1115610cc9576000915050610d0e565b610d07565b600381600001541415610d065742610cf56008548360030154611ba590919063ffffffff16565b1115610d05576000915050610d0e565b5b5b5b60019150505b919050565b610d1b611632565b6000610d2561058e565b905060008211610d6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d61906126b3565b60405180910390fd5b81811015610dad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da4906126b3565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401610e0a92919061245f565b602060405180830381600087803b158015610e2457600080fd5b505af1158015610e38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5c9190611e60565b503373ffffffffffffffffffffffffffffffffffffffff167f20cfd4e995fde768bbc31519d7f91f44a7bb4ea337865188b9fc1079410645af8484604051610ea592919061245f565b60405180910390a2505050565b610eba611632565b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008082016000905560018201600090556002820160009055600382016000905550503373ffffffffffffffffffffffffffffffffffffffff167f1729c062993e819464e0ff7fdb333d4fbdcd0663f8b0283cc18f2fa1a007a48b82604051610f62919061240d565b60405180910390a250565b60085481565b610f7b611632565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610feb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe290612553565b60405180910390fd5b610ff4816116b0565b50565b600080823b905060008111915050919050565b60026001541415611050576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104790612693565b60405180910390fd5b60026001819055506000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905081816001015410156110e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d990612533565b60405180910390fd5b60008211611125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111c90612653565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611195576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118c906126d3565b60405180910390fd5b600115156111a284610c12565b1515146111e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111db906126f3565b60405180910390fd5b60006111ee61058e565b905082811015611233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122a90612673565b60405180910390fd5b61124a83836001015461177490919063ffffffff16565b826001018190555042826003018190555060008260020181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040518363ffffffff1660e01b81526004016112c292919061245f565b602060405180830381600087803b1580156112dc57600080fd5b505af11580156112f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113149190611e60565b508373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161135b9190612713565b60405180910390a25050600180819055505050565b600260015414156113b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ad90612693565b60405180910390fd5b60026001819055506000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816001015411611448576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143f906125b3565b60405180910390fd5b60006114538361084f565b905060008111611498576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148f90612613565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b81526004016114f592919061245f565b602060405180830381600087803b15801561150f57600080fd5b505af1158015611523573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115479190611e60565b5061159d81600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154611ba590919063ffffffff16565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055508273ffffffffffffffffffffffffffffffffffffffff167f0c7ef932d3b91976772937f18d5ef9b39a9930bef486b576c374f047c4b512dc60405160405180910390a250506001808190555050565b61163a611c03565b73ffffffffffffffffffffffffffffffffffffffff16611658610b49565b73ffffffffffffffffffffffffffffffffffffffff16146116ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a5906125f3565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006117b683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c0b565b905092915050565b600061180083836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250611c6f565b905092915050565b600061184a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ccd565b905092915050565b60008083141561186557600090506118c7565b600082846118739190612876565b90508284826118829190612845565b146118c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b9906125d3565b60405180910390fd5b809150505b92915050565b60008111611910576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190790612653565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611980576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611977906126d3565b60405180910390fd5b8061198a836104c1565b10156119cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c290612633565b60405180910390fd5b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600081600101541115611a625780600001548414611a61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5890612593565b60405180910390fd5b5b838160000181905550611a82828260010154611ba590919063ffffffff16565b816001018190555042816003018190555060008160020181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd8430856040518463ffffffff1660e01b8152600401611afc93929190612428565b602060405180830381600087803b158015611b1657600080fd5b505af1158015611b2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4e9190611e60565b508273ffffffffffffffffffffffffffffffffffffffff167f5af417134f72a9d41143ace85b0a26dce6f550f894f2cbc1eeee8810603d91b68584604051611b9792919061272e565b60405180910390a250505050565b6000808284611bb491906127ef565b905083811015611bf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf090612573565b60405180910390fd5b8091505092915050565b600033905090565b6000838311158290611c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4a9190612511565b60405180910390fd5b5060008385611c6291906128d0565b9050809150509392505050565b6000808314158290611cb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cae9190612511565b60405180910390fd5b508284611cc491906129a3565b90509392505050565b60008083118290611d14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0b9190612511565b60405180910390fd5b5060008385611d239190612845565b9050809150509392505050565b600081359050611d3f81612a43565b92915050565b600081519050611d5481612a5a565b92915050565b600081359050611d6981612a71565b92915050565b600081519050611d7e81612a71565b92915050565b600060208284031215611d9657600080fd5b6000611da484828501611d30565b91505092915050565b60008060408385031215611dc057600080fd5b6000611dce85828601611d30565b9250506020611ddf85828601611d5a565b9150509250929050565b600080600080600060a08688031215611e0157600080fd5b6000611e0f88828901611d30565b9550506020611e2088828901611d5a565b9450506040611e3188828901611d5a565b9350506060611e4288828901611d5a565b9250506080611e5388828901611d5a565b9150509295509295909350565b600060208284031215611e7257600080fd5b6000611e8084828501611d45565b91505092915050565b600060208284031215611e9b57600080fd5b6000611ea984828501611d5a565b91505092915050565b600060208284031215611ec457600080fd5b6000611ed284828501611d6f565b91505092915050565b60008060408385031215611eee57600080fd5b6000611efc85828601611d5a565b9250506020611f0d85828601611d5a565b9150509250929050565b600080600060608486031215611f2c57600080fd5b6000611f3a86828701611d5a565b9350506020611f4b86828701611d5a565b9250506040611f5c86828701611d5a565b9150509250925092565b611f6f81612904565b82525050565b611f7e81612916565b82525050565b611f8d8161294c565b82525050565b6000611f9e826127d3565b611fa881856127de565b9350611fb8818560208601612970565b611fc181612a32565b840191505092915050565b6000611fd9601e836127de565b91507f73656e64657220646f6e742068617665206120656e6f7567682066756e6400006000830152602082019050919050565b60006120196026836127de565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061207f601b836127de565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b60006120bf6024836127de565b91507f7573657220616c7265616479207374616b6564206f6e206f746865722070616360008301527f6b616765000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006121256013836127de565b91507f75736572206973206e6f74207374616b696e67000000000000000000000000006000830152602082019050919050565b60006121656021836127de565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006121cb6020836127de565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b600061220b601f836127de565b91507f626f6e7573206d7573742062652067726561746572207468616e207a65726f006000830152602082019050919050565b600061224b601a836127de565b91507f62616c616e636520474f4b55206973206e6f7420656e6f7567680000000000006000830152602082019050919050565b600061228b601d836127de565b91507f616d6f756e74206d7573742067726561746572207468616e207a65726f0000006000830152602082019050919050565b60006122cb6020836127de565b91507f736d617274636f6e7472616374206973206e6f7420656e6f75676820474f4b556000830152602082019050919050565b600061230b601f836127de565b91507f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006000830152602082019050919050565b600061234b6010836127de565b91507f646f6e742068617665206120474f4b55000000000000000000000000000000006000830152602082019050919050565b600061238b601d836127de565b91507f6163636f756e74206d757374206e6f74207a65726f20616464726573730000006000830152602082019050919050565b60006123cb6017836127de565b91507f796f7572206163636f756e7420776173206c6f636b65640000000000000000006000830152602082019050919050565b61240781612942565b82525050565b60006020820190506124226000830184611f66565b92915050565b600060608201905061243d6000830186611f66565b61244a6020830185611f66565b61245760408301846123fe565b949350505050565b60006040820190506124746000830185611f66565b61248160208301846123fe565b9392505050565b600060a08201905061249d6000830188611f66565b6124aa60208301876123fe565b6124b760408301866123fe565b6124c460608301856123fe565b6124d160808301846123fe565b9695505050505050565b60006020820190506124f06000830184611f75565b92915050565b600060208201905061250b6000830184611f84565b92915050565b6000602082019050818103600083015261252b8184611f93565b905092915050565b6000602082019050818103600083015261254c81611fcc565b9050919050565b6000602082019050818103600083015261256c8161200c565b9050919050565b6000602082019050818103600083015261258c81612072565b9050919050565b600060208201905081810360008301526125ac816120b2565b9050919050565b600060208201905081810360008301526125cc81612118565b9050919050565b600060208201905081810360008301526125ec81612158565b9050919050565b6000602082019050818103600083015261260c816121be565b9050919050565b6000602082019050818103600083015261262c816121fe565b9050919050565b6000602082019050818103600083015261264c8161223e565b9050919050565b6000602082019050818103600083015261266c8161227e565b9050919050565b6000602082019050818103600083015261268c816122be565b9050919050565b600060208201905081810360008301526126ac816122fe565b9050919050565b600060208201905081810360008301526126cc8161233e565b9050919050565b600060208201905081810360008301526126ec8161237e565b9050919050565b6000602082019050818103600083015261270c816123be565b9050919050565b600060208201905061272860008301846123fe565b92915050565b600060408201905061274360008301856123fe565b61275060208301846123fe565b9392505050565b600060608201905061276c60008301866123fe565b61277960208301856123fe565b61278660408301846123fe565b949350505050565b60006080820190506127a360008301876123fe565b6127b060208301866123fe565b6127bd60408301856123fe565b6127ca60608301846123fe565b95945050505050565b600081519050919050565b600082825260208201905092915050565b60006127fa82612942565b915061280583612942565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561283a576128396129d4565b5b828201905092915050565b600061285082612942565b915061285b83612942565b92508261286b5761286a612a03565b5b828204905092915050565b600061288182612942565b915061288c83612942565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156128c5576128c46129d4565b5b828202905092915050565b60006128db82612942565b91506128e683612942565b9250828210156128f9576128f86129d4565b5b828203905092915050565b600061290f82612922565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006129578261295e565b9050919050565b600061296982612922565b9050919050565b60005b8381101561298e578082015181840152602081019050612973565b8381111561299d576000848401525b50505050565b60006129ae82612942565b91506129b983612942565b9250826129c9576129c8612a03565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b612a4c81612904565b8114612a5757600080fd5b50565b612a6381612916565b8114612a6e57600080fd5b50565b612a7a81612942565b8114612a8557600080fd5b5056fea26469706673582212202fbaae77cb0b801a751c93a81fbac9826e0e622b0afef0bda11e09f829faabe464736f6c63430008000033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101585760003560e01c80637283738d116100c35780639d2930b11161007c5780639d2930b114610380578063ad1f3bdc1461039c578063c36effe5146103cc578063cad798c4146103e8578063d564c1d814610404578063f2fde38b1461042257610158565b80637283738d146102c05780637319e5aa146102dc5780637b0472f01461030c57806389eeb9a7146103285780638da5cb5b146103445780639b95614d1461036257610158565b80634e39576d116101155780634e39576d146102245780634e71d92d14610254578063519b7c2a1461025e5780635a8c50cf1461027c578063642b23d214610298578063715018a6146102b657610158565b806302f369bc1461015d57806314e0f87b1461017b5780631959a002146101995780632e1a7d4d146101cc5780632e938d88146101e857806332d1cdb914610206575b600080fd5b61016561043e565b60405161017291906124f6565b60405180910390f35b610183610464565b6040516101909190612713565b60405180910390f35b6101b360048036038101906101ae9190611d84565b61046a565b6040516101c3949392919061278e565b60405180910390f35b6101e660048036038101906101e19190611e89565b61049a565b005b6101f06104b5565b6040516101fd9190612713565b60405180910390f35b61020e6104bb565b60405161021b9190612713565b60405180910390f35b61023e60048036038101906102399190611d84565b6104c1565b60405161024b9190612713565b60405180910390f35b61025c610575565b005b61026661058e565b6040516102739190612713565b60405180910390f35b61029660048036038101906102919190611f17565b610640565b005b6102a06106b4565b6040516102ad9190612713565b60405180910390f35b6102be6106ba565b005b6102da60048036038101906102d59190611de9565b6106ce565b005b6102f660048036038101906102f19190611d84565b61084f565b6040516103039190612713565b60405180910390f35b61032660048036038101906103219190611edb565b610ab8565b005b610342600480360381019061033d9190611f17565b610ad5565b005b61034c610b49565b604051610359919061240d565b60405180910390f35b61036a610b72565b6040516103779190612713565b60405180910390f35b61039a60048036038101906103959190611d84565b610b78565b005b6103b660048036038101906103b19190611d84565b610c12565b6040516103c391906124db565b60405180910390f35b6103e660048036038101906103e19190611dad565b610d13565b005b61040260048036038101906103fd9190611d84565b610eb2565b005b61040c610f6d565b6040516104199190612713565b60405180910390f35b61043c60048036038101906104379190611d84565b610f73565b005b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b60096020528060005260406000206000915090508060000154908060010154908060020154908060030154905084565b6104a333610ff7565b6104b2576104b1338261100a565b5b50565b60045481565b60035481565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b815260040161051e919061240d565b60206040518083038186803b15801561053657600080fd5b505afa15801561054a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056e9190611eb2565b9050919050565b61057e33610ff7565b61058c5761058b33611370565b5b565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016105eb919061240d565b60206040518083038186803b15801561060357600080fd5b505afa158015610617573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063b9190611eb2565b905090565b610648611632565b8260038190555081600481905550806005819055503373ffffffffffffffffffffffffffffffffffffffff167f24b7059fd35ea9c1ccb52a2283df9673d9872f6f374e986d03ed2cd5969bef9d8484846040516106a793929190612757565b60405180910390a2505050565b60075481565b6106c2611632565b6106cc60006116b0565b565b6106d6611632565b83600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555082600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555081600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002018190555080600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301819055503373ffffffffffffffffffffffffffffffffffffffff167fa5ae5eca11d1469115584718f8d38b682b62ac5452c7c8e39b8d6c9d40b059dd8686868686604051610840959493929190612488565b60405180910390a25050505050565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600081600101541115610aa7576000806108ba83600301544261177490919063ffffffff16565b9050620151808111156109175760006108df62015180836117be90919063ffffffff16565b905060006108f6828461177490919063ffffffff16565b905061090e620151808261180890919063ffffffff16565b93505050610923565b60009350505050610ab3565b6001836000015414156109a257610998836002015461098a8461097c61016d61096e60646109606003548c6001015461185290919063ffffffff16565b61180890919063ffffffff16565b61180890919063ffffffff16565b61185290919063ffffffff16565b61177490919063ffffffff16565b9350505050610ab3565b600283600001541415610a2157610a178360020154610a09846109fb61016d6109ed60646109df6004548c6001015461185290919063ffffffff16565b61180890919063ffffffff16565b61180890919063ffffffff16565b61185290919063ffffffff16565b61177490919063ffffffff16565b9350505050610ab3565b600383600001541415610aa057610a968360020154610a8884610a7a61016d610a6c6064610a5e6005548c6001015461185290919063ffffffff16565b61180890919063ffffffff16565b61180890919063ffffffff16565b61185290919063ffffffff16565b61177490919063ffffffff16565b9350505050610ab3565b5050610ab1565b6000915050610ab3565b505b919050565b610ac133610ff7565b610ad157610ad08233836118cd565b5b5050565b610add611632565b8260068190555081600781905550806008819055503373ffffffffffffffffffffffffffffffffffffffff167ff779b769d15e40831898bf7d94c051bed0a4a7b9382b79649766fc49028dfa38848484604051610b3c93929190612757565b60405180910390a2505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60055481565b610b80611632565b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fd725c1e57e3f01dd65d76c59d080e46a13ffe1875cd7c45242556273bed3409882604051610c07919061240d565b60405180910390a250565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600181600001541415610c925742610c7d6006548360030154611ba590919063ffffffff16565b1115610c8d576000915050610d0e565b610d08565b600281600001541415610cce5742610cb96007548360030154611ba590919063ffffffff16565b1115610cc9576000915050610d0e565b610d07565b600381600001541415610d065742610cf56008548360030154611ba590919063ffffffff16565b1115610d05576000915050610d0e565b5b5b5b60019150505b919050565b610d1b611632565b6000610d2561058e565b905060008211610d6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d61906126b3565b60405180910390fd5b81811015610dad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da4906126b3565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401610e0a92919061245f565b602060405180830381600087803b158015610e2457600080fd5b505af1158015610e38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5c9190611e60565b503373ffffffffffffffffffffffffffffffffffffffff167f20cfd4e995fde768bbc31519d7f91f44a7bb4ea337865188b9fc1079410645af8484604051610ea592919061245f565b60405180910390a2505050565b610eba611632565b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008082016000905560018201600090556002820160009055600382016000905550503373ffffffffffffffffffffffffffffffffffffffff167f1729c062993e819464e0ff7fdb333d4fbdcd0663f8b0283cc18f2fa1a007a48b82604051610f62919061240d565b60405180910390a250565b60085481565b610f7b611632565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610feb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe290612553565b60405180910390fd5b610ff4816116b0565b50565b600080823b905060008111915050919050565b60026001541415611050576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104790612693565b60405180910390fd5b60026001819055506000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905081816001015410156110e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d990612533565b60405180910390fd5b60008211611125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111c90612653565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611195576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118c906126d3565b60405180910390fd5b600115156111a284610c12565b1515146111e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111db906126f3565b60405180910390fd5b60006111ee61058e565b905082811015611233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122a90612673565b60405180910390fd5b61124a83836001015461177490919063ffffffff16565b826001018190555042826003018190555060008260020181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040518363ffffffff1660e01b81526004016112c292919061245f565b602060405180830381600087803b1580156112dc57600080fd5b505af11580156112f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113149190611e60565b508373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161135b9190612713565b60405180910390a25050600180819055505050565b600260015414156113b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ad90612693565b60405180910390fd5b60026001819055506000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816001015411611448576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143f906125b3565b60405180910390fd5b60006114538361084f565b905060008111611498576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148f90612613565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b81526004016114f592919061245f565b602060405180830381600087803b15801561150f57600080fd5b505af1158015611523573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115479190611e60565b5061159d81600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154611ba590919063ffffffff16565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055508273ffffffffffffffffffffffffffffffffffffffff167f0c7ef932d3b91976772937f18d5ef9b39a9930bef486b576c374f047c4b512dc60405160405180910390a250506001808190555050565b61163a611c03565b73ffffffffffffffffffffffffffffffffffffffff16611658610b49565b73ffffffffffffffffffffffffffffffffffffffff16146116ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a5906125f3565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006117b683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c0b565b905092915050565b600061180083836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250611c6f565b905092915050565b600061184a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ccd565b905092915050565b60008083141561186557600090506118c7565b600082846118739190612876565b90508284826118829190612845565b146118c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b9906125d3565b60405180910390fd5b809150505b92915050565b60008111611910576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190790612653565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611980576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611977906126d3565b60405180910390fd5b8061198a836104c1565b10156119cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c290612633565b60405180910390fd5b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600081600101541115611a625780600001548414611a61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5890612593565b60405180910390fd5b5b838160000181905550611a82828260010154611ba590919063ffffffff16565b816001018190555042816003018190555060008160020181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd8430856040518463ffffffff1660e01b8152600401611afc93929190612428565b602060405180830381600087803b158015611b1657600080fd5b505af1158015611b2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4e9190611e60565b508273ffffffffffffffffffffffffffffffffffffffff167f5af417134f72a9d41143ace85b0a26dce6f550f894f2cbc1eeee8810603d91b68584604051611b9792919061272e565b60405180910390a250505050565b6000808284611bb491906127ef565b905083811015611bf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf090612573565b60405180910390fd5b8091505092915050565b600033905090565b6000838311158290611c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4a9190612511565b60405180910390fd5b5060008385611c6291906128d0565b9050809150509392505050565b6000808314158290611cb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cae9190612511565b60405180910390fd5b508284611cc491906129a3565b90509392505050565b60008083118290611d14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0b9190612511565b60405180910390fd5b5060008385611d239190612845565b9050809150509392505050565b600081359050611d3f81612a43565b92915050565b600081519050611d5481612a5a565b92915050565b600081359050611d6981612a71565b92915050565b600081519050611d7e81612a71565b92915050565b600060208284031215611d9657600080fd5b6000611da484828501611d30565b91505092915050565b60008060408385031215611dc057600080fd5b6000611dce85828601611d30565b9250506020611ddf85828601611d5a565b9150509250929050565b600080600080600060a08688031215611e0157600080fd5b6000611e0f88828901611d30565b9550506020611e2088828901611d5a565b9450506040611e3188828901611d5a565b9350506060611e4288828901611d5a565b9250506080611e5388828901611d5a565b9150509295509295909350565b600060208284031215611e7257600080fd5b6000611e8084828501611d45565b91505092915050565b600060208284031215611e9b57600080fd5b6000611ea984828501611d5a565b91505092915050565b600060208284031215611ec457600080fd5b6000611ed284828501611d6f565b91505092915050565b60008060408385031215611eee57600080fd5b6000611efc85828601611d5a565b9250506020611f0d85828601611d5a565b9150509250929050565b600080600060608486031215611f2c57600080fd5b6000611f3a86828701611d5a565b9350506020611f4b86828701611d5a565b9250506040611f5c86828701611d5a565b9150509250925092565b611f6f81612904565b82525050565b611f7e81612916565b82525050565b611f8d8161294c565b82525050565b6000611f9e826127d3565b611fa881856127de565b9350611fb8818560208601612970565b611fc181612a32565b840191505092915050565b6000611fd9601e836127de565b91507f73656e64657220646f6e742068617665206120656e6f7567682066756e6400006000830152602082019050919050565b60006120196026836127de565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061207f601b836127de565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b60006120bf6024836127de565b91507f7573657220616c7265616479207374616b6564206f6e206f746865722070616360008301527f6b616765000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006121256013836127de565b91507f75736572206973206e6f74207374616b696e67000000000000000000000000006000830152602082019050919050565b60006121656021836127de565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006121cb6020836127de565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b600061220b601f836127de565b91507f626f6e7573206d7573742062652067726561746572207468616e207a65726f006000830152602082019050919050565b600061224b601a836127de565b91507f62616c616e636520474f4b55206973206e6f7420656e6f7567680000000000006000830152602082019050919050565b600061228b601d836127de565b91507f616d6f756e74206d7573742067726561746572207468616e207a65726f0000006000830152602082019050919050565b60006122cb6020836127de565b91507f736d617274636f6e7472616374206973206e6f7420656e6f75676820474f4b556000830152602082019050919050565b600061230b601f836127de565b91507f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006000830152602082019050919050565b600061234b6010836127de565b91507f646f6e742068617665206120474f4b55000000000000000000000000000000006000830152602082019050919050565b600061238b601d836127de565b91507f6163636f756e74206d757374206e6f74207a65726f20616464726573730000006000830152602082019050919050565b60006123cb6017836127de565b91507f796f7572206163636f756e7420776173206c6f636b65640000000000000000006000830152602082019050919050565b61240781612942565b82525050565b60006020820190506124226000830184611f66565b92915050565b600060608201905061243d6000830186611f66565b61244a6020830185611f66565b61245760408301846123fe565b949350505050565b60006040820190506124746000830185611f66565b61248160208301846123fe565b9392505050565b600060a08201905061249d6000830188611f66565b6124aa60208301876123fe565b6124b760408301866123fe565b6124c460608301856123fe565b6124d160808301846123fe565b9695505050505050565b60006020820190506124f06000830184611f75565b92915050565b600060208201905061250b6000830184611f84565b92915050565b6000602082019050818103600083015261252b8184611f93565b905092915050565b6000602082019050818103600083015261254c81611fcc565b9050919050565b6000602082019050818103600083015261256c8161200c565b9050919050565b6000602082019050818103600083015261258c81612072565b9050919050565b600060208201905081810360008301526125ac816120b2565b9050919050565b600060208201905081810360008301526125cc81612118565b9050919050565b600060208201905081810360008301526125ec81612158565b9050919050565b6000602082019050818103600083015261260c816121be565b9050919050565b6000602082019050818103600083015261262c816121fe565b9050919050565b6000602082019050818103600083015261264c8161223e565b9050919050565b6000602082019050818103600083015261266c8161227e565b9050919050565b6000602082019050818103600083015261268c816122be565b9050919050565b600060208201905081810360008301526126ac816122fe565b9050919050565b600060208201905081810360008301526126cc8161233e565b9050919050565b600060208201905081810360008301526126ec8161237e565b9050919050565b6000602082019050818103600083015261270c816123be565b9050919050565b600060208201905061272860008301846123fe565b92915050565b600060408201905061274360008301856123fe565b61275060208301846123fe565b9392505050565b600060608201905061276c60008301866123fe565b61277960208301856123fe565b61278660408301846123fe565b949350505050565b60006080820190506127a360008301876123fe565b6127b060208301866123fe565b6127bd60408301856123fe565b6127ca60608301846123fe565b95945050505050565b600081519050919050565b600082825260208201905092915050565b60006127fa82612942565b915061280583612942565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561283a576128396129d4565b5b828201905092915050565b600061285082612942565b915061285b83612942565b92508261286b5761286a612a03565b5b828204905092915050565b600061288182612942565b915061288c83612942565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156128c5576128c46129d4565b5b828202905092915050565b60006128db82612942565b91506128e683612942565b9250828210156128f9576128f86129d4565b5b828203905092915050565b600061290f82612922565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006129578261295e565b9050919050565b600061296982612922565b9050919050565b60005b8381101561298e578082015181840152602081019050612973565b8381111561299d576000848401525b50505050565b60006129ae82612942565b91506129b983612942565b9250826129c9576129c8612a03565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b612a4c81612904565b8114612a5757600080fd5b50565b612a6381612916565b8114612a6e57600080fd5b50565b612a7a81612942565b8114612a8557600080fd5b5056fea26469706673582212202fbaae77cb0b801a751c93a81fbac9826e0e622b0afef0bda11e09f829faabe464736f6c63430008000033
Deployed Bytecode Sourcemap
12564:8342:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12659:71;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12898:42;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13194:44;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;18328:144;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12794:44;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12743;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14204:122;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18480:116;;;:::i;:::-;;14089:107;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17293:447;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12947:42;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1517:103;;;:::i;:::-;;16189:455;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14334:1179;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18156:164;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17748:374;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;876:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12845:44;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17143:142;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15521:637;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16816:319;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16652:156;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12996:43;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1775:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12659:71;;;;;;;;;;;;;:::o;12898:42::-;;;;:::o;13194:44::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;18328:144::-;18384:23;18396:10;18384:11;:23::i;:::-;18380:85;;18424:29;18434:10;18446:6;18424:9;:29::i;:::-;18380:85;18328:144;:::o;12794:44::-;;;;:::o;12743:::-;;;;:::o;14204:122::-;14268:7;14295:4;;;;;;;;;;;:14;;;14310:7;14295:23;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14288:30;;14204:122;;;:::o;18480:116::-;18519:23;18531:10;18519:11;:23::i;:::-;18515:74;;18559:18;18566:10;18559:6;:18::i;:::-;18515:74;18480:116::o;14089:107::-;14132:7;14159:4;;;;;;;;;;;:14;;;14182:4;14159:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14152:36;;14089:107;:::o;17293:447::-;762:13;:11;:13::i;:::-;17474:21:::1;17448:23;:47;;;;17532:21;17506:23;:47;;;;17590:21;17564:23;:47;;;;17652:10;17629:103;;;17664:21;17687;17710;17629:103;;;;;;;;:::i;:::-;;;;;;;;17293:447:::0;;;:::o;12947:42::-;;;;:::o;1517:103::-;762:13;:11;:13::i;:::-;1582:30:::1;1609:1;1582:18;:30::i;:::-;1517:103::o:0;16189:455::-;762:13;:11;:13::i;:::-;16367:8:::1;16339;:17;16348:7;16339:17;;;;;;;;;;;;;;;:25;;:36;;;;16420:14;16386:8;:17;16395:7;16386:17;;;;;;;;;;;;;;;:31;;:48;;;;16475:10;16445:8;:17;16454:7;16445:17;;;;;;;;;;;;;;;:27;;:40;;;;16526:10;16496:8;:17;16505:7;16496:17;;;;;;;;;;;;;;;:27;;:40;;;;16566:10;16554:82;;;16578:7;16587:8;16597:14;16613:10;16625;16554:82;;;;;;;;;;:::i;:::-;;;;;;;;16189:455:::0;;;;;:::o;14334:1179::-;14395:7;14415:21;14439:8;:17;14448:7;14439:17;;;;;;;;;;;;;;;14415:41;;14491:1;14470:4;:18;;;:22;14467:1039;;;14509:16;14544:22;14569:35;14589:4;:14;;;14569:15;:19;;:35;;;;:::i;:::-;14544:60;;14653:5;14636:14;:22;14633:288;;;14679:16;14698:25;14717:5;14698:14;:18;;:25;;;;:::i;:::-;14679:44;;14742:25;14770:28;14789:8;14770:14;:18;;:28;;;;:::i;:::-;14742:56;;14828:28;14850:5;14828:17;:21;;:28;;;;:::i;:::-;14817:39;;14633:288;;;;;14904:1;14897:8;;;;;;;14633:288;14956:1;14940:4;:12;;;:17;14937:503;;;14985:99;15069:4;:14;;;14985:79;15055:8;14985:65;15046:3;14985:56;15037:3;14985:47;15008:23;;14985:4;:18;;;:22;;:47;;;;:::i;:::-;:51;;:56;;;;:::i;:::-;:60;;:65;;;;:::i;:::-;:69;;:79;;;;:::i;:::-;:83;;:99;;;;:::i;:::-;14978:106;;;;;;;14937:503;15126:1;15110:4;:12;;;:17;15106:334;;;15155:99;15239:4;:14;;;15155:79;15225:8;15155:65;15216:3;15155:56;15207:3;15155:47;15178:23;;15155:4;:18;;;:22;;:47;;;;:::i;:::-;:51;;:56;;;;:::i;:::-;:60;;:65;;;;:::i;:::-;:69;;:79;;;;:::i;:::-;:83;;:99;;;;:::i;:::-;15148:106;;;;;;;15106:334;15296:1;15280:4;:12;;;:17;15276:164;;;15325:99;15409:4;:14;;;15325:79;15395:8;15325:65;15386:3;15325:56;15377:3;15325:47;15348:23;;15325:4;:18;;;:22;;:47;;;;:::i;:::-;:51;;:56;;;;:::i;:::-;:60;;:65;;;;:::i;:::-;:69;;:79;;;;:::i;:::-;:83;;:99;;;;:::i;:::-;15318:106;;;;;;;15276:164;14467:1039;;;;;15493:1;15486:8;;;;;14467:1039;14334:1179;;;;;:::o;18156:164::-;18226:23;18238:10;18226:11;:23::i;:::-;18222:91;;18266:35;18273:7;18282:10;18294:6;18266;:35::i;:::-;18222:91;18156:164;;:::o;17748:374::-;762:13;:11;:13::i;:::-;17903:16:::1;17883:17;:36;;;;17950:16;17930:17;:36;;;;17997:16;17977:17;:36;;;;18049:10;18031:83;;;18061:16;18079;18097;18031:83;;;;;;;;:::i;:::-;;;;;;;;17748:374:::0;;;:::o;876:87::-;922:7;949:6;;;;;;;;;;;942:13;;876:87;:::o;12845:44::-;;;;:::o;17143:142::-;762:13;:11;:13::i;:::-;17224:5:::1;17210:4;;:20;;;;;;;;;;;;;;;;;;17259:10;17246:31;;;17271:5;17246:31;;;;;;:::i;:::-;;;;;;;;17143:142:::0;:::o;15521:637::-;15581:4;15598:21;15622:8;:17;15631:7;15622:17;;;;;;;;;;;;;;;15598:41;;15669:1;15653:4;:12;;;:17;15650:479;;;15730:15;15690:37;15709:17;;15690:4;:14;;;:18;;:37;;;;:::i;:::-;:55;15687:107;;;15773:5;15766:12;;;;;15687:107;15650:479;;;15831:1;15815:4;:12;;;:17;15811:318;;;15892:15;15852:37;15871:17;;15852:4;:14;;;:18;;:37;;;;:::i;:::-;:55;15849:107;;;15935:5;15928:12;;;;;15849:107;15811:318;;;15993:1;15977:4;:12;;;:17;15973:156;;;16054:15;16014:37;16033:17;;16014:4;:14;;;:18;;:37;;;;:::i;:::-;:55;16011:107;;;16097:5;16090:12;;;;;16011:107;15973:156;15811:318;15650:479;16146:4;16139:11;;;15521:637;;;;:::o;16816:319::-;762:13;:11;:13::i;:::-;16900:11:::1;16914:13;:11;:13::i;:::-;16900:27;;16956:1;16946:7;:11;16938:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;17004:7;16997:3;:14;;16989:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;17043:4;;;;;;;;;;;:13;;;17057:2;17061:7;17043:26;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17103:10;17087:40;;;17115:2;17119:7;17087:40;;;;;;;:::i;:::-;;;;;;;;786:1;16816:319:::0;;:::o;16652:156::-;762:13;:11;:13::i;:::-;16730:8:::1;:17;16739:7;16730:17;;;;;;;;;;;;;;;;16723:24:::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;16780:10;16765:35;;;16792:7;16765:35;;;;;;:::i;:::-;;;;;;;;16652:156:::0;:::o;12996:43::-;;;;:::o;1775:201::-;762:13;:11;:13::i;:::-;1884:1:::1;1864:22;;:8;:22;;;;1856:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1940:28;1959:8;1940:18;:28::i;:::-;1775:201:::0;:::o;18696:191::-;18754:4;18771:12;18838:4;18826:17;18818:25;;18878:1;18871:4;:8;18864:15;;;18696:191;;;:::o;19674:771::-;11617:1;12215:7;;:19;;12207:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;11617:1;12348:7;:18;;;;19758:21:::1;19782:8;:17;19791:7;19782:17;;;;;;;;;;;;;;;19758:41;;19840:6;19818:4;:18;;;:28;;19810:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;19909:1;19900:6;:10;19892:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;19982:1;19963:21;;:7;:21;;;;19955:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;20063:4;20037:30;;:22;20051:7;20037:13;:22::i;:::-;:30;;;20029:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;20117:15;20135:13;:11;:13::i;:::-;20117:31;;20178:6;20167:7;:17;;20159:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;20253:30;20276:6;20253:4;:18;;;:22;;:30;;;;:::i;:::-;20232:4;:18;;:51;;;;20311:15;20294:4;:14;;:32;;;;20354:1;20337:4;:14;;:18;;;;20366:4;;;;;;;;;;;:13;;;20380:7;20389:6;20366:30;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20421:7;20412:25;;;20430:6;20412:25;;;;;;:::i;:::-;;;;;;;;12379:1;;11573::::0;12527:7;:22;;;;19674:771;;:::o;20453:450::-;11617:1;12215:7;;:19;;12207:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;11617:1;12348:7;:18;;;;20518:21:::1;20542:8;:17;20551:7;20542:17;;;;;;;;;;;;;;;20518:41;;20599:1;20578:4;:18;;;:22;20570:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;20639:13;20655:23;20670:7;20655:14;:23::i;:::-;20639:39;;20705:1;20697:5;:9;20689:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;20755:4;;;;;;;;;;;:13;;;20769:7;20778:5;20755:29;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20827:38;20859:5;20827:8;:17;20836:7;20827:17;;;;;;;;;;;;;;;:27;;;:31;;:38;;;;:::i;:::-;20797:8;:17;20806:7;20797:17;;;;;;;;;;;;;;;:27;;:68;;;;20887:7;20881:14;;;;;;;;;;;;12379:1;;11573::::0;12527:7;:22;;;;20453:450;:::o;1041:132::-;1116:12;:10;:12::i;:::-;1105:23;;:7;:5;:7::i;:::-;:23;;;1097:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1041:132::o;2136:191::-;2210:16;2229:6;;;;;;;;;;;2210:25;;2255:8;2246:6;;:17;;;;;;;;;;;;;;;;;;2310:8;2279:40;;2300:8;2279:40;;;;;;;;;;;;2136:191;;:::o;6092:136::-;6150:7;6177:43;6181:1;6184;6177:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;6170:50;;6092:136;;;;:::o;9368:130::-;9426:7;9453:37;9457:1;9460;9453:37;;;;;;;;;;;;;;;;;:3;:37::i;:::-;9446:44;;9368:130;;;;:::o;7963:132::-;8021:7;8048:39;8052:1;8055;8048:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;8041:46;;7963:132;;;;:::o;7016:471::-;7074:7;7324:1;7319;:6;7315:47;;;7349:1;7342:8;;;;7315:47;7374:9;7390:1;7386;:5;;;;:::i;:::-;7374:17;;7419:1;7414;7410;:5;;;;:::i;:::-;:10;7402:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;7478:1;7471:8;;;7016:471;;;;;:::o;18895:771::-;18997:1;18988:6;:10;18980:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;19070:1;19051:21;;:7;:21;;;;19043:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;19155:6;19125:26;19143:7;19125:17;:26::i;:::-;:36;;19117:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;19203:21;19227:8;:17;19236:7;19227:17;;;;;;;;;;;;;;;19203:41;;19279:1;19258:4;:18;;;:22;19255:126;;;19316:4;:12;;;19305:7;:23;19297:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;19255:126;19408:7;19393:4;:12;;:22;;;;19447:30;19470:6;19447:4;:18;;;:22;;:30;;;;:::i;:::-;19426:4;:18;;:51;;;;19505:15;19488:4;:14;;:32;;;;19548:1;19531:4;:14;;:18;;;;19560:4;;;;;;;;;;;:17;;;19578:7;19595:4;19602:6;19560:49;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19633:7;19627:31;;;19642:7;19651:6;19627:31;;;;;;;:::i;:::-;;;;;;;;18895:771;;;;:::o;5628:181::-;5686:7;5706:9;5722:1;5718;:5;;;;:::i;:::-;5706:17;;5747:1;5742;:6;;5734:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;5800:1;5793:8;;;5628:181;;;;:::o;92:98::-;145:7;172:10;165:17;;92:98;:::o;6531:226::-;6651:7;6684:1;6679;:6;;6687:12;6671:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;6711:9;6727:1;6723;:5;;;;:::i;:::-;6711:17;;6748:1;6741:8;;;6531:226;;;;;:::o;9983:200::-;10103:7;10136:1;10131;:6;;10139:12;10123:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;10174:1;10170;:5;;;;:::i;:::-;10163:12;;9983:200;;;;;:::o;8591:312::-;8711:7;8743:1;8739;:5;8746:12;8731:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;8770:9;8786:1;8782;:5;;;;:::i;:::-;8770:17;;8894:1;8887:8;;;8591:312;;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:137::-;;237:6;231:13;222:22;;253:30;277:5;253:30;:::i;:::-;212:77;;;;:::o;295:139::-;;379:6;366:20;357:29;;395:33;422:5;395:33;:::i;:::-;347:87;;;;:::o;440:143::-;;528:6;522:13;513:22;;544:33;571:5;544:33;:::i;:::-;503:80;;;;:::o;589:262::-;;697:2;685:9;676:7;672:23;668:32;665:2;;;713:1;710;703:12;665:2;756:1;781:53;826:7;817:6;806:9;802:22;781:53;:::i;:::-;771:63;;727:117;655:196;;;;:::o;857:407::-;;;982:2;970:9;961:7;957:23;953:32;950:2;;;998:1;995;988:12;950:2;1041:1;1066:53;1111:7;1102:6;1091:9;1087:22;1066:53;:::i;:::-;1056:63;;1012:117;1168:2;1194:53;1239:7;1230:6;1219:9;1215:22;1194:53;:::i;:::-;1184:63;;1139:118;940:324;;;;;:::o;1270:844::-;;;;;;1446:3;1434:9;1425:7;1421:23;1417:33;1414:2;;;1463:1;1460;1453:12;1414:2;1506:1;1531:53;1576:7;1567:6;1556:9;1552:22;1531:53;:::i;:::-;1521:63;;1477:117;1633:2;1659:53;1704:7;1695:6;1684:9;1680:22;1659:53;:::i;:::-;1649:63;;1604:118;1761:2;1787:53;1832:7;1823:6;1812:9;1808:22;1787:53;:::i;:::-;1777:63;;1732:118;1889:2;1915:53;1960:7;1951:6;1940:9;1936:22;1915:53;:::i;:::-;1905:63;;1860:118;2017:3;2044:53;2089:7;2080:6;2069:9;2065:22;2044:53;:::i;:::-;2034:63;;1988:119;1404:710;;;;;;;;:::o;2120:278::-;;2236:2;2224:9;2215:7;2211:23;2207:32;2204:2;;;2252:1;2249;2242:12;2204:2;2295:1;2320:61;2373:7;2364:6;2353:9;2349:22;2320:61;:::i;:::-;2310:71;;2266:125;2194:204;;;;:::o;2404:262::-;;2512:2;2500:9;2491:7;2487:23;2483:32;2480:2;;;2528:1;2525;2518:12;2480:2;2571:1;2596:53;2641:7;2632:6;2621:9;2617:22;2596:53;:::i;:::-;2586:63;;2542:117;2470:196;;;;:::o;2672:284::-;;2791:2;2779:9;2770:7;2766:23;2762:32;2759:2;;;2807:1;2804;2797:12;2759:2;2850:1;2875:64;2931:7;2922:6;2911:9;2907:22;2875:64;:::i;:::-;2865:74;;2821:128;2749:207;;;;:::o;2962:407::-;;;3087:2;3075:9;3066:7;3062:23;3058:32;3055:2;;;3103:1;3100;3093:12;3055:2;3146:1;3171:53;3216:7;3207:6;3196:9;3192:22;3171:53;:::i;:::-;3161:63;;3117:117;3273:2;3299:53;3344:7;3335:6;3324:9;3320:22;3299:53;:::i;:::-;3289:63;;3244:118;3045:324;;;;;:::o;3375:552::-;;;;3517:2;3505:9;3496:7;3492:23;3488:32;3485:2;;;3533:1;3530;3523:12;3485:2;3576:1;3601:53;3646:7;3637:6;3626:9;3622:22;3601:53;:::i;:::-;3591:63;;3547:117;3703:2;3729:53;3774:7;3765:6;3754:9;3750:22;3729:53;:::i;:::-;3719:63;;3674:118;3831:2;3857:53;3902:7;3893:6;3882:9;3878:22;3857:53;:::i;:::-;3847:63;;3802:118;3475:452;;;;;:::o;3933:118::-;4020:24;4038:5;4020:24;:::i;:::-;4015:3;4008:37;3998:53;;:::o;4057:109::-;4138:21;4153:5;4138:21;:::i;:::-;4133:3;4126:34;4116:50;;:::o;4172:159::-;4273:51;4318:5;4273:51;:::i;:::-;4268:3;4261:64;4251:80;;:::o;4337:364::-;;4453:39;4486:5;4453:39;:::i;:::-;4508:71;4572:6;4567:3;4508:71;:::i;:::-;4501:78;;4588:52;4633:6;4628:3;4621:4;4614:5;4610:16;4588:52;:::i;:::-;4665:29;4687:6;4665:29;:::i;:::-;4660:3;4656:39;4649:46;;4429:272;;;;;:::o;4707:328::-;;4870:67;4934:2;4929:3;4870:67;:::i;:::-;4863:74;;4967:32;4963:1;4958:3;4954:11;4947:53;5026:2;5021:3;5017:12;5010:19;;4853:182;;;:::o;5041:370::-;;5204:67;5268:2;5263:3;5204:67;:::i;:::-;5197:74;;5301:34;5297:1;5292:3;5288:11;5281:55;5367:8;5362:2;5357:3;5353:12;5346:30;5402:2;5397:3;5393:12;5386:19;;5187:224;;;:::o;5417:325::-;;5580:67;5644:2;5639:3;5580:67;:::i;:::-;5573:74;;5677:29;5673:1;5668:3;5664:11;5657:50;5733:2;5728:3;5724:12;5717:19;;5563:179;;;:::o;5748:368::-;;5911:67;5975:2;5970:3;5911:67;:::i;:::-;5904:74;;6008:34;6004:1;5999:3;5995:11;5988:55;6074:6;6069:2;6064:3;6060:12;6053:28;6107:2;6102:3;6098:12;6091:19;;5894:222;;;:::o;6122:317::-;;6285:67;6349:2;6344:3;6285:67;:::i;:::-;6278:74;;6382:21;6378:1;6373:3;6369:11;6362:42;6430:2;6425:3;6421:12;6414:19;;6268:171;;;:::o;6445:365::-;;6608:67;6672:2;6667:3;6608:67;:::i;:::-;6601:74;;6705:34;6701:1;6696:3;6692:11;6685:55;6771:3;6766:2;6761:3;6757:12;6750:25;6801:2;6796:3;6792:12;6785:19;;6591:219;;;:::o;6816:330::-;;6979:67;7043:2;7038:3;6979:67;:::i;:::-;6972:74;;7076:34;7072:1;7067:3;7063:11;7056:55;7137:2;7132:3;7128:12;7121:19;;6962:184;;;:::o;7152:329::-;;7315:67;7379:2;7374:3;7315:67;:::i;:::-;7308:74;;7412:33;7408:1;7403:3;7399:11;7392:54;7472:2;7467:3;7463:12;7456:19;;7298:183;;;:::o;7487:324::-;;7650:67;7714:2;7709:3;7650:67;:::i;:::-;7643:74;;7747:28;7743:1;7738:3;7734:11;7727:49;7802:2;7797:3;7793:12;7786:19;;7633:178;;;:::o;7817:327::-;;7980:67;8044:2;8039:3;7980:67;:::i;:::-;7973:74;;8077:31;8073:1;8068:3;8064:11;8057:52;8135:2;8130:3;8126:12;8119:19;;7963:181;;;:::o;8150:330::-;;8313:67;8377:2;8372:3;8313:67;:::i;:::-;8306:74;;8410:34;8406:1;8401:3;8397:11;8390:55;8471:2;8466:3;8462:12;8455:19;;8296:184;;;:::o;8486:329::-;;8649:67;8713:2;8708:3;8649:67;:::i;:::-;8642:74;;8746:33;8742:1;8737:3;8733:11;8726:54;8806:2;8801:3;8797:12;8790:19;;8632:183;;;:::o;8821:314::-;;8984:67;9048:2;9043:3;8984:67;:::i;:::-;8977:74;;9081:18;9077:1;9072:3;9068:11;9061:39;9126:2;9121:3;9117:12;9110:19;;8967:168;;;:::o;9141:327::-;;9304:67;9368:2;9363:3;9304:67;:::i;:::-;9297:74;;9401:31;9397:1;9392:3;9388:11;9381:52;9459:2;9454:3;9450:12;9443:19;;9287:181;;;:::o;9474:321::-;;9637:67;9701:2;9696:3;9637:67;:::i;:::-;9630:74;;9734:25;9730:1;9725:3;9721:11;9714:46;9786:2;9781:3;9777:12;9770:19;;9620:175;;;:::o;9801:118::-;9888:24;9906:5;9888:24;:::i;:::-;9883:3;9876:37;9866:53;;:::o;9925:222::-;;10056:2;10045:9;10041:18;10033:26;;10069:71;10137:1;10126:9;10122:17;10113:6;10069:71;:::i;:::-;10023:124;;;;:::o;10153:442::-;;10340:2;10329:9;10325:18;10317:26;;10353:71;10421:1;10410:9;10406:17;10397:6;10353:71;:::i;:::-;10434:72;10502:2;10491:9;10487:18;10478:6;10434:72;:::i;:::-;10516;10584:2;10573:9;10569:18;10560:6;10516:72;:::i;:::-;10307:288;;;;;;:::o;10601:332::-;;10760:2;10749:9;10745:18;10737:26;;10773:71;10841:1;10830:9;10826:17;10817:6;10773:71;:::i;:::-;10854:72;10922:2;10911:9;10907:18;10898:6;10854:72;:::i;:::-;10727:206;;;;;:::o;10939:664::-;;11182:3;11171:9;11167:19;11159:27;;11196:71;11264:1;11253:9;11249:17;11240:6;11196:71;:::i;:::-;11277:72;11345:2;11334:9;11330:18;11321:6;11277:72;:::i;:::-;11359;11427:2;11416:9;11412:18;11403:6;11359:72;:::i;:::-;11441;11509:2;11498:9;11494:18;11485:6;11441:72;:::i;:::-;11523:73;11591:3;11580:9;11576:19;11567:6;11523:73;:::i;:::-;11149:454;;;;;;;;:::o;11609:210::-;;11734:2;11723:9;11719:18;11711:26;;11747:65;11809:1;11798:9;11794:17;11785:6;11747:65;:::i;:::-;11701:118;;;;:::o;11825:250::-;;11970:2;11959:9;11955:18;11947:26;;11983:85;12065:1;12054:9;12050:17;12041:6;11983:85;:::i;:::-;11937:138;;;;:::o;12081:313::-;;12232:2;12221:9;12217:18;12209:26;;12281:9;12275:4;12271:20;12267:1;12256:9;12252:17;12245:47;12309:78;12382:4;12373:6;12309:78;:::i;:::-;12301:86;;12199:195;;;;:::o;12400:419::-;;12604:2;12593:9;12589:18;12581:26;;12653:9;12647:4;12643:20;12639:1;12628:9;12624:17;12617:47;12681:131;12807:4;12681:131;:::i;:::-;12673:139;;12571:248;;;:::o;12825:419::-;;13029:2;13018:9;13014:18;13006:26;;13078:9;13072:4;13068:20;13064:1;13053:9;13049:17;13042:47;13106:131;13232:4;13106:131;:::i;:::-;13098:139;;12996:248;;;:::o;13250:419::-;;13454:2;13443:9;13439:18;13431:26;;13503:9;13497:4;13493:20;13489:1;13478:9;13474:17;13467:47;13531:131;13657:4;13531:131;:::i;:::-;13523:139;;13421:248;;;:::o;13675:419::-;;13879:2;13868:9;13864:18;13856:26;;13928:9;13922:4;13918:20;13914:1;13903:9;13899:17;13892:47;13956:131;14082:4;13956:131;:::i;:::-;13948:139;;13846:248;;;:::o;14100:419::-;;14304:2;14293:9;14289:18;14281:26;;14353:9;14347:4;14343:20;14339:1;14328:9;14324:17;14317:47;14381:131;14507:4;14381:131;:::i;:::-;14373:139;;14271:248;;;:::o;14525:419::-;;14729:2;14718:9;14714:18;14706:26;;14778:9;14772:4;14768:20;14764:1;14753:9;14749:17;14742:47;14806:131;14932:4;14806:131;:::i;:::-;14798:139;;14696:248;;;:::o;14950:419::-;;15154:2;15143:9;15139:18;15131:26;;15203:9;15197:4;15193:20;15189:1;15178:9;15174:17;15167:47;15231:131;15357:4;15231:131;:::i;:::-;15223:139;;15121:248;;;:::o;15375:419::-;;15579:2;15568:9;15564:18;15556:26;;15628:9;15622:4;15618:20;15614:1;15603:9;15599:17;15592:47;15656:131;15782:4;15656:131;:::i;:::-;15648:139;;15546:248;;;:::o;15800:419::-;;16004:2;15993:9;15989:18;15981:26;;16053:9;16047:4;16043:20;16039:1;16028:9;16024:17;16017:47;16081:131;16207:4;16081:131;:::i;:::-;16073:139;;15971:248;;;:::o;16225:419::-;;16429:2;16418:9;16414:18;16406:26;;16478:9;16472:4;16468:20;16464:1;16453:9;16449:17;16442:47;16506:131;16632:4;16506:131;:::i;:::-;16498:139;;16396:248;;;:::o;16650:419::-;;16854:2;16843:9;16839:18;16831:26;;16903:9;16897:4;16893:20;16889:1;16878:9;16874:17;16867:47;16931:131;17057:4;16931:131;:::i;:::-;16923:139;;16821:248;;;:::o;17075:419::-;;17279:2;17268:9;17264:18;17256:26;;17328:9;17322:4;17318:20;17314:1;17303:9;17299:17;17292:47;17356:131;17482:4;17356:131;:::i;:::-;17348:139;;17246:248;;;:::o;17500:419::-;;17704:2;17693:9;17689:18;17681:26;;17753:9;17747:4;17743:20;17739:1;17728:9;17724:17;17717:47;17781:131;17907:4;17781:131;:::i;:::-;17773:139;;17671:248;;;:::o;17925:419::-;;18129:2;18118:9;18114:18;18106:26;;18178:9;18172:4;18168:20;18164:1;18153:9;18149:17;18142:47;18206:131;18332:4;18206:131;:::i;:::-;18198:139;;18096:248;;;:::o;18350:419::-;;18554:2;18543:9;18539:18;18531:26;;18603:9;18597:4;18593:20;18589:1;18578:9;18574:17;18567:47;18631:131;18757:4;18631:131;:::i;:::-;18623:139;;18521:248;;;:::o;18775:222::-;;18906:2;18895:9;18891:18;18883:26;;18919:71;18987:1;18976:9;18972:17;18963:6;18919:71;:::i;:::-;18873:124;;;;:::o;19003:332::-;;19162:2;19151:9;19147:18;19139:26;;19175:71;19243:1;19232:9;19228:17;19219:6;19175:71;:::i;:::-;19256:72;19324:2;19313:9;19309:18;19300:6;19256:72;:::i;:::-;19129:206;;;;;:::o;19341:442::-;;19528:2;19517:9;19513:18;19505:26;;19541:71;19609:1;19598:9;19594:17;19585:6;19541:71;:::i;:::-;19622:72;19690:2;19679:9;19675:18;19666:6;19622:72;:::i;:::-;19704;19772:2;19761:9;19757:18;19748:6;19704:72;:::i;:::-;19495:288;;;;;;:::o;19789:553::-;;20004:3;19993:9;19989:19;19981:27;;20018:71;20086:1;20075:9;20071:17;20062:6;20018:71;:::i;:::-;20099:72;20167:2;20156:9;20152:18;20143:6;20099:72;:::i;:::-;20181;20249:2;20238:9;20234:18;20225:6;20181:72;:::i;:::-;20263;20331:2;20320:9;20316:18;20307:6;20263:72;:::i;:::-;19971:371;;;;;;;:::o;20348:99::-;;20434:5;20428:12;20418:22;;20407:40;;;:::o;20453:169::-;;20571:6;20566:3;20559:19;20611:4;20606:3;20602:14;20587:29;;20549:73;;;;:::o;20628:305::-;;20687:20;20705:1;20687:20;:::i;:::-;20682:25;;20721:20;20739:1;20721:20;:::i;:::-;20716:25;;20875:1;20807:66;20803:74;20800:1;20797:81;20794:2;;;20881:18;;:::i;:::-;20794:2;20925:1;20922;20918:9;20911:16;;20672:261;;;;:::o;20939:185::-;;20996:20;21014:1;20996:20;:::i;:::-;20991:25;;21030:20;21048:1;21030:20;:::i;:::-;21025:25;;21069:1;21059:2;;21074:18;;:::i;:::-;21059:2;21116:1;21113;21109:9;21104:14;;20981:143;;;;:::o;21130:348::-;;21193:20;21211:1;21193:20;:::i;:::-;21188:25;;21227:20;21245:1;21227:20;:::i;:::-;21222:25;;21415:1;21347:66;21343:74;21340:1;21337:81;21332:1;21325:9;21318:17;21314:105;21311:2;;;21422:18;;:::i;:::-;21311:2;21470:1;21467;21463:9;21452:20;;21178:300;;;;:::o;21484:191::-;;21544:20;21562:1;21544:20;:::i;:::-;21539:25;;21578:20;21596:1;21578:20;:::i;:::-;21573:25;;21617:1;21614;21611:8;21608:2;;;21622:18;;:::i;:::-;21608:2;21667:1;21664;21660:9;21652:17;;21529:146;;;;:::o;21681:96::-;;21747:24;21765:5;21747:24;:::i;:::-;21736:35;;21726:51;;;:::o;21783:90::-;;21860:5;21853:13;21846:21;21835:32;;21825:48;;;:::o;21879:126::-;;21956:42;21949:5;21945:54;21934:65;;21924:81;;;:::o;22011:77::-;;22077:5;22066:16;;22056:32;;;:::o;22094:154::-;;22191:51;22236:5;22191:51;:::i;:::-;22178:64;;22168:80;;;:::o;22254:127::-;;22351:24;22369:5;22351:24;:::i;:::-;22338:37;;22328:53;;;:::o;22387:307::-;22455:1;22465:113;22479:6;22476:1;22473:13;22465:113;;;22564:1;22559:3;22555:11;22549:18;22545:1;22540:3;22536:11;22529:39;22501:2;22498:1;22494:10;22489:15;;22465:113;;;22596:6;22593:1;22590:13;22587:2;;;22676:1;22667:6;22662:3;22658:16;22651:27;22587:2;22436:258;;;;:::o;22700:176::-;;22749:20;22767:1;22749:20;:::i;:::-;22744:25;;22783:20;22801:1;22783:20;:::i;:::-;22778:25;;22822:1;22812:2;;22827:18;;:::i;:::-;22812:2;22868:1;22865;22861:9;22856:14;;22734:142;;;;:::o;22882:180::-;22930:77;22927:1;22920:88;23027:4;23024:1;23017:15;23051:4;23048:1;23041:15;23068:180;23116:77;23113:1;23106:88;23213:4;23210:1;23203:15;23237:4;23234:1;23227:15;23254:102;;23346:2;23342:7;23337:2;23330:5;23326:14;23322:28;23312:38;;23302:54;;;:::o;23362:122::-;23435:24;23453:5;23435:24;:::i;:::-;23428:5;23425:35;23415:2;;23474:1;23471;23464:12;23415:2;23405:79;:::o;23490:116::-;23560:21;23575:5;23560:21;:::i;:::-;23553:5;23550:32;23540:2;;23596:1;23593;23586:12;23540:2;23530:76;:::o;23612:122::-;23685:24;23703:5;23685:24;:::i;:::-;23678:5;23675:35;23665:2;;23724:1;23721;23714:12;23665:2;23655:79;:::o
Swarm Source
ipfs://2fbaae77cb0b801a751c93a81fbac9826e0e622b0afef0bda11e09f829faabe4
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.