Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 136 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Un Stake | 19620629 | 177 days ago | IN | 0 ETH | 0.00227379 | ||||
Claim Staking Re... | 19620626 | 177 days ago | IN | 0 ETH | 0.00251566 | ||||
Claim Staking Re... | 19396501 | 209 days ago | IN | 0 ETH | 0.00346484 | ||||
Claim Staking Re... | 19390174 | 209 days ago | IN | 0 ETH | 0.01286693 | ||||
Claim Staking Re... | 19387232 | 210 days ago | IN | 0 ETH | 0.00544605 | ||||
Claim Staking Re... | 19383534 | 210 days ago | IN | 0 ETH | 0.0048339 | ||||
Claim Staking Re... | 19383487 | 210 days ago | IN | 0 ETH | 0.00499987 | ||||
Claim Staking Re... | 19383449 | 210 days ago | IN | 0 ETH | 0.00373088 | ||||
Claim Staking Re... | 19383334 | 210 days ago | IN | 0 ETH | 0.00242529 | ||||
Claim Staking Re... | 19383330 | 210 days ago | IN | 0 ETH | 0.00352245 | ||||
Claim Staking Re... | 19383033 | 210 days ago | IN | 0 ETH | 0.00683157 | ||||
Claim Staking Re... | 19382687 | 210 days ago | IN | 0 ETH | 0.00540676 | ||||
Claim Staking Re... | 19367901 | 213 days ago | IN | 0 ETH | 0.00509552 | ||||
Claim Staking Re... | 19367865 | 213 days ago | IN | 0 ETH | 0.00506529 | ||||
Claim Staking Re... | 19367854 | 213 days ago | IN | 0 ETH | 0.00490551 | ||||
Claim Staking Re... | 19367845 | 213 days ago | IN | 0 ETH | 0.00722074 | ||||
Claim Staking Re... | 19360240 | 214 days ago | IN | 0 ETH | 0.00399856 | ||||
Claim Staking Re... | 19341935 | 216 days ago | IN | 0 ETH | 0.00653885 | ||||
Claim Staking Re... | 19341798 | 216 days ago | IN | 0 ETH | 0.00950072 | ||||
Pause | 19341709 | 216 days ago | IN | 0 ETH | 0.00204829 | ||||
Transfer | 19341664 | 216 days ago | IN | 0.81679601 ETH | 0.00523675 | ||||
Claim Staking Re... | 19340739 | 216 days ago | IN | 0 ETH | 0.00665317 | ||||
Un Stake | 19288406 | 224 days ago | IN | 0 ETH | 0.00884708 | ||||
Claim Staking Re... | 19214090 | 234 days ago | IN | 0 ETH | 0.00502984 | ||||
Stake | 19203024 | 236 days ago | IN | 0 ETH | 0.00884019 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
19620626 | 177 days ago | 0.01104367 ETH | ||||
19396501 | 209 days ago | 0.07251187 ETH | ||||
19390174 | 209 days ago | 0.04925189 ETH | ||||
19387232 | 210 days ago | 0.05359883 ETH | ||||
19383534 | 210 days ago | 0.07610774 ETH | ||||
19383487 | 210 days ago | 0.09810755 ETH | ||||
19383449 | 210 days ago | 0.0853144 ETH | ||||
19383330 | 210 days ago | 0.09386639 ETH | ||||
19383033 | 210 days ago | 0.04915556 ETH | ||||
19382687 | 210 days ago | 0.05225385 ETH | ||||
19367901 | 213 days ago | 0.05586057 ETH | ||||
19367865 | 213 days ago | 0.08778156 ETH | ||||
19367854 | 213 days ago | 0.05813422 ETH | ||||
19367845 | 213 days ago | 0.08192589 ETH | ||||
19360240 | 214 days ago | 0.05821457 ETH | ||||
19341935 | 216 days ago | 0.10188252 ETH | ||||
19341798 | 216 days ago | 0.05169478 ETH | ||||
19340739 | 216 days ago | 0.14008436 ETH | ||||
19288406 | 224 days ago | 0.03481137 ETH | ||||
19214090 | 234 days ago | 0.11062269 ETH | ||||
19142296 | 244 days ago | 0.08633327 ETH | ||||
19141717 | 244 days ago | 0.01685029 ETH | ||||
19141214 | 244 days ago | 0.00474919 ETH | ||||
19140648 | 244 days ago | 0.00713466 ETH | ||||
19113861 | 248 days ago | 0.10854256 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
DesmeStaking
Compiler Version
v0.8.23+commit.f704f362
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-11-29 */ // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts (last updated v5.0.0) (utils/Context.sol) pragma solidity ^0.8.20; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/utils/Pausable.sol // OpenZeppelin Contracts (last updated v5.0.0) (utils/Pausable.sol) pragma solidity ^0.8.20; /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ abstract contract Pausable is Context { bool private _paused; /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); /** * @dev The operation failed because the contract is paused. */ error EnforcedPause(); /** * @dev The operation failed because the contract is not paused. */ error ExpectedPause(); /** * @dev Initializes the contract in unpaused state. */ constructor() { _paused = false; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { _requireNotPaused(); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { _requirePaused(); _; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view virtual returns (bool) { return _paused; } /** * @dev Throws if the contract is paused. */ function _requireNotPaused() internal view virtual { if (paused()) { revert EnforcedPause(); } } /** * @dev Throws if the contract is not paused. */ function _requirePaused() internal view virtual { if (!paused()) { revert ExpectedPause(); } } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol) pragma solidity ^0.8.20; /** * @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. * * The initial owner is set to the address provided by the deployer. This can * later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; /** * @dev The caller account is not authorized to perform an operation. */ error OwnableUnauthorizedAccount(address account); /** * @dev The owner is not a valid owner account. (eg. `address(0)`) */ error OwnableInvalidOwner(address owner); event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev Initializes the contract setting the address provided by the deployer as the initial owner. */ constructor(address initialOwner) { if (initialOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(initialOwner); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { if (owner() != _msgSender()) { revert OwnableUnauthorizedAccount(_msgSender()); } } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { if (newOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.20; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval( address indexed owner, address indexed spender, uint256 value ); /** * @dev Returns the value of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the value of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves a `value` amount of tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 value) 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 a `value` amount of tokens 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 value) external returns (bool); /** * @dev Moves a `value` amount of tokens from `from` to `to` using the * allowance mechanism. `value` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 value ) external returns (bool); } //SPDX-License-Identifier: MIT interface IERC20EXT { function decimals() external view returns (uint8); } struct StructAccount { address selfAddress; uint256 totalValueStaked; uint256 stakingRewardsClaimed; uint256 pendingStakingRewards; uint256[] stakingIds; } struct StructStaking { bool isActive; address owner; uint256 stakingId; uint256 valueStaked; uint256 startTime; uint256 stakingRewardClaimed; uint256 initialRewards; uint256 calStartTime; } contract DesmeStaking is Ownable, Pausable { address[] private _users; uint256 private _totalStakingRewardsDistributed; uint256 private _stakingsCount; uint256 private _calStakingReward; uint256 private _valueStaked; uint256 private _lastTimeRewardDistributed; uint256 private _carryForwardBalance; address private _tokenAddress; bool private _noReentrancy; mapping(address => StructAccount) private _mappingAccounts; mapping(uint256 => StructStaking) private _mappingStakings; event SelfAddressUpdated(address newAddress); event Stake(uint256 value, uint256 stakingId); event UnStake(uint256 value); event ClaimedStakingReward(uint256 value); event DistributeStakingReward(uint256 value); event ClaimCarryForwardBalance(address receiver, uint256 value); event ContractPaused(bool isPaused); modifier noReentrancy() { require(!_noReentrancy, "Reentrancy attack."); _noReentrancy = true; _; _noReentrancy = false; } receive() external payable { distributeStakingRewards(); } constructor(address initialOwner) Ownable(initialOwner) { uint256 currentTime = block.timestamp; _lastTimeRewardDistributed = currentTime; } function _updateUserAddress( StructAccount storage _userAccount, address _userAddress ) private { _userAccount.selfAddress = _userAddress; emit SelfAddressUpdated(_userAddress); } function _updateCalStakingReward( StructStaking storage stakingAccount, uint256 _value ) private { if (_calStakingReward > 0) { uint256 stakingReward = (_calStakingReward * _value) / _valueStaked; stakingAccount.initialRewards += stakingReward; _calStakingReward += stakingReward; } } function _stake(address _userAddress, uint256 _value) private { require( _userAddress != address(0), "_stake(): AddressZero cannot stake." ); require(_value > 0, "_stake(): Value should be greater than zero."); StructAccount storage userAccount = _mappingAccounts[_userAddress]; uint256 currentStakingId = _stakingsCount; if (userAccount.selfAddress == address(0)) { _updateUserAddress(userAccount, _userAddress); _users.push(_userAddress); } userAccount.stakingIds.push(currentStakingId); userAccount.totalValueStaked += _value; StructStaking storage stakingAccount = _mappingStakings[ currentStakingId ]; stakingAccount.isActive = true; stakingAccount.owner = _userAddress; stakingAccount.stakingId = currentStakingId; stakingAccount.valueStaked = _value; stakingAccount.startTime = block.timestamp; stakingAccount.calStartTime = _lastTimeRewardDistributed; _updateCalStakingReward(stakingAccount, _value); _valueStaked += _value; _stakingsCount++; emit Stake(_value, currentStakingId); } function stake(address _userAddress, uint256 _valueInWei) external whenNotPaused { bool sent = IERC20(_tokenAddress).transferFrom( msg.sender, address(this), _toTokens(_tokenAddress, _valueInWei) ); require(sent, "unStake(): Tokens not transfered"); _stake(_userAddress, _valueInWei); } function _getStakingRewardsById(StructStaking memory stakingAccount) private view returns ( uint256 userStakingReward, uint256 rewardClaimable, uint256 carryForwardBalance ) { if ( _calStakingReward > 0 && stakingAccount.isActive && stakingAccount.calStartTime < _lastTimeRewardDistributed ) { userStakingReward = ((_calStakingReward * stakingAccount.valueStaked) / _valueStaked) - (stakingAccount.stakingRewardClaimed + stakingAccount.initialRewards); if (userStakingReward > 0) { carryForwardBalance = ((userStakingReward * (stakingAccount.startTime - stakingAccount.calStartTime)) / (_lastTimeRewardDistributed - stakingAccount.calStartTime)); rewardClaimable = userStakingReward - carryForwardBalance; } } } function getStakingRewardsById(uint256 _stakingId) external view returns ( uint256 userStakingReward, uint256 rewardClaimable, uint256 carryForwardBalance ) { return _getStakingRewardsById(_mappingStakings[_stakingId]); } function _getUserAllStakingRewards(StructAccount memory userAccount) private view returns ( uint256 userTotalStakingReward, uint256 totalRewardClaimable, uint256 totalCarryForwardBalance ) { uint256[] memory userStakingIds = userAccount.stakingIds; for (uint256 i; i < userStakingIds.length; ++i) { StructStaking memory stakingAccount = _mappingStakings[ userStakingIds[i] ]; if (stakingAccount.isActive) { ( uint256 userStakingReward, uint256 rewardClaimable, uint256 carryForwardBalance ) = _getStakingRewardsById(stakingAccount); userTotalStakingReward += userStakingReward; totalRewardClaimable += rewardClaimable; totalCarryForwardBalance += carryForwardBalance; } } } function getUserStakingRewards(address _userAddress) external view returns ( uint256 userTotalStakingReward, uint256 rewardClaimable, uint256 carryForwardBalance ) { StructAccount memory userAccount = _mappingAccounts[_userAddress]; return _getUserAllStakingRewards(userAccount); } function _claimUserStakingReward(address _userAddress) private returns (uint256 totalRewardClaimable, uint256 totalCarryForwardBalance) { StructAccount storage userAccount = _mappingAccounts[_userAddress]; require( userAccount.stakingIds.length > 0, "_claimStakingReward(): You have no stakings" ); for (uint256 i; i < userAccount.stakingIds.length; ++i) { StructStaking storage stakingAccount = _mappingStakings[ userAccount.stakingIds[i] ]; require( stakingAccount.owner == _userAddress, "You are not the owner of this staking." ); if (stakingAccount.isActive) { ( , uint256 rewardClaimable, uint256 carryForwardBalance ) = _getStakingRewardsById(stakingAccount); if (rewardClaimable > 0) { stakingAccount.stakingRewardClaimed += rewardClaimable; totalRewardClaimable += rewardClaimable; } if (carryForwardBalance > 0) { stakingAccount.initialRewards += carryForwardBalance; totalCarryForwardBalance += carryForwardBalance; } } } if (totalRewardClaimable > 0) { userAccount.stakingRewardsClaimed += totalRewardClaimable; _carryForwardBalance += totalCarryForwardBalance; emit ClaimedStakingReward(totalRewardClaimable); } } function claimStakingReward(address _userAddress) external noReentrancy { (uint256 rewardClaimable, ) = _claimUserStakingReward(_userAddress); require( rewardClaimable > 0, "_claimUserStakingReward(): No rewards to claim." ); uint256 ethBalanceThis = address(this).balance; require( ethBalanceThis >= rewardClaimable, "claimStakingReward(): Contract has less balance to pay." ); (bool status, ) = payable(_userAddress).call{value: rewardClaimable}( "" ); require(status, "claimStakingReward(): Reward ETH Not transfered."); } function _unStake(address _userAddress) private returns (uint256 tokenUnStaked, uint256 stakingRewardClaimed) { StructAccount storage userAccount = _mappingAccounts[_userAddress]; require( userAccount.stakingIds.length > 0, "_claimStakingReward(): You have no stakings" ); (uint256 rewardClaimable, ) = _claimUserStakingReward(_userAddress); if (rewardClaimable > 0) { stakingRewardClaimed += rewardClaimable; } userAccount.totalValueStaked = 0; uint256 calRewards; for (uint256 i; i < userAccount.stakingIds.length; ++i) { StructStaking storage stakingAccount = _mappingStakings[ userAccount.stakingIds[i] ]; require( stakingAccount.owner == _userAddress, "You are not the owner of this staking." ); if (stakingAccount.isActive) { stakingAccount.isActive = false; tokenUnStaked += stakingAccount.valueStaked; calRewards += stakingAccount.stakingRewardClaimed; calRewards += stakingAccount.initialRewards; } } require(tokenUnStaked > 0, "_unstake(): No value to unStake."); _calStakingReward -= calRewards; _valueStaked -= tokenUnStaked; emit UnStake(tokenUnStaked); } function unStake() external { address msgSender = msg.sender; (uint256 tokenUnStaked, uint256 stakingRewardClaimed) = _unStake( msgSender ); if (tokenUnStaked > 0) { bool sent = IERC20(_tokenAddress).transfer( msgSender, _toTokens(_tokenAddress, tokenUnStaked) ); require(sent, "unStake(): Tokens not transfered"); } if (stakingRewardClaimed > 0) { (bool status, ) = payable(msgSender).call{ value: stakingRewardClaimed }(""); require(status, "unstake(): Reward not transfered."); } } function distributeStakingRewards() public payable { uint256 msgValue = msg.value; require( msgValue > 0, "distributeStakingRewards(): Reward must be greater than zero." ); if (_carryForwardBalance > 0) { msgValue += _carryForwardBalance; delete _carryForwardBalance; } _calStakingReward += msgValue; _lastTimeRewardDistributed = block.timestamp; _totalStakingRewardsDistributed += msgValue; emit DistributeStakingReward(msgValue); } function getUsersParticipatedList() external view returns (address[] memory) { return _users; } function getUserShare(address _userAddress) external view returns (uint256 userShare) { StructAccount memory userAccount = _mappingAccounts[_userAddress]; userShare = (userAccount.totalValueStaked * 100 * 1 ether) / _valueStaked; } function getContractDefault() external view returns (address tokenAddress) { tokenAddress = _tokenAddress; } function setTokenAddress(address tokenAddress_) external onlyOwner { _tokenAddress = tokenAddress_; } function getContractAnalytics() external view returns ( uint256 usersCount, uint256 stakingsCount, uint256 totalStakingRewardsDistributed, uint256 calStakingReward, uint256 valueStaked, uint256 lastTimeRewardDistributed, uint256 carryForwardBalance ) { usersCount = _users.length; stakingsCount = _stakingsCount; totalStakingRewardsDistributed = _totalStakingRewardsDistributed; calStakingReward = _calStakingReward; valueStaked = _valueStaked; lastTimeRewardDistributed = _lastTimeRewardDistributed; carryForwardBalance = _carryForwardBalance; } function getUserAccount(address _userAddress) external view returns (StructAccount memory) { return _mappingAccounts[_userAddress]; } function getStakingById(uint256 _stakingId) external view returns (StructStaking memory) { return _mappingStakings[_stakingId]; } function _toTokens(address tokenAddress_, uint256 _valueInWei) private view returns (uint256 valueInTokens) { valueInTokens = (_valueInWei * 10**IERC20EXT(tokenAddress_).decimals()) / 1 ether; } function _toWei(address _tokenAddress_, uint256 _valueInTokens) private view returns (uint256 valueInWei) { valueInWei = (_valueInTokens * 1 ether) / 10**IERC20EXT(_tokenAddress_).decimals(); } function claimCarryForwardBalance(address _userAddress) external onlyOwner { uint256 carryForwardBalance = _carryForwardBalance; require( carryForwardBalance > 0, "claimCarryForwardBalance(): Balance must be above zero." ); (bool sent, ) = payable(_userAddress).call{value: carryForwardBalance}( "" ); require(sent, "claimCarryForwardBalance(): ETH Not transfered."); delete _carryForwardBalance; emit ClaimCarryForwardBalance(_userAddress, carryForwardBalance); } function pause() public onlyOwner { _pause(); } function unpause() public onlyOwner { _unpause(); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"EnforcedPause","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"ClaimCarryForwardBalance","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"ClaimedStakingReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"isPaused","type":"bool"}],"name":"ContractPaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"DistributeStakingReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newAddress","type":"address"}],"name":"SelfAddressUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"stakingId","type":"uint256"}],"name":"Stake","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"UnStake","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address","name":"_userAddress","type":"address"}],"name":"claimCarryForwardBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_userAddress","type":"address"}],"name":"claimStakingReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"distributeStakingRewards","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getContractAnalytics","outputs":[{"internalType":"uint256","name":"usersCount","type":"uint256"},{"internalType":"uint256","name":"stakingsCount","type":"uint256"},{"internalType":"uint256","name":"totalStakingRewardsDistributed","type":"uint256"},{"internalType":"uint256","name":"calStakingReward","type":"uint256"},{"internalType":"uint256","name":"valueStaked","type":"uint256"},{"internalType":"uint256","name":"lastTimeRewardDistributed","type":"uint256"},{"internalType":"uint256","name":"carryForwardBalance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getContractDefault","outputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_stakingId","type":"uint256"}],"name":"getStakingById","outputs":[{"components":[{"internalType":"bool","name":"isActive","type":"bool"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"stakingId","type":"uint256"},{"internalType":"uint256","name":"valueStaked","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"stakingRewardClaimed","type":"uint256"},{"internalType":"uint256","name":"initialRewards","type":"uint256"},{"internalType":"uint256","name":"calStartTime","type":"uint256"}],"internalType":"struct StructStaking","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_stakingId","type":"uint256"}],"name":"getStakingRewardsById","outputs":[{"internalType":"uint256","name":"userStakingReward","type":"uint256"},{"internalType":"uint256","name":"rewardClaimable","type":"uint256"},{"internalType":"uint256","name":"carryForwardBalance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_userAddress","type":"address"}],"name":"getUserAccount","outputs":[{"components":[{"internalType":"address","name":"selfAddress","type":"address"},{"internalType":"uint256","name":"totalValueStaked","type":"uint256"},{"internalType":"uint256","name":"stakingRewardsClaimed","type":"uint256"},{"internalType":"uint256","name":"pendingStakingRewards","type":"uint256"},{"internalType":"uint256[]","name":"stakingIds","type":"uint256[]"}],"internalType":"struct StructAccount","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_userAddress","type":"address"}],"name":"getUserShare","outputs":[{"internalType":"uint256","name":"userShare","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_userAddress","type":"address"}],"name":"getUserStakingRewards","outputs":[{"internalType":"uint256","name":"userTotalStakingReward","type":"uint256"},{"internalType":"uint256","name":"rewardClaimable","type":"uint256"},{"internalType":"uint256","name":"carryForwardBalance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUsersParticipatedList","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress_","type":"address"}],"name":"setTokenAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_userAddress","type":"address"},{"internalType":"uint256","name":"_valueInWei","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unStake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405234801562000010575f80fd5b5060405162001fa938038062001fa98339810160408190526200003391620000d4565b806001600160a01b0381166200006257604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6200006d8162000085565b50505f805460ff60a01b191690554260065562000103565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f60208284031215620000e5575f80fd5b81516001600160a01b0381168114620000fc575f80fd5b9392505050565b611e9880620001115f395ff3fe60806040526004361061011e575f3560e01c806383b41e661161009d578063adc9772e11610062578063adc9772e14610397578063bbbaee4c146103b6578063f2fde38b146103e3578063f4da319914610402578063fb47e01614610421575f80fd5b806383b41e661461026a5780638456cb59146102c05780638da5cb5b146102d45780639e5d9cd2146102f0578063a0e3f8f214610311575f80fd5b806340cba8a0116100e357806340cba8a0146101dc57806350aee08d146101fb5780635c975abb1461021a578063715018a61461024257806373cf575a14610256575f80fd5b80630adc0c2c1461013157806323ca0eb01461017057806326a4e8d214610178578063309a8f8d146101975780633f4ba83a146101c8575f80fd5b3661012d5761012b61044d565b005b5f80fd5b34801561013c575f80fd5b5061015061014b366004611ac3565b61054b565b604080519384526020840192909252908201526060015b60405180910390f35b61012b61044d565b348015610183575f80fd5b5061012b610192366004611af5565b6105d8565b3480156101a2575f80fd5b506008546001600160a01b03165b6040516001600160a01b039091168152602001610167565b3480156101d3575f80fd5b5061012b610602565b3480156101e7575f80fd5b5061012b6101f6366004611af5565b610614565b348015610206575f80fd5b5061012b610215366004611af5565b610794565b348015610225575f80fd5b505f54600160a01b900460ff166040519015158152602001610167565b34801561024d575f80fd5b5061012b6109ac565b348015610261575f80fd5b5061012b6109bd565b348015610275575f80fd5b50600154600354600254600454600554600654600754604080519788526020880196909652948601939093526060850191909152608084015260a083015260c082015260e001610167565b3480156102cb575f80fd5b5061012b610b65565b3480156102df575f80fd5b505f546001600160a01b03166101b0565b3480156102fb575f80fd5b50610304610b75565b6040516101679190611b0e565b34801561031c575f80fd5b5061033061032b366004611ac3565b610bd5565b60405161016791908151151581526020808301516001600160a01b03169082015260408083015190820152606080830151908201526080808301519082015260a0808301519082015260c0808301519082015260e091820151918101919091526101000190565b3480156103a2575f80fd5b5061012b6103b1366004611b5a565b610c99565b3480156103c1575f80fd5b506103d56103d0366004611af5565b610d8e565b604051908152602001610167565b3480156103ee575f80fd5b5061012b6103fd366004611af5565b610e69565b34801561040d575f80fd5b5061015061041c366004611af5565b610ea6565b34801561042c575f80fd5b5061044061043b366004611af5565b610f63565b6040516101679190611b82565b34806104c65760405162461bcd60e51b815260206004820152603d60248201527f646973747269627574655374616b696e675265776172647328293a205265776160448201527f7264206d7573742062652067726561746572207468616e207a65726f2e00000060648201526084015b60405180910390fd5b600754156104e2576007546104db9082611c16565b5f60075590505b8060045f8282546104f39190611c16565b909155505042600655600280548291905f90610510908490611c16565b90915550506040518181527fcb85a20151ba0100ff8fdc798814296495ac8af2552b7fb99ce1da63e5d94be89060200160405180910390a150565b5f818152600a6020908152604080832081516101008082018452825460ff811615158352046001600160a01b0316938101939093526001810154918301919091526002810154606083015260038101546080830152600481015460a0830152600581015460c08301526006015460e0820152819081906105ca9061103d565b9250925092505b9193909250565b6105e06110f9565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b61060a6110f9565b610612611125565b565b61061c6110f9565b600754806106925760405162461bcd60e51b815260206004820152603760248201527f636c61696d4361727279466f727761726442616c616e636528293a2042616c6160448201527f6e6365206d7573742062652061626f7665207a65726f2e00000000000000000060648201526084016104bd565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146106db576040519150601f19603f3d011682016040523d82523d5f602084013e6106e0565b606091505b50509050806107495760405162461bcd60e51b815260206004820152602f60248201527f636c61696d4361727279466f727761726442616c616e636528293a204554482060448201526e2737ba103a3930b739b332b932b21760891b60648201526084016104bd565b5f600755604080516001600160a01b0385168152602081018490527f7f2ae5ea0eceace153024cb17f16195815248fdcf2bac0507608a46c90da53d7910160405180910390a1505050565b600854600160a01b900460ff16156107e35760405162461bcd60e51b81526020600482015260126024820152712932b2b73a3930b731bc9030ba3a30b1b59760711b60448201526064016104bd565b6008805460ff60a01b1916600160a01b1790555f61080082611179565b5090505f811161086a5760405162461bcd60e51b815260206004820152602f60248201527f5f636c61696d557365725374616b696e6752657761726428293a204e6f20726560448201526e3bb0b93239903a379031b630b4b69760891b60648201526084016104bd565b47818110156108e15760405162461bcd60e51b815260206004820152603760248201527f636c61696d5374616b696e6752657761726428293a20436f6e7472616374206860448201527f6173206c6573732062616c616e636520746f207061792e00000000000000000060648201526084016104bd565b5f836001600160a01b0316836040515f6040518083038185875af1925050503d805f811461092a576040519150601f19603f3d011682016040523d82523d5f602084013e61092f565b606091505b50509050806109995760405162461bcd60e51b815260206004820152603060248201527f636c61696d5374616b696e6752657761726428293a205265776172642045544860448201526f102737ba103a3930b739b332b932b21760811b60648201526084016104bd565b50506008805460ff60a01b191690555050565b6109b46110f9565b6106125f61138f565b335f806109c9836113de565b90925090508115610aaf576008545f906001600160a01b031663a9059cbb856109f283876115d1565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015610a3a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a5e9190611c2f565b905080610aad5760405162461bcd60e51b815260206004820181905260248201527f756e5374616b6528293a20546f6b656e73206e6f74207472616e73666572656460448201526064016104bd565b505b8015610b60575f836001600160a01b0316826040515f6040518083038185875af1925050503d805f8114610afe576040519150601f19603f3d011682016040523d82523d5f602084013e610b03565b606091505b5050905080610b5e5760405162461bcd60e51b815260206004820152602160248201527f756e7374616b6528293a20526577617264206e6f74207472616e7366657265646044820152601760f91b60648201526084016104bd565b505b505050565b610b6d6110f9565b610612611650565b60606001805480602002602001604051908101604052809291908181526020018280548015610bcb57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610bad575b5050505050905090565b610c206040518061010001604052805f151581526020015f6001600160a01b031681526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b505f908152600a602090815260409182902082516101008082018552825460ff811615158352046001600160a01b0316928101929092526001810154928201929092526002820154606082015260038201546080820152600482015460a0820152600582015460c082015260069091015460e082015290565b610ca1611692565b6008545f906001600160a01b03166323b872dd3330610cc084876115d1565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303815f875af1158015610d11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d359190611c2f565b905080610d845760405162461bcd60e51b815260206004820181905260248201527f756e5374616b6528293a20546f6b656e73206e6f74207472616e73666572656460448201526064016104bd565b610b6083836116bc565b6001600160a01b038082165f908152600960209081526040808320815160a08101835281549095168552600181015485840152600281015485830152600381015460608601526004810180548351818602810186019094528084529495869590949293608086019390929190830182828015610e2757602002820191905f5260205f20905b815481526020019060010190808311610e13575b505050505081525050905060055481602001516064610e469190611c4e565b610e5890670de0b6b3a7640000611c4e565b610e629190611c65565b9392505050565b610e716110f9565b6001600160a01b038116610e9a57604051631e4fbdf760e01b81525f60048201526024016104bd565b610ea38161138f565b50565b6001600160a01b038082165f908152600960209081526040808320815160a081018352815490951685526001810154858401526002810154858301526003810154606086015260048101805483518186028101860190945280845294958695869586959294936080860193929091830182828015610f4157602002820191905f5260205f20905b815481526020019060010190808311610f2d575b5050505050815250509050610f55816118ec565b935093509350509193909250565b610f9a6040518060a001604052805f6001600160a01b031681526020015f81526020015f81526020015f8152602001606081525090565b6001600160a01b038083165f90815260096020908152604091829020825160a08101845281549094168452600181015484830152600281015484840152600381015460608501526004810180548451818502810185019095528085529193608086019390929083018282801561102d57602002820191905f5260205f20905b815481526020019060010190808311611019575b5050505050815250509050919050565b5f805f8060045411801561104f575083515b801561106057506006548460e00151105b156105d1578360c001518460a001516110799190611c16565b600554856060015160045461108e9190611c4e565b6110989190611c65565b6110a29190611c84565b925082156105d1578360e001516006546110bc9190611c84565b8460e0015185608001516110d09190611c84565b6110da9085611c4e565b6110e49190611c65565b90506110f08184611c84565b91509193909250565b5f546001600160a01b031633146106125760405163118cdaa760e01b81523360048201526024016104bd565b61112d6119ec565b5f805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b0381165f90815260096020526040812060048101548291906111b45760405162461bcd60e51b81526004016104bd90611c97565b5f5b600482015481101561131e575f600a5f8460040184815481106111db576111db611ce2565b905f5260205f20015481526020019081526020015f209050856001600160a01b0316815f0160019054906101000a90046001600160a01b03166001600160a01b03161461123a5760405162461bcd60e51b81526004016104bd90611cf6565b805460ff161561131557604080516101008082018352835460ff811615158352046001600160a01b031660208201526001830154918101919091526002820154606082015260038201546080820152600482015460a0820152600582015460c0820152600682015460e08201525f9081906112b49061103d565b90935091505081156112e65781836004015f8282546112d39190611c16565b909155506112e390508288611c16565b96505b80156113125780836005015f8282546112ff9190611c16565b9091555061130f90508187611c16565b95505b50505b506001016111b6565b5082156113895782816002015f8282546113389190611c16565b925050819055508160075f8282546113509190611c16565b90915550506040518381527fa8c6b8e354c4fcddb94967f79e85ec5a2b27add43447bd915f479e684e8a20499060200160405180910390a15b50915091565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381165f90815260096020526040812060048101548291906114195760405162461bcd60e51b81526004016104bd90611c97565b5f61142385611179565b5090508015611439576114368184611c16565b92505b5f60018301819055805b6004840154811015611518575f600a5f86600401848154811061146857611468611ce2565b905f5260205f20015481526020019081526020015f209050876001600160a01b0316815f0160019054906101000a90046001600160a01b03166001600160a01b0316146114c75760405162461bcd60e51b81526004016104bd90611cf6565b805460ff161561150f57805460ff1916815560028101546114e89088611c16565b96508060040154836114fa9190611c16565b925080600501548361150c9190611c16565b92505b50600101611443565b505f85116115685760405162461bcd60e51b815260206004820181905260248201527f5f756e7374616b6528293a204e6f2076616c756520746f20756e5374616b652e60448201526064016104bd565b8060045f8282546115799190611c84565b925050819055508460055f8282546115919190611c84565b90915550506040518581527f603af6cb36e852311201ebb828cda2d49c5dc06d9d14a04ecd5e4211308625aa9060200160405180910390a1505050915091565b5f670de0b6b3a7640000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611617573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061163b9190611d3c565b61164690600a611e3c565b610e589084611c4e565b611658611692565b5f805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861115c3390565b5f54600160a01b900460ff16156106125760405163d93c066560e01b815260040160405180910390fd5b6001600160a01b03821661171e5760405162461bcd60e51b815260206004820152602360248201527f5f7374616b6528293a20416464726573735a65726f2063616e6e6f742073746160448201526235b29760e91b60648201526084016104bd565b5f81116117825760405162461bcd60e51b815260206004820152602c60248201527f5f7374616b6528293a2056616c75652073686f756c642062652067726561746560448201526b39103a3430b7103d32b9379760a11b60648201526084016104bd565b6001600160a01b038083165f908152600960205260409020600354815491929091166117fc576117b28285611a15565b6001805480820182555f919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b0386161790555b600482018054600181810183555f9283526020832090910183905583018054859290611829908490611c16565b90915550505f818152600a60205260409020805460016001600160a81b03199091166101006001600160a01b03881602178117825581018290556002810184905542600382015560068054908201556118828185611a67565b8360055f8282546118939190611c16565b909155505060038054905f6118a783611e4a565b909155505060408051858152602081018490527fc9ec05ea5037818736839e1365dc3d9a74a735c447af0697da66633b7a9d0fab910160405180910390a15050505050565b5f805f80846080015190505f5b81518110156119e3575f600a5f84848151811061191857611918611ce2565b60209081029190910181015182528181019290925260409081015f2081516101008082018452825460ff811615801584529190046001600160a01b0316948201949094526001820154928101929092526002810154606083015260038101546080830152600481015460a0830152600581015460c08301526006015460e082015291506119da575f805f6119ab8461103d565b919450925090506119bc838a611c16565b98506119c88289611c16565b97506119d48188611c16565b96505050505b506001016118f9565b50509193909250565b5f54600160a01b900460ff1661061257604051638dfc202b60e01b815260040160405180910390fd5b81546001600160a01b0319166001600160a01b03821690811783556040519081527f3b819cfb39116b78a5d1267e92ab85058e96d63a7882322d296ab4135720b79a9060200160405180910390a15050565b60045415611abf575f60055482600454611a819190611c4e565b611a8b9190611c65565b905080836005015f828254611aa09190611c16565b925050819055508060045f828254611ab89190611c16565b9091555050505b5050565b5f60208284031215611ad3575f80fd5b5035919050565b80356001600160a01b0381168114611af0575f80fd5b919050565b5f60208284031215611b05575f80fd5b610e6282611ada565b602080825282518282018190525f9190848201906040850190845b81811015611b4e5783516001600160a01b031683529284019291840191600101611b29565b50909695505050505050565b5f8060408385031215611b6b575f80fd5b611b7483611ada565b946020939093013593505050565b5f602080835260c0830160018060a01b03855116828501528185015160408501526040850151606085015260608501516080850152608085015160a08086015281815180845260e08701915084830193505f92505b80831015611bf75783518252928401926001929092019190840190611bd7565b509695505050505050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115611c2957611c29611c02565b92915050565b5f60208284031215611c3f575f80fd5b81518015158114610e62575f80fd5b8082028115828204841417611c2957611c29611c02565b5f82611c7f57634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115611c2957611c29611c02565b6020808252602b908201527f5f636c61696d5374616b696e6752657761726428293a20596f7520686176652060408201526a6e6f207374616b696e677360a81b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b60208082526026908201527f596f7520617265206e6f7420746865206f776e6572206f66207468697320737460408201526530b5b4b7339760d11b606082015260800190565b5f60208284031215611d4c575f80fd5b815160ff81168114610e62575f80fd5b600181815b80851115611d9657815f1904821115611d7c57611d7c611c02565b80851615611d8957918102915b93841c9390800290611d61565b509250929050565b5f82611dac57506001611c29565b81611db857505f611c29565b8160018114611dce5760028114611dd857611df4565b6001915050611c29565b60ff841115611de957611de9611c02565b50506001821b611c29565b5060208310610133831016604e8410600b8410161715611e17575081810a611c29565b611e218383611d5c565b805f1904821115611e3457611e34611c02565b029392505050565b5f610e6260ff841683611d9e565b5f60018201611e5b57611e5b611c02565b506001019056fea2646970667358221220e3bec5f03fefca44bfdb76ac2a4a33beee0dff169fb2bb5d3b55a1d3ce3826d364736f6c634300081700330000000000000000000000001d468e2cf436a0de2720da257b9a8b704d8b7314
Deployed Bytecode
0x60806040526004361061011e575f3560e01c806383b41e661161009d578063adc9772e11610062578063adc9772e14610397578063bbbaee4c146103b6578063f2fde38b146103e3578063f4da319914610402578063fb47e01614610421575f80fd5b806383b41e661461026a5780638456cb59146102c05780638da5cb5b146102d45780639e5d9cd2146102f0578063a0e3f8f214610311575f80fd5b806340cba8a0116100e357806340cba8a0146101dc57806350aee08d146101fb5780635c975abb1461021a578063715018a61461024257806373cf575a14610256575f80fd5b80630adc0c2c1461013157806323ca0eb01461017057806326a4e8d214610178578063309a8f8d146101975780633f4ba83a146101c8575f80fd5b3661012d5761012b61044d565b005b5f80fd5b34801561013c575f80fd5b5061015061014b366004611ac3565b61054b565b604080519384526020840192909252908201526060015b60405180910390f35b61012b61044d565b348015610183575f80fd5b5061012b610192366004611af5565b6105d8565b3480156101a2575f80fd5b506008546001600160a01b03165b6040516001600160a01b039091168152602001610167565b3480156101d3575f80fd5b5061012b610602565b3480156101e7575f80fd5b5061012b6101f6366004611af5565b610614565b348015610206575f80fd5b5061012b610215366004611af5565b610794565b348015610225575f80fd5b505f54600160a01b900460ff166040519015158152602001610167565b34801561024d575f80fd5b5061012b6109ac565b348015610261575f80fd5b5061012b6109bd565b348015610275575f80fd5b50600154600354600254600454600554600654600754604080519788526020880196909652948601939093526060850191909152608084015260a083015260c082015260e001610167565b3480156102cb575f80fd5b5061012b610b65565b3480156102df575f80fd5b505f546001600160a01b03166101b0565b3480156102fb575f80fd5b50610304610b75565b6040516101679190611b0e565b34801561031c575f80fd5b5061033061032b366004611ac3565b610bd5565b60405161016791908151151581526020808301516001600160a01b03169082015260408083015190820152606080830151908201526080808301519082015260a0808301519082015260c0808301519082015260e091820151918101919091526101000190565b3480156103a2575f80fd5b5061012b6103b1366004611b5a565b610c99565b3480156103c1575f80fd5b506103d56103d0366004611af5565b610d8e565b604051908152602001610167565b3480156103ee575f80fd5b5061012b6103fd366004611af5565b610e69565b34801561040d575f80fd5b5061015061041c366004611af5565b610ea6565b34801561042c575f80fd5b5061044061043b366004611af5565b610f63565b6040516101679190611b82565b34806104c65760405162461bcd60e51b815260206004820152603d60248201527f646973747269627574655374616b696e675265776172647328293a205265776160448201527f7264206d7573742062652067726561746572207468616e207a65726f2e00000060648201526084015b60405180910390fd5b600754156104e2576007546104db9082611c16565b5f60075590505b8060045f8282546104f39190611c16565b909155505042600655600280548291905f90610510908490611c16565b90915550506040518181527fcb85a20151ba0100ff8fdc798814296495ac8af2552b7fb99ce1da63e5d94be89060200160405180910390a150565b5f818152600a6020908152604080832081516101008082018452825460ff811615158352046001600160a01b0316938101939093526001810154918301919091526002810154606083015260038101546080830152600481015460a0830152600581015460c08301526006015460e0820152819081906105ca9061103d565b9250925092505b9193909250565b6105e06110f9565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b61060a6110f9565b610612611125565b565b61061c6110f9565b600754806106925760405162461bcd60e51b815260206004820152603760248201527f636c61696d4361727279466f727761726442616c616e636528293a2042616c6160448201527f6e6365206d7573742062652061626f7665207a65726f2e00000000000000000060648201526084016104bd565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146106db576040519150601f19603f3d011682016040523d82523d5f602084013e6106e0565b606091505b50509050806107495760405162461bcd60e51b815260206004820152602f60248201527f636c61696d4361727279466f727761726442616c616e636528293a204554482060448201526e2737ba103a3930b739b332b932b21760891b60648201526084016104bd565b5f600755604080516001600160a01b0385168152602081018490527f7f2ae5ea0eceace153024cb17f16195815248fdcf2bac0507608a46c90da53d7910160405180910390a1505050565b600854600160a01b900460ff16156107e35760405162461bcd60e51b81526020600482015260126024820152712932b2b73a3930b731bc9030ba3a30b1b59760711b60448201526064016104bd565b6008805460ff60a01b1916600160a01b1790555f61080082611179565b5090505f811161086a5760405162461bcd60e51b815260206004820152602f60248201527f5f636c61696d557365725374616b696e6752657761726428293a204e6f20726560448201526e3bb0b93239903a379031b630b4b69760891b60648201526084016104bd565b47818110156108e15760405162461bcd60e51b815260206004820152603760248201527f636c61696d5374616b696e6752657761726428293a20436f6e7472616374206860448201527f6173206c6573732062616c616e636520746f207061792e00000000000000000060648201526084016104bd565b5f836001600160a01b0316836040515f6040518083038185875af1925050503d805f811461092a576040519150601f19603f3d011682016040523d82523d5f602084013e61092f565b606091505b50509050806109995760405162461bcd60e51b815260206004820152603060248201527f636c61696d5374616b696e6752657761726428293a205265776172642045544860448201526f102737ba103a3930b739b332b932b21760811b60648201526084016104bd565b50506008805460ff60a01b191690555050565b6109b46110f9565b6106125f61138f565b335f806109c9836113de565b90925090508115610aaf576008545f906001600160a01b031663a9059cbb856109f283876115d1565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015610a3a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a5e9190611c2f565b905080610aad5760405162461bcd60e51b815260206004820181905260248201527f756e5374616b6528293a20546f6b656e73206e6f74207472616e73666572656460448201526064016104bd565b505b8015610b60575f836001600160a01b0316826040515f6040518083038185875af1925050503d805f8114610afe576040519150601f19603f3d011682016040523d82523d5f602084013e610b03565b606091505b5050905080610b5e5760405162461bcd60e51b815260206004820152602160248201527f756e7374616b6528293a20526577617264206e6f74207472616e7366657265646044820152601760f91b60648201526084016104bd565b505b505050565b610b6d6110f9565b610612611650565b60606001805480602002602001604051908101604052809291908181526020018280548015610bcb57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610bad575b5050505050905090565b610c206040518061010001604052805f151581526020015f6001600160a01b031681526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b505f908152600a602090815260409182902082516101008082018552825460ff811615158352046001600160a01b0316928101929092526001810154928201929092526002820154606082015260038201546080820152600482015460a0820152600582015460c082015260069091015460e082015290565b610ca1611692565b6008545f906001600160a01b03166323b872dd3330610cc084876115d1565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303815f875af1158015610d11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d359190611c2f565b905080610d845760405162461bcd60e51b815260206004820181905260248201527f756e5374616b6528293a20546f6b656e73206e6f74207472616e73666572656460448201526064016104bd565b610b6083836116bc565b6001600160a01b038082165f908152600960209081526040808320815160a08101835281549095168552600181015485840152600281015485830152600381015460608601526004810180548351818602810186019094528084529495869590949293608086019390929190830182828015610e2757602002820191905f5260205f20905b815481526020019060010190808311610e13575b505050505081525050905060055481602001516064610e469190611c4e565b610e5890670de0b6b3a7640000611c4e565b610e629190611c65565b9392505050565b610e716110f9565b6001600160a01b038116610e9a57604051631e4fbdf760e01b81525f60048201526024016104bd565b610ea38161138f565b50565b6001600160a01b038082165f908152600960209081526040808320815160a081018352815490951685526001810154858401526002810154858301526003810154606086015260048101805483518186028101860190945280845294958695869586959294936080860193929091830182828015610f4157602002820191905f5260205f20905b815481526020019060010190808311610f2d575b5050505050815250509050610f55816118ec565b935093509350509193909250565b610f9a6040518060a001604052805f6001600160a01b031681526020015f81526020015f81526020015f8152602001606081525090565b6001600160a01b038083165f90815260096020908152604091829020825160a08101845281549094168452600181015484830152600281015484840152600381015460608501526004810180548451818502810185019095528085529193608086019390929083018282801561102d57602002820191905f5260205f20905b815481526020019060010190808311611019575b5050505050815250509050919050565b5f805f8060045411801561104f575083515b801561106057506006548460e00151105b156105d1578360c001518460a001516110799190611c16565b600554856060015160045461108e9190611c4e565b6110989190611c65565b6110a29190611c84565b925082156105d1578360e001516006546110bc9190611c84565b8460e0015185608001516110d09190611c84565b6110da9085611c4e565b6110e49190611c65565b90506110f08184611c84565b91509193909250565b5f546001600160a01b031633146106125760405163118cdaa760e01b81523360048201526024016104bd565b61112d6119ec565b5f805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b0381165f90815260096020526040812060048101548291906111b45760405162461bcd60e51b81526004016104bd90611c97565b5f5b600482015481101561131e575f600a5f8460040184815481106111db576111db611ce2565b905f5260205f20015481526020019081526020015f209050856001600160a01b0316815f0160019054906101000a90046001600160a01b03166001600160a01b03161461123a5760405162461bcd60e51b81526004016104bd90611cf6565b805460ff161561131557604080516101008082018352835460ff811615158352046001600160a01b031660208201526001830154918101919091526002820154606082015260038201546080820152600482015460a0820152600582015460c0820152600682015460e08201525f9081906112b49061103d565b90935091505081156112e65781836004015f8282546112d39190611c16565b909155506112e390508288611c16565b96505b80156113125780836005015f8282546112ff9190611c16565b9091555061130f90508187611c16565b95505b50505b506001016111b6565b5082156113895782816002015f8282546113389190611c16565b925050819055508160075f8282546113509190611c16565b90915550506040518381527fa8c6b8e354c4fcddb94967f79e85ec5a2b27add43447bd915f479e684e8a20499060200160405180910390a15b50915091565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381165f90815260096020526040812060048101548291906114195760405162461bcd60e51b81526004016104bd90611c97565b5f61142385611179565b5090508015611439576114368184611c16565b92505b5f60018301819055805b6004840154811015611518575f600a5f86600401848154811061146857611468611ce2565b905f5260205f20015481526020019081526020015f209050876001600160a01b0316815f0160019054906101000a90046001600160a01b03166001600160a01b0316146114c75760405162461bcd60e51b81526004016104bd90611cf6565b805460ff161561150f57805460ff1916815560028101546114e89088611c16565b96508060040154836114fa9190611c16565b925080600501548361150c9190611c16565b92505b50600101611443565b505f85116115685760405162461bcd60e51b815260206004820181905260248201527f5f756e7374616b6528293a204e6f2076616c756520746f20756e5374616b652e60448201526064016104bd565b8060045f8282546115799190611c84565b925050819055508460055f8282546115919190611c84565b90915550506040518581527f603af6cb36e852311201ebb828cda2d49c5dc06d9d14a04ecd5e4211308625aa9060200160405180910390a1505050915091565b5f670de0b6b3a7640000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611617573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061163b9190611d3c565b61164690600a611e3c565b610e589084611c4e565b611658611692565b5f805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861115c3390565b5f54600160a01b900460ff16156106125760405163d93c066560e01b815260040160405180910390fd5b6001600160a01b03821661171e5760405162461bcd60e51b815260206004820152602360248201527f5f7374616b6528293a20416464726573735a65726f2063616e6e6f742073746160448201526235b29760e91b60648201526084016104bd565b5f81116117825760405162461bcd60e51b815260206004820152602c60248201527f5f7374616b6528293a2056616c75652073686f756c642062652067726561746560448201526b39103a3430b7103d32b9379760a11b60648201526084016104bd565b6001600160a01b038083165f908152600960205260409020600354815491929091166117fc576117b28285611a15565b6001805480820182555f919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b0386161790555b600482018054600181810183555f9283526020832090910183905583018054859290611829908490611c16565b90915550505f818152600a60205260409020805460016001600160a81b03199091166101006001600160a01b03881602178117825581018290556002810184905542600382015560068054908201556118828185611a67565b8360055f8282546118939190611c16565b909155505060038054905f6118a783611e4a565b909155505060408051858152602081018490527fc9ec05ea5037818736839e1365dc3d9a74a735c447af0697da66633b7a9d0fab910160405180910390a15050505050565b5f805f80846080015190505f5b81518110156119e3575f600a5f84848151811061191857611918611ce2565b60209081029190910181015182528181019290925260409081015f2081516101008082018452825460ff811615801584529190046001600160a01b0316948201949094526001820154928101929092526002810154606083015260038101546080830152600481015460a0830152600581015460c08301526006015460e082015291506119da575f805f6119ab8461103d565b919450925090506119bc838a611c16565b98506119c88289611c16565b97506119d48188611c16565b96505050505b506001016118f9565b50509193909250565b5f54600160a01b900460ff1661061257604051638dfc202b60e01b815260040160405180910390fd5b81546001600160a01b0319166001600160a01b03821690811783556040519081527f3b819cfb39116b78a5d1267e92ab85058e96d63a7882322d296ab4135720b79a9060200160405180910390a15050565b60045415611abf575f60055482600454611a819190611c4e565b611a8b9190611c65565b905080836005015f828254611aa09190611c16565b925050819055508060045f828254611ab89190611c16565b9091555050505b5050565b5f60208284031215611ad3575f80fd5b5035919050565b80356001600160a01b0381168114611af0575f80fd5b919050565b5f60208284031215611b05575f80fd5b610e6282611ada565b602080825282518282018190525f9190848201906040850190845b81811015611b4e5783516001600160a01b031683529284019291840191600101611b29565b50909695505050505050565b5f8060408385031215611b6b575f80fd5b611b7483611ada565b946020939093013593505050565b5f602080835260c0830160018060a01b03855116828501528185015160408501526040850151606085015260608501516080850152608085015160a08086015281815180845260e08701915084830193505f92505b80831015611bf75783518252928401926001929092019190840190611bd7565b509695505050505050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115611c2957611c29611c02565b92915050565b5f60208284031215611c3f575f80fd5b81518015158114610e62575f80fd5b8082028115828204841417611c2957611c29611c02565b5f82611c7f57634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115611c2957611c29611c02565b6020808252602b908201527f5f636c61696d5374616b696e6752657761726428293a20596f7520686176652060408201526a6e6f207374616b696e677360a81b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b60208082526026908201527f596f7520617265206e6f7420746865206f776e6572206f66207468697320737460408201526530b5b4b7339760d11b606082015260800190565b5f60208284031215611d4c575f80fd5b815160ff81168114610e62575f80fd5b600181815b80851115611d9657815f1904821115611d7c57611d7c611c02565b80851615611d8957918102915b93841c9390800290611d61565b509250929050565b5f82611dac57506001611c29565b81611db857505f611c29565b8160018114611dce5760028114611dd857611df4565b6001915050611c29565b60ff841115611de957611de9611c02565b50506001821b611c29565b5060208310610133831016604e8410600b8410161715611e17575081810a611c29565b611e218383611d5c565b805f1904821115611e3457611e34611c02565b029392505050565b5f610e6260ff841683611d9e565b5f60018201611e5b57611e5b611c02565b506001019056fea2646970667358221220e3bec5f03fefca44bfdb76ac2a4a33beee0dff169fb2bb5d3b55a1d3ce3826d364736f6c63430008170033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000001d468e2cf436a0de2720da257b9a8b704d8b7314
-----Decoded View---------------
Arg [0] : initialOwner (address): 0x1D468E2cF436a0de2720DA257B9A8b704D8B7314
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000001d468e2cf436a0de2720da257b9a8b704d8b7314
Deployed Bytecode Sourcemap
10551:14693:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11669:26;:24;:26::i;:::-;10551:14693;;;;;15233:315;;;;;;;;;;-1:-1:-1;15233:315:0;;;;;:::i;:::-;;:::i;:::-;;;;401:25:1;;;457:2;442:18;;435:34;;;;485:18;;;478:34;389:2;374:18;15233:315:0;;;;;;;;21533:579;;;:::i;22721:115::-;;;;;;;;;;-1:-1:-1;22721:115:0;;;;;:::i;:::-;;:::i;22591:122::-;;;;;;;;;;-1:-1:-1;22692:13:0;;-1:-1:-1;;;;;22692:13:0;22591:122;;;-1:-1:-1;;;;;1056:32:1;;;1038:51;;1026:2;1011:18;22591:122:0;892:203:1;25176:65:0;;;;;;;;;;;;;:::i;24515:584::-;;;;;;;;;;-1:-1:-1;24515:584:0;;;;;:::i;:::-;;:::i;18647:684::-;;;;;;;;;;-1:-1:-1;18647:684:0;;;;;:::i;:::-;;:::i;2803:86::-;;;;;;;;;;-1:-1:-1;2850:4:0;2874:7;-1:-1:-1;;;2874:7:0;;;;2803:86;;1265:14:1;;1258:22;1240:41;;1228:2;1213:18;2803:86:0;1100:187:1;6197:103:0;;;;;;;;;;;;;:::i;20825:700::-;;;;;;;;;;;;;:::i;22844:746::-;;;;;;;;;;-1:-1:-1;23251:6:0;:13;23291:14;;23349:31;;23410:17;;23452:12;;23503:26;;23562:20;;22844:746;;;1607:25:1;;;1663:2;1648:18;;1641:34;;;;1691:18;;;1684:34;;;;1749:2;1734:18;;1727:34;;;;1792:3;1777:19;;1770:35;1836:3;1821:19;;1814:35;1880:3;1865:19;;1858:35;1594:3;1579:19;22844:746:0;1292:607:1;25107:61:0;;;;;;;;;;;;;:::i;5522:87::-;;;;;;;;;;-1:-1:-1;5568:7:0;5595:6;-1:-1:-1;;;;;5595:6:0;5522:87;;22120:141;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;23785:175::-;;;;;;;;;;-1:-1:-1;23785:175:0;;;;;:::i;:::-;;:::i;:::-;;;;;;2806:13:1;;2799:21;2792:29;2774:48;;2882:4;2870:17;;;2864:24;-1:-1:-1;;;;;2860:50:1;2838:20;;;2831:80;2967:4;2955:17;;;2949:24;2927:20;;;2920:54;3030:4;3018:17;;;3012:24;2990:20;;;2983:54;3093:4;3081:17;;;3075:24;3053:20;;;3046:54;2898:3;3144:17;;;3138:24;3116:20;;;3109:54;3219:4;3207:17;;;3201:24;3179:20;;;3172:54;3282:4;3270:17;;;3264:24;3242:20;;;3235:54;;;;2761:3;2746:19;;2567:728;13767:393:0;;;;;;;;;;-1:-1:-1;13767:393:0;;;;;:::i;:::-;;:::i;22269:314::-;;;;;;;;;;-1:-1:-1;22269:314:0;;;;;:::i;:::-;;:::i;:::-;;;3705:25:1;;;3693:2;3678:18;22269:314:0;3559:177:1;6455:220:0;;;;;;;;;;-1:-1:-1;6455:220:0;;;;;:::i;:::-;;:::i;16572:386::-;;;;;;;;;;-1:-1:-1;16572:386:0;;;;;:::i;:::-;;:::i;23598:179::-;;;;;;;;;;-1:-1:-1;23598:179:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;21533:579::-;21614:9;21658:12;21636:123;;;;-1:-1:-1;;;21636:123:0;;4953:2:1;21636:123:0;;;4935:21:1;4992:2;4972:18;;;4965:30;5031:34;5011:18;;;5004:62;5102:31;5082:18;;;5075:59;5151:19;;21636:123:0;;;;;;;;;21776:20;;:24;21772:131;;21829:20;;21817:32;;;;:::i;:::-;21864:27;21871:20;21864:27;21817:32;-1:-1:-1;21772:131:0;21936:8;21915:17;;:29;;;;;;;:::i;:::-;;;;-1:-1:-1;;21984:15:0;21955:26;:44;22010:31;:43;;22045:8;;22010:31;;;:43;;22045:8;;22010:43;:::i;:::-;;;;-1:-1:-1;;22071:33:0;;3705:25:1;;;22071:33:0;;3693:2:1;3678:18;22071:33:0;;;;;;;21584:528;21533:579::o;15233:315::-;15348:25;15511:28;;;:16;:28;;;;;;;;15488:52;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15488:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15348:25;;;;15488:52;;:22;:52::i;:::-;15481:59;;;;;;15233:315;;;;;;:::o;22721:115::-;5408:13;:11;:13::i;:::-;22799::::1;:29:::0;;-1:-1:-1;;;;;;22799:29:0::1;-1:-1:-1::0;;;;;22799:29:0;;;::::1;::::0;;;::::1;::::0;;22721:115::o;25176:65::-;5408:13;:11;:13::i;:::-;25223:10:::1;:8;:10::i;:::-;25176:65::o:0;24515:584::-;5408:13;:11;:13::i;:::-;24631:20:::1;::::0;24684:23;24662:128:::1;;;::::0;-1:-1:-1;;;24662:128:0;;5645:2:1;24662:128:0::1;::::0;::::1;5627:21:1::0;5684:2;5664:18;;;5657:30;5723:34;5703:18;;;5696:62;5794:25;5774:18;;;5767:53;5837:19;;24662:128:0::1;5443:419:1::0;24662:128:0::1;24804:9;24827:12;-1:-1:-1::0;;;;;24819:26:0::1;24853:19;24819:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24803:98;;;24920:4;24912:64;;;::::0;-1:-1:-1;;;24912:64:0;;6279:2:1;24912:64:0::1;::::0;::::1;6261:21:1::0;6318:2;6298:18;;;6291:30;6357:34;6337:18;;;6330:62;-1:-1:-1;;;6408:18:1;;;6401:45;6463:19;;24912:64:0::1;6077:411:1::0;24912:64:0::1;24987:27;24994:20;24987:27:::0;25032:59:::1;::::0;;-1:-1:-1;;;;;6685:32:1;;6667:51;;6749:2;6734:18;;6727:34;;;25032:59:0::1;::::0;6640:18:1;25032:59:0::1;;;;;;;24590:509;;24515:584:::0;:::o;18647:684::-;11504:13;;-1:-1:-1;;;11504:13:0;;;;11503:14;11495:45;;;;-1:-1:-1;;;11495:45:0;;6974:2:1;11495:45:0;;;6956:21:1;7013:2;6993:18;;;6986:30;-1:-1:-1;;;7032:18:1;;;7025:48;7090:18;;11495:45:0;6772:342:1;11495:45:0;11551:13;:20;;-1:-1:-1;;;;11551:20:0;-1:-1:-1;;;11551:20:0;;;;18760:37:::1;18784:12:::0;18760:23:::1;:37::i;:::-;18730:67;;;18850:1;18832:15;:19;18810:116;;;::::0;-1:-1:-1;;;18810:116:0;;7321:2:1;18810:116:0::1;::::0;::::1;7303:21:1::0;7360:2;7340:18;;;7333:30;7399:34;7379:18;;;7372:62;-1:-1:-1;;;7450:18:1;;;7443:45;7505:19;;18810:116:0::1;7119:411:1::0;18810:116:0::1;18964:21;19020:33:::0;;::::1;;18998:138;;;::::0;-1:-1:-1;;;18998:138:0;;7737:2:1;18998:138:0::1;::::0;::::1;7719:21:1::0;7776:2;7756:18;;;7749:30;7815:34;7795:18;;;7788:62;7886:25;7866:18;;;7859:53;7929:19;;18998:138:0::1;7535:419:1::0;18998:138:0::1;19150:11;19175:12;-1:-1:-1::0;;;;;19167:26:0::1;19201:15;19167:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19149:96;;;19264:6;19256:67;;;::::0;-1:-1:-1;;;19256:67:0;;8161:2:1;19256:67:0::1;::::0;::::1;8143:21:1::0;8200:2;8180:18;;;8173:30;8239:34;8219:18;;;8212:62;-1:-1:-1;;;8290:18:1;;;8283:46;8346:19;;19256:67:0::1;7959:412:1::0;19256:67:0::1;-1:-1:-1::0;;11594:13:0;:21;;-1:-1:-1;;;;11594:21:0;;;-1:-1:-1;;18647:684:0:o;6197:103::-;5408:13;:11;:13::i;:::-;6262:30:::1;6289:1;6262:18;:30::i;20825:700::-:0;20884:10;20864:17;;20961:43;20884:10;20961:8;:43::i;:::-;20905:99;;-1:-1:-1;20905:99:0;-1:-1:-1;21021:17:0;;21017:259;;21074:13;;21055:9;;-1:-1:-1;;;;;21074:13:0;21067:30;21116:9;21144:39;21074:13;21169;21144:9;:39::i;:::-;21067:131;;-1:-1:-1;;;;;;21067:131:0;;;;;;;-1:-1:-1;;;;;6685:32:1;;;21067:131:0;;;6667:51:1;6734:18;;;6727:34;6640:18;;21067:131:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21055:143;;21223:4;21215:49;;;;-1:-1:-1;;;21215:49:0;;8860:2:1;21215:49:0;;;8842:21:1;;;8879:18;;;8872:30;8938:34;8918:18;;;8911:62;8990:18;;21215:49:0;8658:356:1;21215:49:0;21040:236;21017:259;21292:24;;21288:230;;21334:11;21359:9;-1:-1:-1;;;;;21351:23:0;21400:20;21351:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21333:106;;;21462:6;21454:52;;;;-1:-1:-1;;;21454:52:0;;9221:2:1;21454:52:0;;;9203:21:1;9260:2;9240:18;;;9233:30;9299:34;9279:18;;;9272:62;-1:-1:-1;;;9350:18:1;;;9343:31;9391:19;;21454:52:0;9019:397:1;21454:52:0;21318:200;21288:230;20853:672;;;20825:700::o;25107:61::-;5408:13;:11;:13::i;:::-;25152:8:::1;:6;:8::i;22120:141::-:0;22206:16;22247:6;22240:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22240:13:0;;;;;;;;;;;;;;;;;;;;;;;22120:141;:::o;23785:175::-;23879:20;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23879:20:0;-1:-1:-1;23924:28:0;;;;:16;:28;;;;;;;;;23917:35;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23917:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23785:175::o;13767:393::-;2408:19;:17;:19::i;:::-;13901:13:::1;::::0;13882:9:::1;::::0;-1:-1:-1;;;;;13901:13:0::1;13894:34;13943:10;13976:4;13996:37;13901:13:::0;14021:11;13996:9:::1;:37::i;:::-;13894:150;::::0;-1:-1:-1;;;;;;13894:150:0::1;::::0;;;;;;-1:-1:-1;;;;;9679:15:1;;;13894:150:0::1;::::0;::::1;9661:34:1::0;9731:15;;;;9711:18;;;9704:43;9763:18;;;9756:34;9596:18;;13894:150:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13882:162;;14065:4;14057:49;;;::::0;-1:-1:-1;;;14057:49:0;;8860:2:1;14057:49:0::1;::::0;::::1;8842:21:1::0;;;8879:18;;;8872:30;8938:34;8918:18;;;8911:62;8990:18;;14057:49:0::1;8658:356:1::0;14057:49:0::1;14119:33;14126:12;14140:11;14119:6;:33::i;22269:314::-:0;-1:-1:-1;;;;;22433:30:0;;;22363:17;22433:30;;;:16;:30;;;;;;;;22398:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22363:17;;;;22398:65;;22433:30;;22398:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22563:12;;22502:11;:28;;;22533:3;22502:34;;;;:::i;:::-;:44;;22539:7;22502:44;:::i;:::-;22501:74;;;;:::i;:::-;22476:99;22269:314;-1:-1:-1;;;22269:314:0:o;6455:220::-;5408:13;:11;:13::i;:::-;-1:-1:-1;;;;;6540:22:0;::::1;6536:93;;6586:31;::::0;-1:-1:-1;;;6586:31:0;;6614:1:::1;6586:31;::::0;::::1;1038:51:1::0;1011:18;;6586:31:0::1;892:203:1::0;6536:93:0::1;6639:28;6658:8;6639:18;:28::i;:::-;6455:220:::0;:::o;16572:386::-;-1:-1:-1;;;;;16862:30:0;;;16689;16862;;;:16;:30;;;;;;;;16827:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16689:30;;;;;;;;16827:65;;16862:30;16827:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16912:38;16938:11;16912:25;:38::i;:::-;16905:45;;;;;;;16572:386;;;;;:::o;23598:179::-;23694:20;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23694:20:0;-1:-1:-1;;;;;23739:30:0;;;;;;;:16;:30;;;;;;;;;23732:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23739:30;;23732:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23598:179;;;:::o;14168:1057::-;14300:25;14340:23;14378:27;14471:1;14451:17;;:21;:61;;;;-1:-1:-1;14489:23:0;;14451:61;:134;;;;;14559:26;;14529:14;:27;;;:56;14451:134;14433:785;;;14815:14;:29;;;14756:14;:35;;;:88;;;;:::i;:::-;14722:12;;14671:14;:26;;;14651:17;;:46;;;;:::i;:::-;14650:84;;;;:::i;:::-;14649:196;;;;:::i;:::-;14612:233;-1:-1:-1;14866:21:0;;14862:345;;15084:14;:27;;;15055:26;;:56;;;;:::i;:::-;15001:14;:27;;;14974:14;:24;;;:54;;;;:::i;:::-;14932:97;;:17;:97;:::i;:::-;14931:181;;;;:::i;:::-;14908:205;-1:-1:-1;15152:39:0;14908:205;15152:17;:39;:::i;:::-;15134:57;;14168:1057;;;;;:::o;5687:166::-;5568:7;5595:6;-1:-1:-1;;;;;5595:6:0;773:10;5747:23;5743:103;;5794:40;;-1:-1:-1;;;5794:40:0;;773:10;5794:40;;;1038:51:1;1011:18;;5794:40:0;892:203:1;3704:120:0;2667:16;:14;:16::i;:::-;3773:5:::1;3763:15:::0;;-1:-1:-1;;;;3763:15:0::1;::::0;;3794:22:::1;773:10:::0;3803:12:::1;3794:22;::::0;-1:-1:-1;;;;;1056:32:1;;;1038:51;;1026:2;1011:18;3794:22:0::1;;;;;;;3704:120::o:0;16966:1673::-;-1:-1:-1;;;;;17172:30:0;;17056:28;17172:30;;;:16;:30;;;;;17235:22;;;:29;17056:28;;17172:30;17213:126;;;;-1:-1:-1;;;17213:126:0;;;;;;;:::i;:::-;17357:9;17352:1027;17372:22;;;:29;17368:33;;17352:1027;;;17423:36;17462:16;:75;17497:11;:22;;17520:1;17497:25;;;;;;;;:::i;:::-;;;;;;;;;17462:75;;;;;;;;;;;17423:114;;17604:12;-1:-1:-1;;;;;17580:36:0;:14;:20;;;;;;;;;;-1:-1:-1;;;;;17580:20:0;-1:-1:-1;;;;;17580:36:0;;17554:136;;;;-1:-1:-1;;;17554:136:0;;;;;;;:::i;:::-;17711:23;;;;17707:661;;;17896:38;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17896:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;17896:38:0;;:22;:38::i;:::-;17755:179;;-1:-1:-1;17755:179:0;-1:-1:-1;;17959:19:0;;17955:184;;18042:15;18003:14;:35;;;:54;;;;;;;:::i;:::-;;;;-1:-1:-1;18080:39:0;;-1:-1:-1;18104:15:0;18080:39;;:::i;:::-;;;17955:184;18163:23;;18159:194;;18244:19;18211:14;:29;;;:52;;;;;;;:::i;:::-;;;;-1:-1:-1;18286:47:0;;-1:-1:-1;18314:19:0;18286:47;;:::i;:::-;;;18159:194;17736:632;;17707:661;-1:-1:-1;17403:3:0;;17352:1027;;;-1:-1:-1;18395:24:0;;18391:241;;18473:20;18436:11;:33;;;:57;;;;;;;:::i;:::-;;;;;;;;18532:24;18508:20;;:48;;;;;;;:::i;:::-;;;;-1:-1:-1;;18578:42:0;;3705:25:1;;;18578:42:0;;3693:2:1;3678:18;18578:42:0;;;;;;;18391:241;17125:1514;16966:1673;;;:::o;6835:191::-;6909:16;6928:6;;-1:-1:-1;;;;;6945:17:0;;;-1:-1:-1;;;;;;6945:17:0;;;;;;6978:40;;6928:6;;;;;;;6978:40;;6909:16;6978:40;6898:128;6835:191;:::o;19339:1478::-;-1:-1:-1;;;;;19519:30:0;;19414:21;19519:30;;;:16;:30;;;;;19584:22;;;:29;19414:21;;19519:30;19562:126;;;;-1:-1:-1;;;19562:126:0;;;;;;;:::i;:::-;19702:23;19731:37;19755:12;19731:23;:37::i;:::-;-1:-1:-1;19701:67:0;-1:-1:-1;19785:19:0;;19781:91;;19821:39;19845:15;19821:39;;:::i;:::-;;;19781:91;19915:1;19884:28;;;:32;;;19915:1;19958:653;19978:22;;;:29;19974:33;;19958:653;;;20029:36;20068:16;:75;20103:11;:22;;20126:1;20103:25;;;;;;;;:::i;:::-;;;;;;;;;20068:75;;;;;;;;;;;20029:114;;20210:12;-1:-1:-1;;;;;20186:36:0;:14;:20;;;;;;;;;;-1:-1:-1;;;;;20186:20:0;-1:-1:-1;;;;;20186:36:0;;20160:136;;;;-1:-1:-1;;;20160:136:0;;;;;;;:::i;:::-;20317:23;;;;20313:287;;;20361:31;;-1:-1:-1;;20361:31:0;;;20428:26;;;;20411:43;;;;:::i;:::-;;;20487:14;:35;;;20473:49;;;;;:::i;:::-;;;20555:14;:29;;;20541:43;;;;;:::i;:::-;;;20313:287;-1:-1:-1;20009:3:0;;19958:653;;;;20647:1;20631:13;:17;20623:62;;;;-1:-1:-1;;;20623:62:0;;11482:2:1;20623:62:0;;;11464:21:1;;;11501:18;;;11494:30;11560:34;11540:18;;;11533:62;11612:18;;20623:62:0;11280:356:1;20623:62:0;20719:10;20698:17;;:31;;;;;;;:::i;:::-;;;;;;;;20758:13;20742:12;;:29;;;;;;;:::i;:::-;;;;-1:-1:-1;;20787:22:0;;3705:25:1;;;20787:22:0;;3693:2:1;3678:18;20787:22:0;;;;;;;19472:1345;;;19339:1478;;;:::o;23968:266::-;24080:21;24219:7;24177:13;-1:-1:-1;;;;;24167:33:0;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24163:39;;:2;:39;:::i;:::-;24149:53;;:11;:53;:::i;3445:118::-;2408:19;:17;:19::i;:::-;3505:7:::1;:14:::0;;-1:-1:-1;;;;3505:14:0::1;-1:-1:-1::0;;;3505:14:0::1;::::0;;3535:20:::1;3542:12;773:10:::0;;693:98;2962:132;2850:4;2874:7;-1:-1:-1;;;2874:7:0;;;;3024:63;;;3060:15;;-1:-1:-1;;;3060:15:0;;;;;;;;;;;12494:1265;-1:-1:-1;;;;;12589:26:0;;12567:111;;;;-1:-1:-1;;;12567:111:0;;13498:2:1;12567:111:0;;;13480:21:1;13537:2;13517:18;;;13510:30;13576:34;13556:18;;;13549:62;-1:-1:-1;;;13627:18:1;;;13620:33;13670:19;;12567:111:0;13296:399:1;12567:111:0;12706:1;12697:6;:10;12689:67;;;;-1:-1:-1;;;12689:67:0;;13902:2:1;12689:67:0;;;13884:21:1;13941:2;13921:18;;;13914:30;13980:34;13960:18;;;13953:62;-1:-1:-1;;;14031:18:1;;;14024:42;14083:19;;12689:67:0;13700:408:1;12689:67:0;-1:-1:-1;;;;;12805:30:0;;;12769:33;12805:30;;;:16;:30;;;;;12873:14;;12904:23;;12805:30;;12873:14;;12904:23;12900:155;;12958:45;12977:11;12990:12;12958:18;:45::i;:::-;13018:6;:25;;;;;;;-1:-1:-1;13018:25:0;;;;;;;;-1:-1:-1;;;;;;13018:25:0;-1:-1:-1;;;;;13018:25:0;;;;;12900:155;13067:22;;;:45;;;;;;;;-1:-1:-1;13067:45:0;;;;;;;;;;;;13123:28;;:38;;13155:6;;-1:-1:-1;13123:38:0;;13155:6;;13123:38;:::i;:::-;;;;-1:-1:-1;;13174:36:0;13213:58;;;:16;:58;;;;;13284:30;;13310:4;-1:-1:-1;;;;;;13325:35:0;;;13284:30;-1:-1:-1;;;;;13325:35:0;;;;;;;;13371:24;;:43;;;13425:26;;;:35;;;13498:15;13471:24;;;:42;13554:26;;;13524:27;;;:56;13593:47;13213:58;13425:35;13593:23;:47::i;:::-;13669:6;13653:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;13686:14:0;:16;;;:14;:16;;;:::i;:::-;;;;-1:-1:-1;;13720:31:0;;;14427:25:1;;;14483:2;14468:18;;14461:34;;;13720:31:0;;14400:18:1;13720:31:0;;;;;;;12556:1203;;;12494:1265;;:::o;15556:1008::-;15688:30;15733:28;15776:32;15836:31;15870:11;:22;;;15836:56;;15910:9;15905:652;15925:14;:21;15921:1;:25;15905:652;;;15968:35;16006:16;:67;16041:14;16056:1;16041:17;;;;;;;;:::i;:::-;;;;;;;;;;;;16006:67;;;;;;;;;;;;;-1:-1:-1;16006:67:0;15968:105;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15968:105:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16090:456:0;;16161:25;16209:23;16255:27;16304:38;16327:14;16304:22;:38::i;:::-;16138:204;;-1:-1:-1;16138:204:0;-1:-1:-1;16138:204:0;-1:-1:-1;16363:43:0;16138:204;16363:43;;:::i;:::-;;-1:-1:-1;16425:39:0;16449:15;16425:39;;:::i;:::-;;-1:-1:-1;16483:47:0;16511:19;16483:47;;:::i;:::-;;;16119:427;;;16090:456;-1:-1:-1;15948:3:0;;15905:652;;;;15825:739;15556:1008;;;;;:::o;3171:130::-;2850:4;2874:7;-1:-1:-1;;;2874:7:0;;;;3230:64;;3267:15;;-1:-1:-1;;;3267:15:0;;;;;;;;;;;11882:225;12012:39;;-1:-1:-1;;;;;;12012:39:0;-1:-1:-1;;;;;12012:39:0;;;;;;;12067:32;;1038:51:1;;;12067:32:0;;1026:2:1;1011:18;12067:32:0;;;;;;;11882:225;;:::o;12115:371::-;12250:17;;:21;12246:233;;12288:21;12343:12;;12333:6;12313:17;;:26;;;;:::i;:::-;12312:43;;;;:::i;:::-;12288:67;;12405:13;12372:14;:29;;;:46;;;;;;;:::i;:::-;;;;;;;;12454:13;12433:17;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;;;12246:233:0;12115:371;;:::o;14:180:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;523:173::-;591:20;;-1:-1:-1;;;;;640:31:1;;630:42;;620:70;;686:1;683;676:12;620:70;523:173;;;:::o;701:186::-;760:6;813:2;801:9;792:7;788:23;784:32;781:52;;;829:1;826;819:12;781:52;852:29;871:9;852:29;:::i;1904:658::-;2075:2;2127:21;;;2197:13;;2100:18;;;2219:22;;;2046:4;;2075:2;2298:15;;;;2272:2;2257:18;;;2046:4;2341:195;2355:6;2352:1;2349:13;2341:195;;;2420:13;;-1:-1:-1;;;;;2416:39:1;2404:52;;2511:15;;;;2476:12;;;;2452:1;2370:9;2341:195;;;-1:-1:-1;2553:3:1;;1904:658;-1:-1:-1;;;;;;1904:658:1:o;3300:254::-;3368:6;3376;3429:2;3417:9;3408:7;3404:23;3400:32;3397:52;;;3445:1;3442;3435:12;3397:52;3468:29;3487:9;3468:29;:::i;:::-;3458:39;3544:2;3529:18;;;;3516:32;;-1:-1:-1;;;3300:254:1:o;3741:1005::-;3893:4;3922:2;3951;3940:9;3933:21;3992:3;3981:9;3977:19;4068:1;4064;4059:3;4055:11;4051:19;4042:6;4036:13;4032:39;4027:2;4016:9;4012:18;4005:67;4126:2;4118:6;4114:15;4108:22;4103:2;4092:9;4088:18;4081:50;4185:2;4177:6;4173:15;4167:22;4162:2;4151:9;4147:18;4140:50;4245:2;4237:6;4233:15;4227:22;4221:3;4210:9;4206:19;4199:51;4297:3;4289:6;4285:16;4279:23;4340:4;4333;4322:9;4318:20;4311:34;4365:6;4400:12;4394:19;4437:6;4429;4422:22;4475:3;4464:9;4460:19;4453:26;;4520:2;4506:12;4502:21;4488:35;;4541:1;4532:10;;4551:169;4565:6;4562:1;4559:13;4551:169;;;4626:13;;4614:26;;4695:15;;;;4587:1;4580:9;;;;;4660:12;;;;4551:169;;;-1:-1:-1;4737:3:1;3741:1005;-1:-1:-1;;;;;;3741:1005:1:o;5181:127::-;5242:10;5237:3;5233:20;5230:1;5223:31;5273:4;5270:1;5263:15;5297:4;5294:1;5287:15;5313:125;5378:9;;;5399:10;;;5396:36;;;5412:18;;:::i;:::-;5313:125;;;;:::o;8376:277::-;8443:6;8496:2;8484:9;8475:7;8471:23;8467:32;8464:52;;;8512:1;8509;8502:12;8464:52;8544:9;8538:16;8597:5;8590:13;8583:21;8576:5;8573:32;8563:60;;8619:1;8616;8609:12;9801:168;9874:9;;;9905;;9922:15;;;9916:22;;9902:37;9892:71;;9943:18;;:::i;9974:217::-;10014:1;10040;10030:132;;10084:10;10079:3;10075:20;10072:1;10065:31;10119:4;10116:1;10109:15;10147:4;10144:1;10137:15;10030:132;-1:-1:-1;10176:9:1;;9974:217::o;10196:128::-;10263:9;;;10284:11;;;10281:37;;;10298:18;;:::i;10329:407::-;10531:2;10513:21;;;10570:2;10550:18;;;10543:30;10609:34;10604:2;10589:18;;10582:62;-1:-1:-1;;;10675:2:1;10660:18;;10653:41;10726:3;10711:19;;10329:407::o;10741:127::-;10802:10;10797:3;10793:20;10790:1;10783:31;10833:4;10830:1;10823:15;10857:4;10854:1;10847:15;10873:402;11075:2;11057:21;;;11114:2;11094:18;;;11087:30;11153:34;11148:2;11133:18;;11126:62;-1:-1:-1;;;11219:2:1;11204:18;;11197:36;11265:3;11250:19;;10873:402::o;11641:273::-;11709:6;11762:2;11750:9;11741:7;11737:23;11733:32;11730:52;;;11778:1;11775;11768:12;11730:52;11810:9;11804:16;11860:4;11853:5;11849:16;11842:5;11839:27;11829:55;;11880:1;11877;11870:12;11919:416;12008:1;12045:5;12008:1;12059:270;12080:7;12070:8;12067:21;12059:270;;;12139:4;12135:1;12131:6;12127:17;12121:4;12118:27;12115:53;;;12148:18;;:::i;:::-;12198:7;12188:8;12184:22;12181:55;;;12218:16;;;;12181:55;12297:22;;;;12257:15;;;;12059:270;;;12063:3;11919:416;;;;;:::o;12340:806::-;12389:5;12419:8;12409:80;;-1:-1:-1;12460:1:1;12474:5;;12409:80;12508:4;12498:76;;-1:-1:-1;12545:1:1;12559:5;;12498:76;12590:4;12608:1;12603:59;;;;12676:1;12671:130;;;;12583:218;;12603:59;12633:1;12624:10;;12647:5;;;12671:130;12708:3;12698:8;12695:17;12692:43;;;12715:18;;:::i;:::-;-1:-1:-1;;12771:1:1;12757:16;;12786:5;;12583:218;;12885:2;12875:8;12872:16;12866:3;12860:4;12857:13;12853:36;12847:2;12837:8;12834:16;12829:2;12823:4;12820:12;12816:35;12813:77;12810:159;;;-1:-1:-1;12922:19:1;;;12954:5;;12810:159;13001:34;13026:8;13020:4;13001:34;:::i;:::-;13071:6;13067:1;13063:6;13059:19;13050:7;13047:32;13044:58;;;13082:18;;:::i;:::-;13120:20;;12340:806;-1:-1:-1;;;12340:806:1:o;13151:140::-;13209:5;13238:47;13279:4;13269:8;13265:19;13259:4;13238:47;:::i;14113:135::-;14152:3;14173:17;;;14170:43;;14193:18;;:::i;:::-;-1:-1:-1;14240:1:1;14229:13;;14113:135::o
Swarm Source
ipfs://e3bec5f03fefca44bfdb76ac2a4a33beee0dff169fb2bb5d3b55a1d3ce3826d3
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $2,380.1 | 0.2979 | $709.1 |
Loading...
Loading
[ Download: CSV Export ]
[ 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.