Overview
S Balance
0 S
S Value
-More Info
Private Name Tags
ContractCreator
Latest 7 from a total of 7 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 1236350 | 10 days ago | IN | 0 S | 0.00009023 | ||||
Update Emission ... | 1236245 | 10 days ago | IN | 0 S | 0.00003806 | ||||
Update Emission ... | 1235357 | 10 days ago | IN | 0 S | 0.00004338 | ||||
Deposit | 1235111 | 10 days ago | IN | 0 S | 0.00011362 | ||||
Update Emission ... | 1234967 | 10 days ago | IN | 0 S | 0.00006219 | ||||
Set Start Block | 1234856 | 10 days ago | IN | 0 S | 0.00003187 | ||||
Add | 1229657 | 10 days ago | IN | 0 S | 0.00023419 |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
MasterChefV2
Compiler Version
v0.8.28+commit.7893614a
Contract Source Code (Solidity)
/** *Submitted for verification at SonicScan.org on 2024-12-22 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ 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; } } /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies in extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ 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 () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = 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"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IERC20Mintable is IERC20 { function mint(address to, uint256 amount) external; } /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using SafeMath for uint256; using Address for address; function safeTransfer(IERC20 token, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ function safeApprove(IERC20 token, address spender, uint256 value) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' // solhint-disable-next-line max-line-length require((value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).add(value); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero"); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ 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 make 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; } } // MasterChef is the master of Mobius. He can make Mobius and he is a fair guy. // Note that it's ownable and the owner wields tremendous power. The ownership // will be transferred to a governance smart contract once MOBIUS is sufficiently // distributed and the community can show to govern itself. // // Have fun reading it. Hopefully it's bug-free. God bless. contract MasterChefV2 is Ownable, ReentrancyGuard { using SafeMath for uint256; using SafeERC20 for IERC20; // Info of each user. struct UserInfo { uint256 amount; // How many LP tokens the user has provided. uint256 rewardDebt; // Reward debt. See explanation below. // // We do some fancy math here. Basically, any point in time, the amount of MOBIUSs // entitled to a user but is pending to be distributed is: // // pending reward = (user.amount * pool.accMobiusPerShare) - user.rewardDebt // // Whenever a user deposits or withdraws LP tokens to a pool. Here's what happens: // 1. The pool's `accMobiusPerShare` (and `lastRewardBlock`) gets updated. // 2. User receives the pending reward sent to his/her address. // 3. User's `amount` gets updated. // 4. User's `rewardDebt` gets updated. } // Info of each pool. struct PoolInfo { IERC20 lpToken; // Address of LP token contract. uint256 allocPoint; // How many allocation points assigned to this pool. MOBIUSs to distribute per block. uint256 lastRewardBlock; // Last block number that MOBIUSs distribution occurs. uint256 accMobiusPerShare; // Accumulated MOBIUSs per share, times PRECISION_FACTOR. See below. bool exists; } // The MOBIUS TOKEN! IERC20Mintable public mobius; // Dev address. address public devaddr; // MOBIUS tokens created per block. uint256 public mobiusPerBlock; // Bonus muliplier for early mobius makers. uint256 public constant BONUS_MULTIPLIER = 1; // Dev Fee uint256 public devFee = 10; // 10% // Info of each pool. uint256[] public poolIds; mapping(uint256 => PoolInfo) public poolInfo; uint256 public currentPoolId = 1000; // Info of each user that stakes LP tokens. mapping(uint256 => mapping(address => UserInfo)) public userInfo; // Total allocation points. Must be the sum of all allocation points in all pools. uint256 public totalAllocPoint = 0; // The block number when MOBIUS mining starts. uint256 public startBlock; uint256 private constant PRECISION_FACTOR = 1e24; event Deposit(address indexed user, uint256 indexed pid, uint256 amount); event Withdraw(address indexed user, uint256 indexed pid, uint256 amount); event EmergencyWithdraw(address indexed user, uint256 indexed pid, uint256 amount); event SetDevAddress(address indexed user, address indexed newAddress); event UpdateEmissionRate(address indexed user, uint256 mobiusPerBlock); constructor( address _mobius, address _devaddr, uint256 _mobiusPerBlock, uint256 _startBlock ) { mobius = IERC20Mintable(_mobius); devaddr = _devaddr; mobiusPerBlock = _mobiusPerBlock; startBlock = _startBlock; } function poolLength() external view returns (uint256) { return poolIds.length; } mapping(IERC20 => bool) public poolExistence; modifier nonDuplicated(IERC20 _lpToken) { require(poolExistence[_lpToken] == false, "nonDuplicated: duplicated"); _; } // Add a new lp to the pool. Can only be called by the owner. function add(uint256 _allocPoint, IERC20 _lpToken, bool _withUpdate) public onlyOwner nonDuplicated(_lpToken) { if (_withUpdate) { massUpdatePools(); } uint256 lastRewardBlock = block.number > startBlock ? block.number : startBlock; totalAllocPoint = totalAllocPoint.add(_allocPoint); poolExistence[_lpToken] = true; poolInfo[currentPoolId] = PoolInfo({ lpToken : _lpToken, allocPoint : _allocPoint, lastRewardBlock : lastRewardBlock, accMobiusPerShare : 0, exists: true }); poolIds.push(currentPoolId); currentPoolId++; } // Update the given pool's MOBIUS allocation point and deposit fee. Can only be called by the owner. function set(uint256 _pid, uint256 _allocPoint, bool _withUpdate) public onlyOwner { require (poolInfo[_pid].exists, "Invalid pid"); if (_withUpdate) { massUpdatePools(); } totalAllocPoint = totalAllocPoint.sub(poolInfo[_pid].allocPoint).add(_allocPoint); poolInfo[_pid].allocPoint = _allocPoint; } // Return reward multiplier over the given _from to _to block. function getMultiplier(uint256 _from, uint256 _to) public pure returns (uint256) { return _to.sub(_from).mul(BONUS_MULTIPLIER); } // View function to see pending MOBIUSs on frontend. function pendingMobius(uint256 _pid, address _user) external view returns (uint256) { PoolInfo storage pool = poolInfo[_pid]; UserInfo storage user = userInfo[_pid][_user]; uint256 accMobiusPerShare = pool.accMobiusPerShare; uint256 lpSupply = pool.lpToken.balanceOf(address(this)); if (block.number > pool.lastRewardBlock && lpSupply != 0) { uint256 multiplier = getMultiplier(pool.lastRewardBlock, block.number); uint256 mobiusReward = multiplier.mul(mobiusPerBlock).mul(pool.allocPoint).div(totalAllocPoint); accMobiusPerShare = accMobiusPerShare.add(mobiusReward.mul(PRECISION_FACTOR).div(lpSupply)); } return user.amount.mul(accMobiusPerShare).div(PRECISION_FACTOR).sub(user.rewardDebt); } // Update reward variables for all pools. Be careful of gas spending! function massUpdatePools() public { uint256 length = poolIds.length; for (uint256 index = 0; index < length; ++index) { updatePool(poolIds[index]); } } // Update reward variables of the given pool to be up-to-date. function updatePool(uint256 _pid) public { PoolInfo storage pool = poolInfo[_pid]; require (pool.exists, "Invalid pid"); if (block.number <= pool.lastRewardBlock) { return; } uint256 lpSupply = pool.lpToken.balanceOf(address(this)); if (lpSupply == 0 || pool.allocPoint == 0) { pool.lastRewardBlock = block.number; return; } uint256 multiplier = getMultiplier(pool.lastRewardBlock, block.number); uint256 mobiusReward = multiplier.mul(mobiusPerBlock).mul(pool.allocPoint).div(totalAllocPoint); mobius.mint(devaddr, mobiusReward.div(devFee)); mobius.mint(address(this), mobiusReward); pool.accMobiusPerShare = pool.accMobiusPerShare.add(mobiusReward.mul(PRECISION_FACTOR).div(lpSupply)); pool.lastRewardBlock = block.number; } // Deposit LP tokens to MasterChef for MOBIUS allocation. function deposit(uint256 _pid, uint256 _amount) public nonReentrant { PoolInfo storage pool = poolInfo[_pid]; require (poolInfo[_pid].exists, "Invalid pid"); UserInfo storage user = userInfo[_pid][_msgSender()]; updatePool(_pid); if (user.amount > 0) { uint256 pending = user.amount.mul(pool.accMobiusPerShare).div(PRECISION_FACTOR).sub(user.rewardDebt); if (pending > 0) { safeMobiusTransfer(_msgSender(), pending); } } if (_amount > 0) { pool.lpToken.safeTransferFrom(address(_msgSender()), address(this), _amount); user.amount = user.amount.add(_amount); } user.rewardDebt = user.amount.mul(pool.accMobiusPerShare).div(PRECISION_FACTOR); emit Deposit(_msgSender(), _pid, _amount); } // Withdraw LP tokens from MasterChef. function withdraw(uint256 _pid, uint256 _amount) public nonReentrant { PoolInfo storage pool = poolInfo[_pid]; require (poolInfo[_pid].exists, "Invalid pid"); UserInfo storage user = userInfo[_pid][_msgSender()]; require(user.amount >= _amount, "withdraw: not good"); updatePool(_pid); uint256 pending = user.amount.mul(pool.accMobiusPerShare).div(PRECISION_FACTOR).sub(user.rewardDebt); if (pending > 0) { safeMobiusTransfer(_msgSender(), pending); } if (_amount > 0) { user.amount = user.amount.sub(_amount); pool.lpToken.safeTransfer(address(_msgSender()), _amount); } user.rewardDebt = user.amount.mul(pool.accMobiusPerShare).div(PRECISION_FACTOR); emit Withdraw(_msgSender(), _pid, _amount); } // Withdraw without caring about rewards. EMERGENCY ONLY. function emergencyWithdraw(uint256 _pid) public nonReentrant { PoolInfo storage pool = poolInfo[_pid]; require (poolInfo[_pid].exists, "Invalid pid"); UserInfo storage user = userInfo[_pid][_msgSender()]; uint256 amount = user.amount; user.amount = 0; user.rewardDebt = 0; pool.lpToken.safeTransfer(address(_msgSender()), amount); emit EmergencyWithdraw(_msgSender(), _pid, amount); } // Safe mobius transfer function, just in case if rounding error causes pool to not have enough MOBIUSs. function safeMobiusTransfer(address _to, uint256 _amount) internal { uint256 mobiusBal = mobius.balanceOf(address(this)); bool transferSuccess = false; if (_amount > mobiusBal) { transferSuccess = mobius.transfer(_to, mobiusBal); } else { transferSuccess = mobius.transfer(_to, _amount); } require(transferSuccess, "safeMobiusTransfer: transfer failed"); } function dev(address _devaddr) public onlyOwner { devaddr = _devaddr; emit SetDevAddress(_msgSender(), _devaddr); } function setStartBlock(uint256 _startBlock) public onlyOwner { require(block.number < startBlock, "Farm has started"); startBlock = _startBlock; } function setDevFee(uint256 _newDevFee) public onlyOwner { require(_newDevFee <= 10, "Must keep fees at 10% or less"); devFee = _newDevFee; } function updateEmissionRate(uint256 _mobiusPerBlock) public onlyOwner { massUpdatePools(); mobiusPerBlock = _mobiusPerBlock; emit UpdateEmissionRate(_msgSender(), _mobiusPerBlock); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_mobius","type":"address"},{"internalType":"address","name":"_devaddr","type":"address"},{"internalType":"uint256","name":"_mobiusPerBlock","type":"uint256"},{"internalType":"uint256","name":"_startBlock","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EmergencyWithdraw","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":"user","type":"address"},{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"SetDevAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"mobiusPerBlock","type":"uint256"}],"name":"UpdateEmissionRate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"BONUS_MULTIPLIER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"contract IERC20","name":"_lpToken","type":"address"},{"internalType":"bool","name":"_withUpdate","type":"bool"}],"name":"add","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentPoolId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_devaddr","type":"address"}],"name":"dev","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devaddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_from","type":"uint256"},{"internalType":"uint256","name":"_to","type":"uint256"}],"name":"getMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"massUpdatePools","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mobius","outputs":[{"internalType":"contract IERC20Mintable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mobiusPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_user","type":"address"}],"name":"pendingMobius","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"name":"poolExistence","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"poolIds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"poolInfo","outputs":[{"internalType":"contract IERC20","name":"lpToken","type":"address"},{"internalType":"uint256","name":"allocPoint","type":"uint256"},{"internalType":"uint256","name":"lastRewardBlock","type":"uint256"},{"internalType":"uint256","name":"accMobiusPerShare","type":"uint256"},{"internalType":"bool","name":"exists","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"bool","name":"_withUpdate","type":"bool"}],"name":"set","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newDevFee","type":"uint256"}],"name":"setDevFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_startBlock","type":"uint256"}],"name":"setStartBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAllocPoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mobiusPerBlock","type":"uint256"}],"name":"updateEmissionRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"updatePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"userInfo","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"rewardDebt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052600a6005556103e86008555f600a5534801561001e575f5ffd5b506040516136fa3803806136fa83398181016040528101906100409190610221565b5f61004f61018960201b60201c565b9050805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600180819055508360025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160048190555080600b8190555050505050610285565b5f33905090565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6101bd82610194565b9050919050565b6101cd816101b3565b81146101d7575f5ffd5b50565b5f815190506101e8816101c4565b92915050565b5f819050919050565b610200816101ee565b811461020a575f5ffd5b50565b5f8151905061021b816101f7565b92915050565b5f5f5f5f6080858703121561023957610238610190565b5b5f610246878288016101da565b9450506020610257878288016101da565b93505060406102688782880161020d565b92505060606102798782880161020d565b91505092959194509250565b613468806102925f395ff3fe608060405234801561000f575f5ffd5b50600436106101cd575f3560e01c806369883b4e1161010257806393f1a40b116100a0578063e2bbb1581161006f578063e2bbb158146104f8578063ebc5163b14610514578063f2fde38b14610532578063f35e4a6e1461054e576101cd565b806393f1a40b1461045b578063cbd258b51461048c578063d49e77cd146104bc578063db046fd4146104da576101cd565b80638aa28550116100dc5780638aa28550146103d35780638d88a90e146103f15780638da5cb5b1461040d5780638dbb1e3a1461042b576101cd565b806369883b4e14610369578063715018a61461039957806379d20a13146103a3576101cd565b8063441a3e701161016f5780635312ea8e116101495780635312ea8e14610309578063630b5ba11461032557806364482f791461032f5780636827e7641461034b576101cd565b8063441a3e70146102b357806348cd4cb1146102cf57806351eb05a6146102ed576101cd565b806317caf6f1116101ab57806317caf6f11461023f5780631c75b6b21461025d5780631eaaa0451461027957806341604de014610295576101cd565b8063081e3eda146101d15780630ba84cd2146101ef5780631526fe271461020b575b5f5ffd5b6101d961056a565b6040516101e691906126df565b60405180910390f35b61020960048036038101906102049190612726565b610576565b005b61022560048036038101906102209190612726565b610672565b6040516102369594939291906127e5565b60405180910390f35b6102476106cf565b60405161025491906126df565b60405180910390f35b61027760048036038101906102729190612726565b6106d5565b005b610293600480360381019061028e91906128ac565b6107b8565b005b61029d610a8f565b6040516102aa919061291c565b60405180910390f35b6102cd60048036038101906102c89190612935565b610ab4565b005b6102d7610d9f565b6040516102e491906126df565b60405180910390f35b61030760048036038101906103029190612726565b610da5565b005b610323600480360381019061031e9190612726565b6110d5565b005b61032d6112bb565b005b61034960048036038101906103449190612973565b611305565b005b610353611468565b60405161036091906126df565b60405180910390f35b610383600480360381019061037e9190612726565b61146e565b60405161039091906126df565b60405180910390f35b6103a161148e565b005b6103bd60048036038101906103b891906129ed565b6115de565b6040516103ca91906126df565b60405180910390f35b6103db6117ec565b6040516103e891906126df565b60405180910390f35b61040b60048036038101906104069190612a2b565b6117f1565b005b61041561192a565b6040516104229190612a65565b60405180910390f35b61044560048036038101906104409190612935565b611951565b60405161045291906126df565b60405180910390f35b610475600480360381019061047091906129ed565b611980565b604051610483929190612a7e565b60405180910390f35b6104a660048036038101906104a19190612aa5565b6119ab565b6040516104b39190612ad0565b60405180910390f35b6104c46119c8565b6040516104d19190612a65565b60405180910390f35b6104e26119ed565b6040516104ef91906126df565b60405180910390f35b610512600480360381019061050d9190612935565b6119f3565b005b61051c611ca6565b60405161052991906126df565b60405180910390f35b61054c60048036038101906105479190612a2b565b611cac565b005b61056860048036038101906105639190612726565b611e6b565b005b5f600680549050905090565b61057e611f4e565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461060b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060290612b43565b60405180910390fd5b6106136112bb565b80600481905550610622611f4e565b73ffffffffffffffffffffffffffffffffffffffff167fe2492e003bbe8afa53088b406f0c1cb5d9e280370fc72a74cf116ffd343c40538260405161066791906126df565b60405180910390a250565b6007602052805f5260405f205f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015490806002015490806003015490806004015f9054906101000a900460ff16905085565b600a5481565b6106dd611f4e565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461076a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076190612b43565b60405180910390fd5b600a8111156107ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a590612bab565b60405180910390fd5b8060058190555050565b6107c0611f4e565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461084d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084490612b43565b60405180910390fd5b815f1515600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161515146108dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d490612c13565b60405180910390fd5b81156108ec576108eb6112bb565b5b5f600b5443116108fe57600b54610900565b435b905061091785600a54611f5590919063ffffffff16565b600a819055506001600c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506040518060a001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018281526020015f81526020016001151581525060075f60085481526020019081526020015f205f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015f6101000a81548160ff0219169083151502179055509050506006600854908060018154018082558091505060019003905f5260205f20015f909190919091505560085f815480929190610a8390612c5e565b91905055505050505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260015403610af9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af090612cef565b60405180910390fd5b60026001819055505f60075f8481526020019081526020015f20905060075f8481526020019081526020015f206004015f9054906101000a900460ff16610b75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6c90612d57565b60405180910390fd5b5f60095f8581526020019081526020015f205f610b90611f4e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20905082815f01541015610c11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0890612dbf565b60405180910390fd5b610c1a84610da5565b5f610c678260010154610c5969d3c21bcecceda1000000610c4b8760030154875f0154611fb290919063ffffffff16565b61202990919063ffffffff16565b61207290919063ffffffff16565b90505f811115610c8357610c82610c7c611f4e565b826120bb565b5b5f841115610cfd57610ca184835f015461207290919063ffffffff16565b825f0181905550610cfc610cb3611f4e565b85855f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166122eb9092919063ffffffff16565b5b610d3369d3c21bcecceda1000000610d258560030154855f0154611fb290919063ffffffff16565b61202990919063ffffffff16565b826001018190555084610d44611f4e565b73ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b56886604051610d8991906126df565b60405180910390a3505050600180819055505050565b600b5481565b5f60075f8381526020019081526020015f209050806004015f9054906101000a900460ff16610e09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0090612d57565b60405180910390fd5b80600201544311610e1a57506110d2565b5f815f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e769190612a65565b602060405180830381865afa158015610e91573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eb59190612df1565b90505f811480610ec857505f8260010154145b15610edd5743826002018190555050506110d2565b5f610eec836002015443611951565b90505f610f2e600a54610f208660010154610f1260045487611fb290919063ffffffff16565b611fb290919063ffffffff16565b61202990919063ffffffff16565b905060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1960035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610fa46005548561202990919063ffffffff16565b6040518363ffffffff1660e01b8152600401610fc1929190612e1c565b5f604051808303815f87803b158015610fd8575f5ffd5b505af1158015610fea573d5f5f3e3d5ffd5b5050505060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1930836040518363ffffffff1660e01b815260040161104a929190612e1c565b5f604051808303815f87803b158015611061575f5ffd5b505af1158015611073573d5f5f3e3d5ffd5b505050506110bc6110a98461109b69d3c21bcecceda100000085611fb290919063ffffffff16565b61202990919063ffffffff16565b8560030154611f5590919063ffffffff16565b8460030181905550438460020181905550505050505b50565b60026001540361111a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111190612cef565b60405180910390fd5b60026001819055505f60075f8381526020019081526020015f20905060075f8381526020019081526020015f206004015f9054906101000a900460ff16611196576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118d90612d57565b60405180910390fd5b5f60095f8481526020019081526020015f205f6111b1611f4e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f815f015490505f825f01819055505f826001018190555061125861120f611f4e565b82855f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166122eb9092919063ffffffff16565b83611261611f4e565b73ffffffffffffffffffffffffffffffffffffffff167fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae0595836040516112a691906126df565b60405180910390a35050506001808190555050565b5f60068054905090505f5f90505b81811015611301576112f6600682815481106112e8576112e7612e43565b5b905f5260205f200154610da5565b8060010190506112c9565b5050565b61130d611f4e565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461139a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139190612b43565b60405180910390fd5b60075f8481526020019081526020015f206004015f9054906101000a900460ff166113fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f190612d57565b60405180910390fd5b8015611409576114086112bb565b5b6114448261143660075f8781526020019081526020015f2060010154600a5461207290919063ffffffff16565b611f5590919063ffffffff16565b600a819055508160075f8581526020019081526020015f2060010181905550505050565b60055481565b6006818154811061147d575f80fd5b905f5260205f20015f915090505481565b611496611f4e565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611523576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151a90612b43565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f5f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f5f60075f8581526020019081526020015f2090505f60095f8681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f826003015490505f835f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016116a69190612a65565b602060405180830381865afa1580156116c1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116e59190612df1565b90508360020154431180156116fa57505f8114155b15611798575f61170e856002015443611951565b90505f611750600a54611742886001015461173460045487611fb290919063ffffffff16565b611fb290919063ffffffff16565b61202990919063ffffffff16565b90506117936117848461177669d3c21bcecceda100000085611fb290919063ffffffff16565b61202990919063ffffffff16565b85611f5590919063ffffffff16565b935050505b6117e083600101546117d269d3c21bcecceda10000006117c486885f0154611fb290919063ffffffff16565b61202990919063ffffffff16565b61207290919063ffffffff16565b94505050505092915050565b600181565b6117f9611f4e565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187d90612b43565b60405180910390fd5b8060035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff166118e5611f4e565b73ffffffffffffffffffffffffffffffffffffffff167f618c54559e94f1499a808aad71ee8729f8e74e8c48e979616328ce493a1a52e760405160405180910390a350565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f611978600161196a858561207290919063ffffffff16565b611fb290919063ffffffff16565b905092915050565b6009602052815f5260405f20602052805f5260405f205f9150915050805f0154908060010154905082565b600c602052805f5260405f205f915054906101000a900460ff1681565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b600260015403611a38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2f90612cef565b60405180910390fd5b60026001819055505f60075f8481526020019081526020015f20905060075f8481526020019081526020015f206004015f9054906101000a900460ff16611ab4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aab90612d57565b60405180910390fd5b5f60095f8581526020019081526020015f205f611acf611f4e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050611b1384610da5565b5f815f01541115611b89575f611b6b8260010154611b5d69d3c21bcecceda1000000611b4f8760030154875f0154611fb290919063ffffffff16565b61202990919063ffffffff16565b61207290919063ffffffff16565b90505f811115611b8757611b86611b80611f4e565b826120bb565b5b505b5f831115611c0557611be7611b9c611f4e565b3085855f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612371909392919063ffffffff16565b611bfd83825f0154611f5590919063ffffffff16565b815f01819055505b611c3b69d3c21bcecceda1000000611c2d8460030154845f0154611fb290919063ffffffff16565b61202990919063ffffffff16565b816001018190555083611c4c611f4e565b73ffffffffffffffffffffffffffffffffffffffff167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1585604051611c9191906126df565b60405180910390a35050600180819055505050565b60085481565b611cb4611f4e565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3890612b43565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da690612ee0565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611e73611f4e565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef790612b43565b60405180910390fd5b600b544310611f44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3b90612f48565b60405180910390fd5b80600b8190555050565b5f33905090565b5f5f8284611f639190612f66565b905083811015611fa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9f90612fe3565b60405180910390fd5b8091505092915050565b5f5f8303611fc2575f9050612023565b5f8284611fcf9190613001565b9050828482611fde919061306f565b1461201e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120159061310f565b60405180910390fd5b809150505b92915050565b5f61206a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506123fa565b905092915050565b5f6120b383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061245b565b905092915050565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016121169190612a65565b602060405180830381865afa158015612131573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121559190612df1565b90505f5f9050818311156122065760025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85846040518363ffffffff1660e01b81526004016121bf929190612e1c565b6020604051808303815f875af11580156121db573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121ff9190613141565b90506122a5565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040518363ffffffff1660e01b8152600401612262929190612e1c565b6020604051808303815f875af115801561227e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122a29190613141565b90505b806122e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122dc906131dc565b60405180910390fd5b50505050565b61236c8363a9059cbb60e01b848460405160240161230a929190612e1c565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506124bd565b505050565b6123f4846323b872dd60e01b858585604051602401612392939291906131fa565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506124bd565b50505050565b5f5f83118290612440576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612437919061328f565b60405180910390fd5b505f838561244e919061306f565b9050809150509392505050565b5f8383111582906124a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612499919061328f565b60405180910390fd5b505f83856124b091906132af565b9050809150509392505050565b5f61251e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166125829092919063ffffffff16565b90505f8151111561257d578080602001905181019061253d9190613141565b61257c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257390613352565b60405180910390fd5b5b505050565b606061259084845f85612599565b90509392505050565b60606125a4856126b6565b6125e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125da906133ba565b60405180910390fd5b5f5f8673ffffffffffffffffffffffffffffffffffffffff16858760405161260b919061341c565b5f6040518083038185875af1925050503d805f8114612645576040519150601f19603f3d011682016040523d82523d5f602084013e61264a565b606091505b5091509150811561265f5780925050506126ae565b5f815111156126715780518082602001fd5b836040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a5919061328f565b60405180910390fd5b949350505050565b5f5f823b90505f8111915050919050565b5f819050919050565b6126d9816126c7565b82525050565b5f6020820190506126f25f8301846126d0565b92915050565b5f5ffd5b612705816126c7565b811461270f575f5ffd5b50565b5f81359050612720816126fc565b92915050565b5f6020828403121561273b5761273a6126f8565b5b5f61274884828501612712565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61279361278e61278984612751565b612770565b612751565b9050919050565b5f6127a482612779565b9050919050565b5f6127b58261279a565b9050919050565b6127c5816127ab565b82525050565b5f8115159050919050565b6127df816127cb565b82525050565b5f60a0820190506127f85f8301886127bc565b61280560208301876126d0565b61281260408301866126d0565b61281f60608301856126d0565b61282c60808301846127d6565b9695505050505050565b5f61284082612751565b9050919050565b5f61285182612836565b9050919050565b61286181612847565b811461286b575f5ffd5b50565b5f8135905061287c81612858565b92915050565b61288b816127cb565b8114612895575f5ffd5b50565b5f813590506128a681612882565b92915050565b5f5f5f606084860312156128c3576128c26126f8565b5b5f6128d086828701612712565b93505060206128e18682870161286e565b92505060406128f286828701612898565b9150509250925092565b5f6129068261279a565b9050919050565b612916816128fc565b82525050565b5f60208201905061292f5f83018461290d565b92915050565b5f5f6040838503121561294b5761294a6126f8565b5b5f61295885828601612712565b925050602061296985828601612712565b9150509250929050565b5f5f5f6060848603121561298a576129896126f8565b5b5f61299786828701612712565b93505060206129a886828701612712565b92505060406129b986828701612898565b9150509250925092565b6129cc81612836565b81146129d6575f5ffd5b50565b5f813590506129e7816129c3565b92915050565b5f5f60408385031215612a0357612a026126f8565b5b5f612a1085828601612712565b9250506020612a21858286016129d9565b9150509250929050565b5f60208284031215612a4057612a3f6126f8565b5b5f612a4d848285016129d9565b91505092915050565b612a5f81612836565b82525050565b5f602082019050612a785f830184612a56565b92915050565b5f604082019050612a915f8301856126d0565b612a9e60208301846126d0565b9392505050565b5f60208284031215612aba57612ab96126f8565b5b5f612ac78482850161286e565b91505092915050565b5f602082019050612ae35f8301846127d6565b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612b2d602083612ae9565b9150612b3882612af9565b602082019050919050565b5f6020820190508181035f830152612b5a81612b21565b9050919050565b7f4d757374206b656570206665657320617420313025206f72206c6573730000005f82015250565b5f612b95601d83612ae9565b9150612ba082612b61565b602082019050919050565b5f6020820190508181035f830152612bc281612b89565b9050919050565b7f6e6f6e4475706c6963617465643a206475706c696361746564000000000000005f82015250565b5f612bfd601983612ae9565b9150612c0882612bc9565b602082019050919050565b5f6020820190508181035f830152612c2a81612bf1565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612c68826126c7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612c9a57612c99612c31565b5b600182019050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f612cd9601f83612ae9565b9150612ce482612ca5565b602082019050919050565b5f6020820190508181035f830152612d0681612ccd565b9050919050565b7f496e76616c6964207069640000000000000000000000000000000000000000005f82015250565b5f612d41600b83612ae9565b9150612d4c82612d0d565b602082019050919050565b5f6020820190508181035f830152612d6e81612d35565b9050919050565b7f77697468647261773a206e6f7420676f6f6400000000000000000000000000005f82015250565b5f612da9601283612ae9565b9150612db482612d75565b602082019050919050565b5f6020820190508181035f830152612dd681612d9d565b9050919050565b5f81519050612deb816126fc565b92915050565b5f60208284031215612e0657612e056126f8565b5b5f612e1384828501612ddd565b91505092915050565b5f604082019050612e2f5f830185612a56565b612e3c60208301846126d0565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612eca602683612ae9565b9150612ed582612e70565b604082019050919050565b5f6020820190508181035f830152612ef781612ebe565b9050919050565b7f4661726d206861732073746172746564000000000000000000000000000000005f82015250565b5f612f32601083612ae9565b9150612f3d82612efe565b602082019050919050565b5f6020820190508181035f830152612f5f81612f26565b9050919050565b5f612f70826126c7565b9150612f7b836126c7565b9250828201905080821115612f9357612f92612c31565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f612fcd601b83612ae9565b9150612fd882612f99565b602082019050919050565b5f6020820190508181035f830152612ffa81612fc1565b9050919050565b5f61300b826126c7565b9150613016836126c7565b9250828202613024816126c7565b9150828204841483151761303b5761303a612c31565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613079826126c7565b9150613084836126c7565b92508261309457613093613042565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6130f9602183612ae9565b91506131048261309f565b604082019050919050565b5f6020820190508181035f830152613126816130ed565b9050919050565b5f8151905061313b81612882565b92915050565b5f60208284031215613156576131556126f8565b5b5f6131638482850161312d565b91505092915050565b7f736166654d6f626975735472616e736665723a207472616e73666572206661695f8201527f6c65640000000000000000000000000000000000000000000000000000000000602082015250565b5f6131c6602383612ae9565b91506131d18261316c565b604082019050919050565b5f6020820190508181035f8301526131f3816131ba565b9050919050565b5f60608201905061320d5f830186612a56565b61321a6020830185612a56565b61322760408301846126d0565b949350505050565b5f81519050919050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6132618261322f565b61326b8185612ae9565b935061327b818560208601613239565b61328481613247565b840191505092915050565b5f6020820190508181035f8301526132a78184613257565b905092915050565b5f6132b9826126c7565b91506132c4836126c7565b92508282039050818111156132dc576132db612c31565b5b92915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e5f8201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b5f61333c602a83612ae9565b9150613347826132e2565b604082019050919050565b5f6020820190508181035f83015261336981613330565b9050919050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000005f82015250565b5f6133a4601d83612ae9565b91506133af82613370565b602082019050919050565b5f6020820190508181035f8301526133d181613398565b9050919050565b5f81519050919050565b5f81905092915050565b5f6133f6826133d8565b61340081856133e2565b9350613410818560208601613239565b80840191505092915050565b5f61342782846133ec565b91508190509291505056fea26469706673582212202733901580585703209d67c079f057a10e0d47eb97d4d4fc2fe3025325580dfa64736f6c634300081c0033000000000000000000000000f3969639ae1f2716568edbd0420153a6709f6e7b0000000000000000000000009c1b8deb6d89a795bc2e45f86a9af6e0347447740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000015be68
Deployed Bytecode
0x608060405234801561000f575f5ffd5b50600436106101cd575f3560e01c806369883b4e1161010257806393f1a40b116100a0578063e2bbb1581161006f578063e2bbb158146104f8578063ebc5163b14610514578063f2fde38b14610532578063f35e4a6e1461054e576101cd565b806393f1a40b1461045b578063cbd258b51461048c578063d49e77cd146104bc578063db046fd4146104da576101cd565b80638aa28550116100dc5780638aa28550146103d35780638d88a90e146103f15780638da5cb5b1461040d5780638dbb1e3a1461042b576101cd565b806369883b4e14610369578063715018a61461039957806379d20a13146103a3576101cd565b8063441a3e701161016f5780635312ea8e116101495780635312ea8e14610309578063630b5ba11461032557806364482f791461032f5780636827e7641461034b576101cd565b8063441a3e70146102b357806348cd4cb1146102cf57806351eb05a6146102ed576101cd565b806317caf6f1116101ab57806317caf6f11461023f5780631c75b6b21461025d5780631eaaa0451461027957806341604de014610295576101cd565b8063081e3eda146101d15780630ba84cd2146101ef5780631526fe271461020b575b5f5ffd5b6101d961056a565b6040516101e691906126df565b60405180910390f35b61020960048036038101906102049190612726565b610576565b005b61022560048036038101906102209190612726565b610672565b6040516102369594939291906127e5565b60405180910390f35b6102476106cf565b60405161025491906126df565b60405180910390f35b61027760048036038101906102729190612726565b6106d5565b005b610293600480360381019061028e91906128ac565b6107b8565b005b61029d610a8f565b6040516102aa919061291c565b60405180910390f35b6102cd60048036038101906102c89190612935565b610ab4565b005b6102d7610d9f565b6040516102e491906126df565b60405180910390f35b61030760048036038101906103029190612726565b610da5565b005b610323600480360381019061031e9190612726565b6110d5565b005b61032d6112bb565b005b61034960048036038101906103449190612973565b611305565b005b610353611468565b60405161036091906126df565b60405180910390f35b610383600480360381019061037e9190612726565b61146e565b60405161039091906126df565b60405180910390f35b6103a161148e565b005b6103bd60048036038101906103b891906129ed565b6115de565b6040516103ca91906126df565b60405180910390f35b6103db6117ec565b6040516103e891906126df565b60405180910390f35b61040b60048036038101906104069190612a2b565b6117f1565b005b61041561192a565b6040516104229190612a65565b60405180910390f35b61044560048036038101906104409190612935565b611951565b60405161045291906126df565b60405180910390f35b610475600480360381019061047091906129ed565b611980565b604051610483929190612a7e565b60405180910390f35b6104a660048036038101906104a19190612aa5565b6119ab565b6040516104b39190612ad0565b60405180910390f35b6104c46119c8565b6040516104d19190612a65565b60405180910390f35b6104e26119ed565b6040516104ef91906126df565b60405180910390f35b610512600480360381019061050d9190612935565b6119f3565b005b61051c611ca6565b60405161052991906126df565b60405180910390f35b61054c60048036038101906105479190612a2b565b611cac565b005b61056860048036038101906105639190612726565b611e6b565b005b5f600680549050905090565b61057e611f4e565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461060b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060290612b43565b60405180910390fd5b6106136112bb565b80600481905550610622611f4e565b73ffffffffffffffffffffffffffffffffffffffff167fe2492e003bbe8afa53088b406f0c1cb5d9e280370fc72a74cf116ffd343c40538260405161066791906126df565b60405180910390a250565b6007602052805f5260405f205f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015490806002015490806003015490806004015f9054906101000a900460ff16905085565b600a5481565b6106dd611f4e565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461076a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076190612b43565b60405180910390fd5b600a8111156107ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a590612bab565b60405180910390fd5b8060058190555050565b6107c0611f4e565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461084d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084490612b43565b60405180910390fd5b815f1515600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161515146108dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d490612c13565b60405180910390fd5b81156108ec576108eb6112bb565b5b5f600b5443116108fe57600b54610900565b435b905061091785600a54611f5590919063ffffffff16565b600a819055506001600c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506040518060a001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018281526020015f81526020016001151581525060075f60085481526020019081526020015f205f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015f6101000a81548160ff0219169083151502179055509050506006600854908060018154018082558091505060019003905f5260205f20015f909190919091505560085f815480929190610a8390612c5e565b91905055505050505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260015403610af9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af090612cef565b60405180910390fd5b60026001819055505f60075f8481526020019081526020015f20905060075f8481526020019081526020015f206004015f9054906101000a900460ff16610b75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6c90612d57565b60405180910390fd5b5f60095f8581526020019081526020015f205f610b90611f4e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20905082815f01541015610c11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0890612dbf565b60405180910390fd5b610c1a84610da5565b5f610c678260010154610c5969d3c21bcecceda1000000610c4b8760030154875f0154611fb290919063ffffffff16565b61202990919063ffffffff16565b61207290919063ffffffff16565b90505f811115610c8357610c82610c7c611f4e565b826120bb565b5b5f841115610cfd57610ca184835f015461207290919063ffffffff16565b825f0181905550610cfc610cb3611f4e565b85855f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166122eb9092919063ffffffff16565b5b610d3369d3c21bcecceda1000000610d258560030154855f0154611fb290919063ffffffff16565b61202990919063ffffffff16565b826001018190555084610d44611f4e565b73ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b56886604051610d8991906126df565b60405180910390a3505050600180819055505050565b600b5481565b5f60075f8381526020019081526020015f209050806004015f9054906101000a900460ff16610e09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0090612d57565b60405180910390fd5b80600201544311610e1a57506110d2565b5f815f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e769190612a65565b602060405180830381865afa158015610e91573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eb59190612df1565b90505f811480610ec857505f8260010154145b15610edd5743826002018190555050506110d2565b5f610eec836002015443611951565b90505f610f2e600a54610f208660010154610f1260045487611fb290919063ffffffff16565b611fb290919063ffffffff16565b61202990919063ffffffff16565b905060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1960035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610fa46005548561202990919063ffffffff16565b6040518363ffffffff1660e01b8152600401610fc1929190612e1c565b5f604051808303815f87803b158015610fd8575f5ffd5b505af1158015610fea573d5f5f3e3d5ffd5b5050505060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1930836040518363ffffffff1660e01b815260040161104a929190612e1c565b5f604051808303815f87803b158015611061575f5ffd5b505af1158015611073573d5f5f3e3d5ffd5b505050506110bc6110a98461109b69d3c21bcecceda100000085611fb290919063ffffffff16565b61202990919063ffffffff16565b8560030154611f5590919063ffffffff16565b8460030181905550438460020181905550505050505b50565b60026001540361111a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111190612cef565b60405180910390fd5b60026001819055505f60075f8381526020019081526020015f20905060075f8381526020019081526020015f206004015f9054906101000a900460ff16611196576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118d90612d57565b60405180910390fd5b5f60095f8481526020019081526020015f205f6111b1611f4e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f815f015490505f825f01819055505f826001018190555061125861120f611f4e565b82855f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166122eb9092919063ffffffff16565b83611261611f4e565b73ffffffffffffffffffffffffffffffffffffffff167fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae0595836040516112a691906126df565b60405180910390a35050506001808190555050565b5f60068054905090505f5f90505b81811015611301576112f6600682815481106112e8576112e7612e43565b5b905f5260205f200154610da5565b8060010190506112c9565b5050565b61130d611f4e565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461139a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139190612b43565b60405180910390fd5b60075f8481526020019081526020015f206004015f9054906101000a900460ff166113fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f190612d57565b60405180910390fd5b8015611409576114086112bb565b5b6114448261143660075f8781526020019081526020015f2060010154600a5461207290919063ffffffff16565b611f5590919063ffffffff16565b600a819055508160075f8581526020019081526020015f2060010181905550505050565b60055481565b6006818154811061147d575f80fd5b905f5260205f20015f915090505481565b611496611f4e565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611523576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151a90612b43565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f5f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f5f60075f8581526020019081526020015f2090505f60095f8681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f826003015490505f835f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016116a69190612a65565b602060405180830381865afa1580156116c1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116e59190612df1565b90508360020154431180156116fa57505f8114155b15611798575f61170e856002015443611951565b90505f611750600a54611742886001015461173460045487611fb290919063ffffffff16565b611fb290919063ffffffff16565b61202990919063ffffffff16565b90506117936117848461177669d3c21bcecceda100000085611fb290919063ffffffff16565b61202990919063ffffffff16565b85611f5590919063ffffffff16565b935050505b6117e083600101546117d269d3c21bcecceda10000006117c486885f0154611fb290919063ffffffff16565b61202990919063ffffffff16565b61207290919063ffffffff16565b94505050505092915050565b600181565b6117f9611f4e565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187d90612b43565b60405180910390fd5b8060035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff166118e5611f4e565b73ffffffffffffffffffffffffffffffffffffffff167f618c54559e94f1499a808aad71ee8729f8e74e8c48e979616328ce493a1a52e760405160405180910390a350565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f611978600161196a858561207290919063ffffffff16565b611fb290919063ffffffff16565b905092915050565b6009602052815f5260405f20602052805f5260405f205f9150915050805f0154908060010154905082565b600c602052805f5260405f205f915054906101000a900460ff1681565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b600260015403611a38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2f90612cef565b60405180910390fd5b60026001819055505f60075f8481526020019081526020015f20905060075f8481526020019081526020015f206004015f9054906101000a900460ff16611ab4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aab90612d57565b60405180910390fd5b5f60095f8581526020019081526020015f205f611acf611f4e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050611b1384610da5565b5f815f01541115611b89575f611b6b8260010154611b5d69d3c21bcecceda1000000611b4f8760030154875f0154611fb290919063ffffffff16565b61202990919063ffffffff16565b61207290919063ffffffff16565b90505f811115611b8757611b86611b80611f4e565b826120bb565b5b505b5f831115611c0557611be7611b9c611f4e565b3085855f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612371909392919063ffffffff16565b611bfd83825f0154611f5590919063ffffffff16565b815f01819055505b611c3b69d3c21bcecceda1000000611c2d8460030154845f0154611fb290919063ffffffff16565b61202990919063ffffffff16565b816001018190555083611c4c611f4e565b73ffffffffffffffffffffffffffffffffffffffff167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1585604051611c9191906126df565b60405180910390a35050600180819055505050565b60085481565b611cb4611f4e565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3890612b43565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da690612ee0565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611e73611f4e565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef790612b43565b60405180910390fd5b600b544310611f44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3b90612f48565b60405180910390fd5b80600b8190555050565b5f33905090565b5f5f8284611f639190612f66565b905083811015611fa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9f90612fe3565b60405180910390fd5b8091505092915050565b5f5f8303611fc2575f9050612023565b5f8284611fcf9190613001565b9050828482611fde919061306f565b1461201e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120159061310f565b60405180910390fd5b809150505b92915050565b5f61206a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506123fa565b905092915050565b5f6120b383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061245b565b905092915050565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016121169190612a65565b602060405180830381865afa158015612131573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121559190612df1565b90505f5f9050818311156122065760025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85846040518363ffffffff1660e01b81526004016121bf929190612e1c565b6020604051808303815f875af11580156121db573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121ff9190613141565b90506122a5565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040518363ffffffff1660e01b8152600401612262929190612e1c565b6020604051808303815f875af115801561227e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122a29190613141565b90505b806122e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122dc906131dc565b60405180910390fd5b50505050565b61236c8363a9059cbb60e01b848460405160240161230a929190612e1c565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506124bd565b505050565b6123f4846323b872dd60e01b858585604051602401612392939291906131fa565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506124bd565b50505050565b5f5f83118290612440576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612437919061328f565b60405180910390fd5b505f838561244e919061306f565b9050809150509392505050565b5f8383111582906124a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612499919061328f565b60405180910390fd5b505f83856124b091906132af565b9050809150509392505050565b5f61251e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166125829092919063ffffffff16565b90505f8151111561257d578080602001905181019061253d9190613141565b61257c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257390613352565b60405180910390fd5b5b505050565b606061259084845f85612599565b90509392505050565b60606125a4856126b6565b6125e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125da906133ba565b60405180910390fd5b5f5f8673ffffffffffffffffffffffffffffffffffffffff16858760405161260b919061341c565b5f6040518083038185875af1925050503d805f8114612645576040519150601f19603f3d011682016040523d82523d5f602084013e61264a565b606091505b5091509150811561265f5780925050506126ae565b5f815111156126715780518082602001fd5b836040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a5919061328f565b60405180910390fd5b949350505050565b5f5f823b90505f8111915050919050565b5f819050919050565b6126d9816126c7565b82525050565b5f6020820190506126f25f8301846126d0565b92915050565b5f5ffd5b612705816126c7565b811461270f575f5ffd5b50565b5f81359050612720816126fc565b92915050565b5f6020828403121561273b5761273a6126f8565b5b5f61274884828501612712565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61279361278e61278984612751565b612770565b612751565b9050919050565b5f6127a482612779565b9050919050565b5f6127b58261279a565b9050919050565b6127c5816127ab565b82525050565b5f8115159050919050565b6127df816127cb565b82525050565b5f60a0820190506127f85f8301886127bc565b61280560208301876126d0565b61281260408301866126d0565b61281f60608301856126d0565b61282c60808301846127d6565b9695505050505050565b5f61284082612751565b9050919050565b5f61285182612836565b9050919050565b61286181612847565b811461286b575f5ffd5b50565b5f8135905061287c81612858565b92915050565b61288b816127cb565b8114612895575f5ffd5b50565b5f813590506128a681612882565b92915050565b5f5f5f606084860312156128c3576128c26126f8565b5b5f6128d086828701612712565b93505060206128e18682870161286e565b92505060406128f286828701612898565b9150509250925092565b5f6129068261279a565b9050919050565b612916816128fc565b82525050565b5f60208201905061292f5f83018461290d565b92915050565b5f5f6040838503121561294b5761294a6126f8565b5b5f61295885828601612712565b925050602061296985828601612712565b9150509250929050565b5f5f5f6060848603121561298a576129896126f8565b5b5f61299786828701612712565b93505060206129a886828701612712565b92505060406129b986828701612898565b9150509250925092565b6129cc81612836565b81146129d6575f5ffd5b50565b5f813590506129e7816129c3565b92915050565b5f5f60408385031215612a0357612a026126f8565b5b5f612a1085828601612712565b9250506020612a21858286016129d9565b9150509250929050565b5f60208284031215612a4057612a3f6126f8565b5b5f612a4d848285016129d9565b91505092915050565b612a5f81612836565b82525050565b5f602082019050612a785f830184612a56565b92915050565b5f604082019050612a915f8301856126d0565b612a9e60208301846126d0565b9392505050565b5f60208284031215612aba57612ab96126f8565b5b5f612ac78482850161286e565b91505092915050565b5f602082019050612ae35f8301846127d6565b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612b2d602083612ae9565b9150612b3882612af9565b602082019050919050565b5f6020820190508181035f830152612b5a81612b21565b9050919050565b7f4d757374206b656570206665657320617420313025206f72206c6573730000005f82015250565b5f612b95601d83612ae9565b9150612ba082612b61565b602082019050919050565b5f6020820190508181035f830152612bc281612b89565b9050919050565b7f6e6f6e4475706c6963617465643a206475706c696361746564000000000000005f82015250565b5f612bfd601983612ae9565b9150612c0882612bc9565b602082019050919050565b5f6020820190508181035f830152612c2a81612bf1565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612c68826126c7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612c9a57612c99612c31565b5b600182019050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f612cd9601f83612ae9565b9150612ce482612ca5565b602082019050919050565b5f6020820190508181035f830152612d0681612ccd565b9050919050565b7f496e76616c6964207069640000000000000000000000000000000000000000005f82015250565b5f612d41600b83612ae9565b9150612d4c82612d0d565b602082019050919050565b5f6020820190508181035f830152612d6e81612d35565b9050919050565b7f77697468647261773a206e6f7420676f6f6400000000000000000000000000005f82015250565b5f612da9601283612ae9565b9150612db482612d75565b602082019050919050565b5f6020820190508181035f830152612dd681612d9d565b9050919050565b5f81519050612deb816126fc565b92915050565b5f60208284031215612e0657612e056126f8565b5b5f612e1384828501612ddd565b91505092915050565b5f604082019050612e2f5f830185612a56565b612e3c60208301846126d0565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612eca602683612ae9565b9150612ed582612e70565b604082019050919050565b5f6020820190508181035f830152612ef781612ebe565b9050919050565b7f4661726d206861732073746172746564000000000000000000000000000000005f82015250565b5f612f32601083612ae9565b9150612f3d82612efe565b602082019050919050565b5f6020820190508181035f830152612f5f81612f26565b9050919050565b5f612f70826126c7565b9150612f7b836126c7565b9250828201905080821115612f9357612f92612c31565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f612fcd601b83612ae9565b9150612fd882612f99565b602082019050919050565b5f6020820190508181035f830152612ffa81612fc1565b9050919050565b5f61300b826126c7565b9150613016836126c7565b9250828202613024816126c7565b9150828204841483151761303b5761303a612c31565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613079826126c7565b9150613084836126c7565b92508261309457613093613042565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6130f9602183612ae9565b91506131048261309f565b604082019050919050565b5f6020820190508181035f830152613126816130ed565b9050919050565b5f8151905061313b81612882565b92915050565b5f60208284031215613156576131556126f8565b5b5f6131638482850161312d565b91505092915050565b7f736166654d6f626975735472616e736665723a207472616e73666572206661695f8201527f6c65640000000000000000000000000000000000000000000000000000000000602082015250565b5f6131c6602383612ae9565b91506131d18261316c565b604082019050919050565b5f6020820190508181035f8301526131f3816131ba565b9050919050565b5f60608201905061320d5f830186612a56565b61321a6020830185612a56565b61322760408301846126d0565b949350505050565b5f81519050919050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6132618261322f565b61326b8185612ae9565b935061327b818560208601613239565b61328481613247565b840191505092915050565b5f6020820190508181035f8301526132a78184613257565b905092915050565b5f6132b9826126c7565b91506132c4836126c7565b92508282039050818111156132dc576132db612c31565b5b92915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e5f8201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b5f61333c602a83612ae9565b9150613347826132e2565b604082019050919050565b5f6020820190508181035f83015261336981613330565b9050919050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000005f82015250565b5f6133a4601d83612ae9565b91506133af82613370565b602082019050919050565b5f6020820190508181035f8301526133d181613398565b9050919050565b5f81519050919050565b5f81905092915050565b5f6133f6826133d8565b61340081856133e2565b9350613410818560208601613239565b80840191505092915050565b5f61342782846133ec565b91508190509291505056fea26469706673582212202733901580585703209d67c079f057a10e0d47eb97d4d4fc2fe3025325580dfa64736f6c634300081c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000f3969639ae1f2716568edbd0420153a6709f6e7b0000000000000000000000009c1b8deb6d89a795bc2e45f86a9af6e0347447740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000015be68
-----Decoded View---------------
Arg [0] : _mobius (address): 0xf3969639AE1f2716568eDBd0420153a6709f6e7b
Arg [1] : _devaddr (address): 0x9C1B8Deb6d89A795Bc2e45F86A9Af6e034744774
Arg [2] : _mobiusPerBlock (uint256): 0
Arg [3] : _startBlock (uint256): 1425000
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000f3969639ae1f2716568edbd0420153a6709f6e7b
Arg [1] : 0000000000000000000000009c1b8deb6d89a795bc2e45f86a9af6e034744774
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [3] : 000000000000000000000000000000000000000000000000000000000015be68
Deployed Bytecode Sourcemap
23827:10554:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26857:94;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34164:214;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25667:44;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;25968:34;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33993:163;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27226:686;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25289:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31709:852;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26061:25;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29830:892;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32632:471;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29558:196;;;:::i;:::-;;28026:363;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25567:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25636:24;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16574:148;;;:::i;:::-;;28674:801;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25500:44;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33670:138;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15932:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28465:143;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25809:64;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;26959:44;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25345:22;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25415:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30793:864;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25718:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16877:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33816:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26857:94;26902:7;26929;:14;;;;26922:21;;26857:94;:::o;34164:214::-;16154:12;:10;:12::i;:::-;16144:22;;:6;;;;;;;;;;;:22;;;16136:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34245:17:::1;:15;:17::i;:::-;34290:15;34273:14;:32;;;;34340:12;:10;:12::i;:::-;34321:49;;;34354:15;34321:49;;;;;;:::i;:::-;;;;;;;;34164:214:::0;:::o;25667:44::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;25968:34::-;;;;:::o;33993:163::-;16154:12;:10;:12::i;:::-;16144:22;;:6;;;;;;;;;;;:22;;;16136:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34082:2:::1;34068:10;:16;;34060:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;34138:10;34129:6;:19;;;;33993:163:::0;:::o;27226:686::-;16154:12;:10;:12::i;:::-;16144:22;;:6;;;;;;;;;;;:22;;;16136:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27326:8:::1;27096:5;27069:32;;:13;:23;27083:8;27069:23;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;27061:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;27351:11:::2;27347:61;;;27379:17;:15;:17::i;:::-;27347:61;27418:23;27459:10;;27444:12;:25;:53;;27487:10;;27444:53;;;27472:12;27444:53;27418:79;;27526:32;27546:11;27526:15;;:19;;:32;;;;:::i;:::-;27508:15;:50;;;;27595:4;27569:13;:23;27583:8;27569:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;27636:204;;;;;;;;27670:8;27636:204;;;;;;27706:11;27636:204;;;;27750:15;27636:204;;;;27800:1;27636:204;;;;27824:4;27636:204;;;;::::0;27610:8:::2;:23;27619:13;;27610:23;;;;;;;;;;;:230;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27851:7;27864:13;;27851:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27889:13;;:15;;;;;;;;;:::i;:::-;;;;;;27336:576;16214:1:::1;27226:686:::0;;;:::o;25289:28::-;;;;;;;;;;;;;:::o;31709:852::-;22511:1;23108:7;;:19;23100:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;22511:1;23241:7;:18;;;;31789:21:::1;31813:8;:14;31822:4;31813:14;;;;;;;;;;;31789:38;;31847:8;:14;31856:4;31847:14;;;;;;;;;;;:21;;;;;;;;;;;;31838:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;31897:21;31921:8;:14;31930:4;31921:14;;;;;;;;;;;:28;31936:12;:10;:12::i;:::-;31921:28;;;;;;;;;;;;;;;31897:52;;31983:7;31968:4;:11;;;:22;;31960:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;32024:16;32035:4;32024:10;:16::i;:::-;32051:15;32069:82;32135:4;:15;;;32069:61;26139:4;32069:39;32085:4;:22;;;32069:4;:11;;;:15;;:39;;;;:::i;:::-;:43;;:61;;;;:::i;:::-;:65;;:82;;;;:::i;:::-;32051:100;;32176:1;32166:7;:11;32162:85;;;32194:41;32213:12;:10;:12::i;:::-;32227:7;32194:18;:41::i;:::-;32162:85;32271:1;32261:7;:11;32257:154;;;32303:24;32319:7;32303:4;:11;;;:15;;:24;;;;:::i;:::-;32289:4;:11;;:38;;;;32342:57;32376:12;:10;:12::i;:::-;32391:7;32342:4;:12;;;;;;;;;;;;:25;;;;:57;;;;;:::i;:::-;32257:154;32439:61;26139:4;32439:39;32455:4;:22;;;32439:4;:11;;;:15;;:39;;;;:::i;:::-;:43;;:61;;;;:::i;:::-;32421:4;:15;;:79;;;;32539:4;32525:12;:10;:12::i;:::-;32516:37;;;32545:7;32516:37;;;;;;:::i;:::-;;;;;;;;31778:783;;;22467:1:::0;23420:7;:22;;;;31709:852;;:::o;26061:25::-;;;;:::o;29830:892::-;29882:21;29906:8;:14;29915:4;29906:14;;;;;;;;;;;29882:38;;29940:4;:11;;;;;;;;;;;;29931:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;30000:4;:20;;;29984:12;:36;29980:75;;30037:7;;;29980:75;30067:16;30086:4;:12;;;;;;;;;;;;:22;;;30117:4;30086:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30067:56;;30150:1;30138:8;:13;:37;;;;30174:1;30155:4;:15;;;:20;30138:37;30134:126;;;30215:12;30192:4;:20;;:35;;;;30242:7;;;;30134:126;30272:18;30293:49;30307:4;:20;;;30329:12;30293:13;:49::i;:::-;30272:70;;30353:20;30376:72;30432:15;;30376:51;30411:4;:15;;;30376:30;30391:14;;30376:10;:14;;:30;;;;:::i;:::-;:34;;:51;;;;:::i;:::-;:55;;:72;;;;:::i;:::-;30353:95;;30459:6;;;;;;;;;;;:11;;;30471:7;;;;;;;;;;;30480:24;30497:6;;30480:12;:16;;:24;;;;:::i;:::-;30459:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30516:6;;;;;;;;;;;:11;;;30536:4;30543:12;30516:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30592:76;30619:48;30658:8;30619:34;26139:4;30619:12;:16;;:34;;;;:::i;:::-;:38;;:48;;;;:::i;:::-;30592:4;:22;;;:26;;:76;;;;:::i;:::-;30567:4;:22;;:101;;;;30702:12;30679:4;:20;;:35;;;;29871:851;;;;29830:892;;:::o;32632:471::-;22511:1;23108:7;;:19;23100:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;22511:1;23241:7;:18;;;;32704:21:::1;32728:8;:14;32737:4;32728:14;;;;;;;;;;;32704:38;;32762:8;:14;32771:4;32762:14;;;;;;;;;;;:21;;;;;;;;;;;;32753:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;32820:21;32844:8;:14;32853:4;32844:14;;;;;;;;;;;:28;32859:12;:10;:12::i;:::-;32844:28;;;;;;;;;;;;;;;32820:52;;32883:14;32900:4;:11;;;32883:28;;32936:1;32922:4;:11;;:15;;;;32966:1;32948:4;:15;;:19;;;;32978:56;33012:12;:10;:12::i;:::-;33027:6;32978:4;:12;;;;;;;;;;;;:25;;;;:56;;;;;:::i;:::-;33082:4;33068:12;:10;:12::i;:::-;33050:45;;;33088:6;33050:45;;;;;;:::i;:::-;;;;;;;;32693:410;;;22467:1:::0;23420:7;:22;;;;32632:471;:::o;29558:196::-;29603:14;29620:7;:14;;;;29603:31;;29650:13;29666:1;29650:17;;29645:102;29677:6;29669:5;:14;29645:102;;;29709:26;29720:7;29728:5;29720:14;;;;;;;;:::i;:::-;;;;;;;;;;29709:10;:26::i;:::-;29685:7;;;;;29645:102;;;;29592:162;29558:196::o;28026:363::-;16154:12;:10;:12::i;:::-;16144:22;;:6;;;;;;;;;;;:22;;;16136:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28129:8:::1;:14;28138:4;28129:14;;;;;;;;;;;:21;;;;;;;;;;;;28120:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;28183:11;28179:61;;;28211:17;:15;:17::i;:::-;28179:61;28268:63;28319:11;28268:46;28288:8;:14;28297:4;28288:14;;;;;;;;;;;:25;;;28268:15;;:19;;:46;;;;:::i;:::-;:50;;:63;;;;:::i;:::-;28250:15;:81;;;;28370:11;28342:8;:14;28351:4;28342:14;;;;;;;;;;;:25;;:39;;;;28026:363:::0;;;:::o;25567:26::-;;;;:::o;25636:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16574:148::-;16154:12;:10;:12::i;:::-;16144:22;;:6;;;;;;;;;;;:22;;;16136:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16681:1:::1;16644:40;;16665:6;;;;;;;;;;;16644:40;;;;;;;;;;;;16712:1;16695:6;;:19;;;;;;;;;;;;;;;;;;16574:148::o:0;28674:801::-;28749:7;28769:21;28793:8;:14;28802:4;28793:14;;;;;;;;;;;28769:38;;28818:21;28842:8;:14;28851:4;28842:14;;;;;;;;;;;:21;28857:5;28842:21;;;;;;;;;;;;;;;28818:45;;28874:25;28902:4;:22;;;28874:50;;28935:16;28954:4;:12;;;;;;;;;;;;:22;;;28985:4;28954:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28935:56;;29021:4;:20;;;29006:12;:35;:52;;;;;29057:1;29045:8;:13;;29006:52;29002:371;;;29075:18;29096:49;29110:4;:20;;;29132:12;29096:13;:49::i;:::-;29075:70;;29160:20;29183:72;29239:15;;29183:51;29218:4;:15;;;29183:30;29198:14;;29183:10;:14;;:30;;;;:::i;:::-;:34;;:51;;;;:::i;:::-;:55;;:72;;;;:::i;:::-;29160:95;;29290:71;29312:48;29351:8;29312:34;26139:4;29312:12;:16;;:34;;;;:::i;:::-;:38;;:48;;;;:::i;:::-;29290:17;:21;;:71;;;;:::i;:::-;29270:91;;29060:313;;29002:371;29390:77;29451:4;:15;;;29390:56;26139:4;29390:34;29406:17;29390:4;:11;;;:15;;:34;;;;:::i;:::-;:38;;:56;;;;:::i;:::-;:60;;:77;;;;:::i;:::-;29383:84;;;;;;28674:801;;;;:::o;25500:44::-;25543:1;25500:44;:::o;33670:138::-;16154:12;:10;:12::i;:::-;16144:22;;:6;;;;;;;;;;;:22;;;16136:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33739:8:::1;33729:7;;:18;;;;;;;;;;;;;;;;;;33791:8;33763:37;;33777:12;:10;:12::i;:::-;33763:37;;;;;;;;;;;;33670:138:::0;:::o;15932:79::-;15970:7;15997:6;;;;;;;;;;;15990:13;;15932:79;:::o;28465:143::-;28537:7;28564:36;25543:1;28564:14;28572:5;28564:3;:7;;:14;;;;:::i;:::-;:18;;:36;;;;:::i;:::-;28557:43;;28465:143;;;;:::o;25809:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;26959:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;25345:22::-;;;;;;;;;;;;;:::o;25415:29::-;;;;:::o;30793:864::-;22511:1;23108:7;;:19;23100:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;22511:1;23241:7;:18;;;;30872:21:::1;30896:8;:14;30905:4;30896:14;;;;;;;;;;;30872:38;;30930:8;:14;30939:4;30930:14;;;;;;;;;;;:21;;;;;;;;;;;;30921:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;30980:21;31004:8;:14;31013:4;31004:14;;;;;;;;;;;:28;31019:12;:10;:12::i;:::-;31004:28;;;;;;;;;;;;;;;30980:52;;31043:16;31054:4;31043:10;:16::i;:::-;31088:1;31074:4;:11;;;:15;31070:255;;;31106:15;31124:82;31190:4;:15;;;31124:61;26139:4;31124:39;31140:4;:22;;;31124:4;:11;;;:15;;:39;;;;:::i;:::-;:43;;:61;;;;:::i;:::-;:65;;:82;;;;:::i;:::-;31106:100;;31235:1;31225:7;:11;31221:93;;;31257:41;31276:12;:10;:12::i;:::-;31290:7;31257:18;:41::i;:::-;31221:93;31091:234;31070:255;31349:1;31339:7;:11;31335:173;;;31367:76;31405:12;:10;:12::i;:::-;31428:4;31435:7;31367:4;:12;;;;;;;;;;;;:29;;;;:76;;;;;;:::i;:::-;31472:24;31488:7;31472:4;:11;;;:15;;:24;;;;:::i;:::-;31458:4;:11;;:38;;;;31335:173;31536:61;26139:4;31536:39;31552:4;:22;;;31536:4;:11;;;:15;;:39;;;;:::i;:::-;:43;;:61;;;;:::i;:::-;31518:4;:15;;:79;;;;31635:4;31621:12;:10;:12::i;:::-;31613:36;;;31641:7;31613:36;;;;;;:::i;:::-;;;;;;;;30861:796;;22467:1:::0;23420:7;:22;;;;30793:864;;:::o;25718:35::-;;;;:::o;16877:244::-;16154:12;:10;:12::i;:::-;16144:22;;:6;;;;;;;;;;;:22;;;16136:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16986:1:::1;16966:22;;:8;:22;;::::0;16958:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;17076:8;17047:38;;17068:6;;;;;;;;;;;17047:38;;;;;;;;;;;;17105:8;17096:6;;:17;;;;;;;;;;;;;;;;;;16877:244:::0;:::o;33816:169::-;16154:12;:10;:12::i;:::-;16144:22;;:6;;;;;;;;;;;:22;;;16136:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33911:10:::1;;33896:12;:25;33888:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;33966:11;33953:10;:24;;;;33816:169:::0;:::o;604:98::-;657:7;684:10;677:17;;604:98;:::o;4507:181::-;4565:7;4585:9;4601:1;4597;:5;;;;:::i;:::-;4585:17;;4626:1;4621;:6;;4613:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;4679:1;4672:8;;;4507:181;;;;:::o;5861:471::-;5919:7;6169:1;6164;:6;6160:47;;6194:1;6187:8;;;;6160:47;6219:9;6235:1;6231;:5;;;;:::i;:::-;6219:17;;6264:1;6259;6255;:5;;;;:::i;:::-;:10;6247:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;6323:1;6316:8;;;5861:471;;;;;:::o;6808:132::-;6866:7;6893:39;6897:1;6900;6893:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;6886:46;;6808:132;;;;:::o;4971:136::-;5029:7;5056:43;5060:1;5063;5056:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;5049:50;;4971:136;;;;:::o;33221:441::-;33299:17;33319:6;;;;;;;;;;;:16;;;33344:4;33319:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33299:51;;33361:20;33384:5;33361:28;;33414:9;33404:7;:19;33400:181;;;33458:6;;;;;;;;;;;:15;;;33474:3;33479:9;33458:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33440:49;;33400:181;;;33540:6;;;;;;;;;;;:15;;;33556:3;33561:7;33540:29;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33522:47;;33400:181;33599:15;33591:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;33288:374;;33221:441;;:::o;17787:177::-;17870:86;17890:5;17920:23;;;17945:2;17949:5;17897:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17870:19;:86::i;:::-;17787:177;;;:::o;17972:205::-;18073:96;18093:5;18123:27;;;18152:4;18158:2;18162:5;18100:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18073:19;:96::i;:::-;17972:205;;;;:::o;7436:278::-;7522:7;7554:1;7550;:5;7557:12;7542:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;7581:9;7597:1;7593;:5;;;;:::i;:::-;7581:17;;7705:1;7698:8;;;7436:278;;;;;:::o;5410:192::-;5496:7;5529:1;5524;:6;;5532:12;5516:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5556:9;5572:1;5568;:5;;;;:::i;:::-;5556:17;;5593:1;5586:8;;;5410:192;;;;;:::o;20092:761::-;20516:23;20542:69;20570:4;20542:69;;;;;;;;;;;;;;;;;20550:5;20542:27;;;;:69;;;;;:::i;:::-;20516:95;;20646:1;20626:10;:17;:21;20622:224;;;20768:10;20757:30;;;;;;;;;;;;:::i;:::-;20749:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;20622:224;20162:691;20092:761;;:::o;12568:196::-;12671:12;12703:53;12726:6;12734:4;12740:1;12743:12;12703:22;:53::i;:::-;12696:60;;12568:196;;;;;:::o;13945:979::-;14075:12;14108:18;14119:6;14108:10;:18::i;:::-;14100:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;14234:12;14248:23;14275:6;:11;;14295:8;14306:4;14275:36;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14233:78;;;;14326:7;14322:595;;;14357:10;14350:17;;;;;;14322:595;14491:1;14471:10;:17;:21;14467:439;;;14734:10;14728:17;14795:15;14782:10;14778:2;14774:19;14767:44;14467:439;14877:12;14870:20;;;;;;;;;;;:::i;:::-;;;;;;;;13945:979;;;;;;;:::o;9650:422::-;9710:4;9918:12;10029:7;10017:20;10009:28;;10063:1;10056:4;:8;10049:15;;;9650:422;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;523:117::-;632:1;629;622:12;769:122;842:24;860:5;842:24;:::i;:::-;835:5;832:35;822:63;;881:1;878;871:12;822:63;769:122;:::o;897:139::-;943:5;981:6;968:20;959:29;;997:33;1024:5;997:33;:::i;:::-;897:139;;;;:::o;1042:329::-;1101:6;1150:2;1138:9;1129:7;1125:23;1121:32;1118:119;;;1156:79;;:::i;:::-;1118:119;1276:1;1301:53;1346:7;1337:6;1326:9;1322:22;1301:53;:::i;:::-;1291:63;;1247:117;1042:329;;;;:::o;1377:126::-;1414:7;1454:42;1447:5;1443:54;1432:65;;1377:126;;;:::o;1509:60::-;1537:3;1558:5;1551:12;;1509:60;;;:::o;1575:142::-;1625:9;1658:53;1676:34;1685:24;1703:5;1685:24;:::i;:::-;1676:34;:::i;:::-;1658:53;:::i;:::-;1645:66;;1575:142;;;:::o;1723:126::-;1773:9;1806:37;1837:5;1806:37;:::i;:::-;1793:50;;1723:126;;;:::o;1855:139::-;1918:9;1951:37;1982:5;1951:37;:::i;:::-;1938:50;;1855:139;;;:::o;2000:157::-;2100:50;2144:5;2100:50;:::i;:::-;2095:3;2088:63;2000:157;;:::o;2163:90::-;2197:7;2240:5;2233:13;2226:21;2215:32;;2163:90;;;:::o;2259:109::-;2340:21;2355:5;2340:21;:::i;:::-;2335:3;2328:34;2259:109;;:::o;2374:678::-;2586:4;2624:3;2613:9;2609:19;2601:27;;2638:84;2719:1;2708:9;2704:17;2695:6;2638:84;:::i;:::-;2732:72;2800:2;2789:9;2785:18;2776:6;2732:72;:::i;:::-;2814;2882:2;2871:9;2867:18;2858:6;2814:72;:::i;:::-;2896;2964:2;2953:9;2949:18;2940:6;2896:72;:::i;:::-;2978:67;3040:3;3029:9;3025:19;3016:6;2978:67;:::i;:::-;2374:678;;;;;;;;:::o;3058:96::-;3095:7;3124:24;3142:5;3124:24;:::i;:::-;3113:35;;3058:96;;;:::o;3160:109::-;3210:7;3239:24;3257:5;3239:24;:::i;:::-;3228:35;;3160:109;;;:::o;3275:148::-;3361:37;3392:5;3361:37;:::i;:::-;3354:5;3351:48;3341:76;;3413:1;3410;3403:12;3341:76;3275:148;:::o;3429:165::-;3488:5;3526:6;3513:20;3504:29;;3542:46;3582:5;3542:46;:::i;:::-;3429:165;;;;:::o;3600:116::-;3670:21;3685:5;3670:21;:::i;:::-;3663:5;3660:32;3650:60;;3706:1;3703;3696:12;3650:60;3600:116;:::o;3722:133::-;3765:5;3803:6;3790:20;3781:29;;3819:30;3843:5;3819:30;:::i;:::-;3722:133;;;;:::o;3861:639::-;3948:6;3956;3964;4013:2;4001:9;3992:7;3988:23;3984:32;3981:119;;;4019:79;;:::i;:::-;3981:119;4139:1;4164:53;4209:7;4200:6;4189:9;4185:22;4164:53;:::i;:::-;4154:63;;4110:117;4266:2;4292:66;4350:7;4341:6;4330:9;4326:22;4292:66;:::i;:::-;4282:76;;4237:131;4407:2;4433:50;4475:7;4466:6;4455:9;4451:22;4433:50;:::i;:::-;4423:60;;4378:115;3861:639;;;;;:::o;4506:148::-;4578:9;4611:37;4642:5;4611:37;:::i;:::-;4598:50;;4506:148;;;:::o;4660:175::-;4769:59;4822:5;4769:59;:::i;:::-;4764:3;4757:72;4660:175;;:::o;4841:266::-;4956:4;4994:2;4983:9;4979:18;4971:26;;5007:93;5097:1;5086:9;5082:17;5073:6;5007:93;:::i;:::-;4841:266;;;;:::o;5113:474::-;5181:6;5189;5238:2;5226:9;5217:7;5213:23;5209:32;5206:119;;;5244:79;;:::i;:::-;5206:119;5364:1;5389:53;5434:7;5425:6;5414:9;5410:22;5389:53;:::i;:::-;5379:63;;5335:117;5491:2;5517:53;5562:7;5553:6;5542:9;5538:22;5517:53;:::i;:::-;5507:63;;5462:118;5113:474;;;;;:::o;5593:613::-;5667:6;5675;5683;5732:2;5720:9;5711:7;5707:23;5703:32;5700:119;;;5738:79;;:::i;:::-;5700:119;5858:1;5883:53;5928:7;5919:6;5908:9;5904:22;5883:53;:::i;:::-;5873:63;;5829:117;5985:2;6011:53;6056:7;6047:6;6036:9;6032:22;6011:53;:::i;:::-;6001:63;;5956:118;6113:2;6139:50;6181:7;6172:6;6161:9;6157:22;6139:50;:::i;:::-;6129:60;;6084:115;5593:613;;;;;:::o;6212:122::-;6285:24;6303:5;6285:24;:::i;:::-;6278:5;6275:35;6265:63;;6324:1;6321;6314:12;6265:63;6212:122;:::o;6340:139::-;6386:5;6424:6;6411:20;6402:29;;6440:33;6467:5;6440:33;:::i;:::-;6340:139;;;;:::o;6485:474::-;6553:6;6561;6610:2;6598:9;6589:7;6585:23;6581:32;6578:119;;;6616:79;;:::i;:::-;6578:119;6736:1;6761:53;6806:7;6797:6;6786:9;6782:22;6761:53;:::i;:::-;6751:63;;6707:117;6863:2;6889:53;6934:7;6925:6;6914:9;6910:22;6889:53;:::i;:::-;6879:63;;6834:118;6485:474;;;;;:::o;6965:329::-;7024:6;7073:2;7061:9;7052:7;7048:23;7044:32;7041:119;;;7079:79;;:::i;:::-;7041:119;7199:1;7224:53;7269:7;7260:6;7249:9;7245:22;7224:53;:::i;:::-;7214:63;;7170:117;6965:329;;;;:::o;7300:118::-;7387:24;7405:5;7387:24;:::i;:::-;7382:3;7375:37;7300:118;;:::o;7424:222::-;7517:4;7555:2;7544:9;7540:18;7532:26;;7568:71;7636:1;7625:9;7621:17;7612:6;7568:71;:::i;:::-;7424:222;;;;:::o;7652:332::-;7773:4;7811:2;7800:9;7796:18;7788:26;;7824:71;7892:1;7881:9;7877:17;7868:6;7824:71;:::i;:::-;7905:72;7973:2;7962:9;7958:18;7949:6;7905:72;:::i;:::-;7652:332;;;;;:::o;7990:355::-;8062:6;8111:2;8099:9;8090:7;8086:23;8082:32;8079:119;;;8117:79;;:::i;:::-;8079:119;8237:1;8262:66;8320:7;8311:6;8300:9;8296:22;8262:66;:::i;:::-;8252:76;;8208:130;7990:355;;;;:::o;8351:210::-;8438:4;8476:2;8465:9;8461:18;8453:26;;8489:65;8551:1;8540:9;8536:17;8527:6;8489:65;:::i;:::-;8351:210;;;;:::o;8567:169::-;8651:11;8685:6;8680:3;8673:19;8725:4;8720:3;8716:14;8701:29;;8567:169;;;;:::o;8742:182::-;8882:34;8878:1;8870:6;8866:14;8859:58;8742:182;:::o;8930:366::-;9072:3;9093:67;9157:2;9152:3;9093:67;:::i;:::-;9086:74;;9169:93;9258:3;9169:93;:::i;:::-;9287:2;9282:3;9278:12;9271:19;;8930:366;;;:::o;9302:419::-;9468:4;9506:2;9495:9;9491:18;9483:26;;9555:9;9549:4;9545:20;9541:1;9530:9;9526:17;9519:47;9583:131;9709:4;9583:131;:::i;:::-;9575:139;;9302:419;;;:::o;9727:179::-;9867:31;9863:1;9855:6;9851:14;9844:55;9727:179;:::o;9912:366::-;10054:3;10075:67;10139:2;10134:3;10075:67;:::i;:::-;10068:74;;10151:93;10240:3;10151:93;:::i;:::-;10269:2;10264:3;10260:12;10253:19;;9912:366;;;:::o;10284:419::-;10450:4;10488:2;10477:9;10473:18;10465:26;;10537:9;10531:4;10527:20;10523:1;10512:9;10508:17;10501:47;10565:131;10691:4;10565:131;:::i;:::-;10557:139;;10284:419;;;:::o;10709:175::-;10849:27;10845:1;10837:6;10833:14;10826:51;10709:175;:::o;10890:366::-;11032:3;11053:67;11117:2;11112:3;11053:67;:::i;:::-;11046:74;;11129:93;11218:3;11129:93;:::i;:::-;11247:2;11242:3;11238:12;11231:19;;10890:366;;;:::o;11262:419::-;11428:4;11466:2;11455:9;11451:18;11443:26;;11515:9;11509:4;11505:20;11501:1;11490:9;11486:17;11479:47;11543:131;11669:4;11543:131;:::i;:::-;11535:139;;11262:419;;;:::o;11687:180::-;11735:77;11732:1;11725:88;11832:4;11829:1;11822:15;11856:4;11853:1;11846:15;11873:233;11912:3;11935:24;11953:5;11935:24;:::i;:::-;11926:33;;11981:66;11974:5;11971:77;11968:103;;12051:18;;:::i;:::-;11968:103;12098:1;12091:5;12087:13;12080:20;;11873:233;;;:::o;12112:181::-;12252:33;12248:1;12240:6;12236:14;12229:57;12112:181;:::o;12299:366::-;12441:3;12462:67;12526:2;12521:3;12462:67;:::i;:::-;12455:74;;12538:93;12627:3;12538:93;:::i;:::-;12656:2;12651:3;12647:12;12640:19;;12299:366;;;:::o;12671:419::-;12837:4;12875:2;12864:9;12860:18;12852:26;;12924:9;12918:4;12914:20;12910:1;12899:9;12895:17;12888:47;12952:131;13078:4;12952:131;:::i;:::-;12944:139;;12671:419;;;:::o;13096:161::-;13236:13;13232:1;13224:6;13220:14;13213:37;13096:161;:::o;13263:366::-;13405:3;13426:67;13490:2;13485:3;13426:67;:::i;:::-;13419:74;;13502:93;13591:3;13502:93;:::i;:::-;13620:2;13615:3;13611:12;13604:19;;13263:366;;;:::o;13635:419::-;13801:4;13839:2;13828:9;13824:18;13816:26;;13888:9;13882:4;13878:20;13874:1;13863:9;13859:17;13852:47;13916:131;14042:4;13916:131;:::i;:::-;13908:139;;13635:419;;;:::o;14060:168::-;14200:20;14196:1;14188:6;14184:14;14177:44;14060:168;:::o;14234:366::-;14376:3;14397:67;14461:2;14456:3;14397:67;:::i;:::-;14390:74;;14473:93;14562:3;14473:93;:::i;:::-;14591:2;14586:3;14582:12;14575:19;;14234:366;;;:::o;14606:419::-;14772:4;14810:2;14799:9;14795:18;14787:26;;14859:9;14853:4;14849:20;14845:1;14834:9;14830:17;14823:47;14887:131;15013:4;14887:131;:::i;:::-;14879:139;;14606:419;;;:::o;15031:143::-;15088:5;15119:6;15113:13;15104:22;;15135:33;15162:5;15135:33;:::i;:::-;15031:143;;;;:::o;15180:351::-;15250:6;15299:2;15287:9;15278:7;15274:23;15270:32;15267:119;;;15305:79;;:::i;:::-;15267:119;15425:1;15450:64;15506:7;15497:6;15486:9;15482:22;15450:64;:::i;:::-;15440:74;;15396:128;15180:351;;;;:::o;15537:332::-;15658:4;15696:2;15685:9;15681:18;15673:26;;15709:71;15777:1;15766:9;15762:17;15753:6;15709:71;:::i;:::-;15790:72;15858:2;15847:9;15843:18;15834:6;15790:72;:::i;:::-;15537:332;;;;;:::o;15875:180::-;15923:77;15920:1;15913:88;16020:4;16017:1;16010:15;16044:4;16041:1;16034:15;16061:225;16201:34;16197:1;16189:6;16185:14;16178:58;16270:8;16265:2;16257:6;16253:15;16246:33;16061:225;:::o;16292:366::-;16434:3;16455:67;16519:2;16514:3;16455:67;:::i;:::-;16448:74;;16531:93;16620:3;16531:93;:::i;:::-;16649:2;16644:3;16640:12;16633:19;;16292:366;;;:::o;16664:419::-;16830:4;16868:2;16857:9;16853:18;16845:26;;16917:9;16911:4;16907:20;16903:1;16892:9;16888:17;16881:47;16945:131;17071:4;16945:131;:::i;:::-;16937:139;;16664:419;;;:::o;17089:166::-;17229:18;17225:1;17217:6;17213:14;17206:42;17089:166;:::o;17261:366::-;17403:3;17424:67;17488:2;17483:3;17424:67;:::i;:::-;17417:74;;17500:93;17589:3;17500:93;:::i;:::-;17618:2;17613:3;17609:12;17602:19;;17261:366;;;:::o;17633:419::-;17799:4;17837:2;17826:9;17822:18;17814:26;;17886:9;17880:4;17876:20;17872:1;17861:9;17857:17;17850:47;17914:131;18040:4;17914:131;:::i;:::-;17906:139;;17633:419;;;:::o;18058:191::-;18098:3;18117:20;18135:1;18117:20;:::i;:::-;18112:25;;18151:20;18169:1;18151:20;:::i;:::-;18146:25;;18194:1;18191;18187:9;18180:16;;18215:3;18212:1;18209:10;18206:36;;;18222:18;;:::i;:::-;18206:36;18058:191;;;;:::o;18255:177::-;18395:29;18391:1;18383:6;18379:14;18372:53;18255:177;:::o;18438:366::-;18580:3;18601:67;18665:2;18660:3;18601:67;:::i;:::-;18594:74;;18677:93;18766:3;18677:93;:::i;:::-;18795:2;18790:3;18786:12;18779:19;;18438:366;;;:::o;18810:419::-;18976:4;19014:2;19003:9;18999:18;18991:26;;19063:9;19057:4;19053:20;19049:1;19038:9;19034:17;19027:47;19091:131;19217:4;19091:131;:::i;:::-;19083:139;;18810:419;;;:::o;19235:410::-;19275:7;19298:20;19316:1;19298:20;:::i;:::-;19293:25;;19332:20;19350:1;19332:20;:::i;:::-;19327:25;;19387:1;19384;19380:9;19409:30;19427:11;19409:30;:::i;:::-;19398:41;;19588:1;19579:7;19575:15;19572:1;19569:22;19549:1;19542:9;19522:83;19499:139;;19618:18;;:::i;:::-;19499:139;19283:362;19235:410;;;;:::o;19651:180::-;19699:77;19696:1;19689:88;19796:4;19793:1;19786:15;19820:4;19817:1;19810:15;19837:185;19877:1;19894:20;19912:1;19894:20;:::i;:::-;19889:25;;19928:20;19946:1;19928:20;:::i;:::-;19923:25;;19967:1;19957:35;;19972:18;;:::i;:::-;19957:35;20014:1;20011;20007:9;20002:14;;19837:185;;;;:::o;20028:220::-;20168:34;20164:1;20156:6;20152:14;20145:58;20237:3;20232:2;20224:6;20220:15;20213:28;20028:220;:::o;20254:366::-;20396:3;20417:67;20481:2;20476:3;20417:67;:::i;:::-;20410:74;;20493:93;20582:3;20493:93;:::i;:::-;20611:2;20606:3;20602:12;20595:19;;20254:366;;;:::o;20626:419::-;20792:4;20830:2;20819:9;20815:18;20807:26;;20879:9;20873:4;20869:20;20865:1;20854:9;20850:17;20843:47;20907:131;21033:4;20907:131;:::i;:::-;20899:139;;20626:419;;;:::o;21051:137::-;21105:5;21136:6;21130:13;21121:22;;21152:30;21176:5;21152:30;:::i;:::-;21051:137;;;;:::o;21194:345::-;21261:6;21310:2;21298:9;21289:7;21285:23;21281:32;21278:119;;;21316:79;;:::i;:::-;21278:119;21436:1;21461:61;21514:7;21505:6;21494:9;21490:22;21461:61;:::i;:::-;21451:71;;21407:125;21194:345;;;;:::o;21545:222::-;21685:34;21681:1;21673:6;21669:14;21662:58;21754:5;21749:2;21741:6;21737:15;21730:30;21545:222;:::o;21773:366::-;21915:3;21936:67;22000:2;21995:3;21936:67;:::i;:::-;21929:74;;22012:93;22101:3;22012:93;:::i;:::-;22130:2;22125:3;22121:12;22114:19;;21773:366;;;:::o;22145:419::-;22311:4;22349:2;22338:9;22334:18;22326:26;;22398:9;22392:4;22388:20;22384:1;22373:9;22369:17;22362:47;22426:131;22552:4;22426:131;:::i;:::-;22418:139;;22145:419;;;:::o;22570:442::-;22719:4;22757:2;22746:9;22742:18;22734:26;;22770:71;22838:1;22827:9;22823:17;22814:6;22770:71;:::i;:::-;22851:72;22919:2;22908:9;22904:18;22895:6;22851:72;:::i;:::-;22933;23001:2;22990:9;22986:18;22977:6;22933:72;:::i;:::-;22570:442;;;;;;:::o;23018:99::-;23070:6;23104:5;23098:12;23088:22;;23018:99;;;:::o;23123:139::-;23212:6;23207:3;23202;23196:23;23253:1;23244:6;23239:3;23235:16;23228:27;23123:139;;;:::o;23268:102::-;23309:6;23360:2;23356:7;23351:2;23344:5;23340:14;23336:28;23326:38;;23268:102;;;:::o;23376:377::-;23464:3;23492:39;23525:5;23492:39;:::i;:::-;23547:71;23611:6;23606:3;23547:71;:::i;:::-;23540:78;;23627:65;23685:6;23680:3;23673:4;23666:5;23662:16;23627:65;:::i;:::-;23717:29;23739:6;23717:29;:::i;:::-;23712:3;23708:39;23701:46;;23468:285;23376:377;;;;:::o;23759:313::-;23872:4;23910:2;23899:9;23895:18;23887:26;;23959:9;23953:4;23949:20;23945:1;23934:9;23930:17;23923:47;23987:78;24060:4;24051:6;23987:78;:::i;:::-;23979:86;;23759:313;;;;:::o;24078:194::-;24118:4;24138:20;24156:1;24138:20;:::i;:::-;24133:25;;24172:20;24190:1;24172:20;:::i;:::-;24167:25;;24216:1;24213;24209:9;24201:17;;24240:1;24234:4;24231:11;24228:37;;;24245:18;;:::i;:::-;24228:37;24078:194;;;;:::o;24278:229::-;24418:34;24414:1;24406:6;24402:14;24395:58;24487:12;24482:2;24474:6;24470:15;24463:37;24278:229;:::o;24513:366::-;24655:3;24676:67;24740:2;24735:3;24676:67;:::i;:::-;24669:74;;24752:93;24841:3;24752:93;:::i;:::-;24870:2;24865:3;24861:12;24854:19;;24513:366;;;:::o;24885:419::-;25051:4;25089:2;25078:9;25074:18;25066:26;;25138:9;25132:4;25128:20;25124:1;25113:9;25109:17;25102:47;25166:131;25292:4;25166:131;:::i;:::-;25158:139;;24885:419;;;:::o;25310:179::-;25450:31;25446:1;25438:6;25434:14;25427:55;25310:179;:::o;25495:366::-;25637:3;25658:67;25722:2;25717:3;25658:67;:::i;:::-;25651:74;;25734:93;25823:3;25734:93;:::i;:::-;25852:2;25847:3;25843:12;25836:19;;25495:366;;;:::o;25867:419::-;26033:4;26071:2;26060:9;26056:18;26048:26;;26120:9;26114:4;26110:20;26106:1;26095:9;26091:17;26084:47;26148:131;26274:4;26148:131;:::i;:::-;26140:139;;25867:419;;;:::o;26292:98::-;26343:6;26377:5;26371:12;26361:22;;26292:98;;;:::o;26396:147::-;26497:11;26534:3;26519:18;;26396:147;;;;:::o;26549:386::-;26653:3;26681:38;26713:5;26681:38;:::i;:::-;26735:88;26816:6;26811:3;26735:88;:::i;:::-;26728:95;;26832:65;26890:6;26885:3;26878:4;26871:5;26867:16;26832:65;:::i;:::-;26922:6;26917:3;26913:16;26906:23;;26657:278;26549:386;;;;:::o;26941:271::-;27071:3;27093:93;27182:3;27173:6;27093:93;:::i;:::-;27086:100;;27203:3;27196:10;;26941:271;;;;:::o
Swarm Source
ipfs://2733901580585703209d67c079f057a10e0d47eb97d4d4fc2fe3025325580dfa
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ 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.