Transactions
Token Transfers
Tokens
Internal Transactions
Coin Balance History
Logs
Code
Read Contract
Write Contract
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
This contract has been partially verified via Sourcify.
View contract in Sourcify repository
- Contract name:
- CoretoStaking
- Optimization enabled
- true
- Compiler version
- v0.4.26+commit.4563c3fc
- Optimization runs
- 200
- EVM Version
- byzantium
- Verified at
- 2026-04-22T03:09:29.216559Z
CoretoStaking.sol
pragma solidity ^0.4.24;
/**
* @title SafeMath
* @dev Unsigned math operations with safety checks that revert on error
*/
library SafeMath {
/**
* @dev Multiplies two unsigned integers, reverts on overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256){
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b,"Calculation error in multiplication");
return c;
}
/**
* @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256){
// Solidity only automatically asserts when dividing by 0
require(b > 0,"Calculation error in division");
uint256 c = a / b;
return c;
}
/**
* @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256){
require(b <= a,"Calculation error in subtraction");
uint256 c = a - b;
return c;
}
/**
* @dev Adds two unsigned integers, reverts on overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256){
uint256 c = a + b;
require(c >= a,"Calculation error in addition");
return c;
}
/**
* @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),
* reverts when dividing by zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256){
require(b != 0,"Calculation error");
return a % b;
}
}
/**
* @title IToken
* @dev Contract interface for token contract
*/
contract IToken {
function totalSupply() public pure returns (uint256);
function balanceOf(address) public pure returns (uint256);
function allowance(address, address) public pure returns (uint256);
function transfer(address, uint256) public pure returns (bool);
function transferFrom(address, address, uint256) public pure returns (bool);
function approve(address, uint256) public pure returns (bool);
}
/**
* @title CoretoStaking
* @dev Staking Contract for token staking
*/
contract CoretoStaking {
using SafeMath for uint256;
address private _owner; // variable for Owner of the Contract.
uint256 private _withdrawTime; // variable to manage withdraw time for token
uint256 constant public PERIOD_SERENITY = 90; // variable constant for time period management for serenity pool
uint256 constant public PERIOD_EQUILIBRIUM = 180; // variable constant for time period management for equilibrium pool
uint256 constant public PERIOD_TRANQUILLITY = 270; // variable constant for time period management for tranquillity pool
uint256 constant public WITHDRAW_TIME_SERENITY = 45 * 1 days; // variable constant to manage withdraw time lock up for serenity
uint256 constant public WITHDRAW_TIME_EQUILIBRIUM = 90 * 1 days; // variable constant to manage withdraw time lock up for equilibrium
uint256 constant public WITHDRAW_TIME_TRANQUILLITY = 135 * 1 days; // variable constant to manage withdraw time lock up for tranquillity
uint256 constant public TOKEN_REWARD_PERCENT_SERENITY = 3555807; // variable constant to manage token reward percentage for serenity
uint256 constant public TOKEN_REWARD_PERCENT_EQUILIBRIUM = 10905365; // variable constant to manage token reward percentage for equilibrium
uint256 constant public TOKEN_REWARD_PERCENT_TRANQUILLITY = 26010053; // variable constant to manage token reward percentage for tranquillity
uint256 constant public TOKEN_PENALTY_PERCENT_SERENITY = 2411368; // variable constant to manage token penalty percentage for serenity
uint256 constant public TOKEN_PENALTY_PERCENT_EQUILIBRIUM = 7238052; // variable constant to manage token penalty percentage for equilibrium
uint256 constant public TOKEN_PENALTY_PERCENT_TRANQUILLITY = 14692434; // variable constant to manage token penalty percentage for tranquillity
uint256 constant public TOKEN_POOL_CAP = 25000000*(10**18); // variable constant to store maximaum pool cap value
// events to handle staking pause or unpause for token
event Paused();
event Unpaused();
/*
* ---------------------------------------------------------------------------------------------------------------------------
* Functions for owner.
* ---------------------------------------------------------------------------------------------------------------------------
*/
/**
* @dev get address of smart contract owner
* @return address of owner
*/
function getowner() public view returns (address) {
return _owner;
}
/**
* @dev modifier to check if the message sender is owner
*/
modifier onlyOwner() {
require(isOwner(),"You are not authenticate to make this transfer");
_;
}
/**
* @dev Internal function for modifier
*/
function isOwner() internal view returns (bool) {
return msg.sender == _owner;
}
/**
* @dev Transfer ownership of the smart contract. For owner only
* @return request status
*/
function transferOwnership(address newOwner) public onlyOwner returns (bool){
_owner = newOwner;
return true;
}
/*
* ---------------------------------------------------------------------------------------------------------------------------
* Functionality of Constructor and Interface
* ---------------------------------------------------------------------------------------------------------------------------
*/
// constructor to declare owner of the contract during time of deploy
constructor() public {
_owner = msg.sender;
}
// Interface declaration for contract
IToken itoken;
// function to set Contract Address for Token Functions
function setContractAddress(address tokenContractAddress) external onlyOwner returns(bool){
itoken = IToken(tokenContractAddress);
return true;
}
/*
* ----------------------------------------------------------------------------------------------------------------------------
* Owner functions of get value, set value and other Functionality
* ----------------------------------------------------------------------------------------------------------------------------
*/
// function to add token reward in contract
function addTokenReward(uint256 token) external onlyOwner returns(bool){
_ownerTokenAllowance = _ownerTokenAllowance.add(token);
itoken.transferFrom(msg.sender, address(this), token);
return true;
}
// function to withdraw added token reward in contract
function withdrawAddedTokenReward(uint256 token) external onlyOwner returns(bool){
require(token < _ownerTokenAllowance,"Value is not feasible, Please Try Again!!!");
_ownerTokenAllowance = _ownerTokenAllowance.sub(token);
itoken.transfer(msg.sender, token);
return true;
}
// function to get token reward in contract
function getTokenReward() public view returns(uint256){
return _ownerTokenAllowance;
}
// function to pause Token Staking
function pauseTokenStaking() public onlyOwner {
tokenPaused = true;
emit Paused();
}
// function to unpause Token Staking
function unpauseTokenStaking() public onlyOwner {
tokenPaused = false;
emit Unpaused();
}
/*
* ----------------------------------------------------------------------------------------------------------------------------
* Variable, Mapping for Token Staking Functionality
* ----------------------------------------------------------------------------------------------------------------------------
*/
// mapping for users with id => address Staking Address
mapping (uint256 => address) private _tokenStakingAddress;
// mapping for users with address => id staking id
mapping (address => uint256[]) private _tokenStakingId;
// mapping for users with id => Staking Time
mapping (uint256 => uint256) private _tokenStakingStartTime;
// mapping for users with id => End Time
mapping (uint256 => uint256) private _tokenStakingEndTime;
// mapping for users with id => Tokens
mapping (uint256 => uint256) private _usersTokens;
// mapping for users with id => Status
mapping (uint256 => bool) private _TokenTransactionstatus;
// mapping to keep track of final withdraw value of staked token
mapping(uint256=>uint256) private _finalTokenStakeWithdraw;
// mapping to keep track total number of staking days
mapping(uint256=>uint256) private _tokenTotalDays;
// variable to keep count of Token Staking
uint256 private _tokenStakingCount = 0;
// variable to keep track on reward added by owner
uint256 private _ownerTokenAllowance = 0;
// variable for token time management
uint256 private _tokentime;
// variable for token staking pause and unpause mechanism
bool public tokenPaused = false;
// variable for total Token staked by user
uint256 public totalStakedToken = 0;
// variable for total stake token in contract
uint256 public totalTokenStakesInContract = 0;
// variable for total stake token in a pool
uint256 public totalStakedTokenInSerenityPool = 0;
// variable for total stake token in a pool
uint256 public totalStakedTokenInEquilibriumPool = 0;
// variable for total stake token in a pool
uint256 public totalStakedTokenInTranquillityPool = 0;
// modifier to check the user for staking || Re-enterance Guard
modifier tokenStakeCheck(uint256 tokens, uint256 timePeriod){
require(tokens > 0, "Invalid Token Amount, Please Try Again!!! ");
require(timePeriod == PERIOD_SERENITY || timePeriod == PERIOD_EQUILIBRIUM || timePeriod == PERIOD_TRANQUILLITY, "Enter the Valid Time Period and Try Again !!!");
_;
}
/*
* ------------------------------------------------------------------------------------------------------------------------------
* Functions for Token Staking Functionality
* ------------------------------------------------------------------------------------------------------------------------------
*/
// function to performs staking for user tokens for a specific period of time
function stakeToken(uint256 tokens, uint256 time) public tokenStakeCheck(tokens, time) returns(bool){
require(tokenPaused == false, "Staking is Paused, Please try after staking get unpaused!!!");
if(time == PERIOD_SERENITY){
require(totalStakedTokenInSerenityPool.add(tokens) <= TOKEN_POOL_CAP, "Serenity Pool Limit Reached");
_tokentime = now + (time * 1 days);
_tokenStakingCount = _tokenStakingCount +1;
_tokenTotalDays[_tokenStakingCount] = time;
_tokenStakingAddress[_tokenStakingCount] = msg.sender;
_tokenStakingId[msg.sender].push(_tokenStakingCount);
_tokenStakingEndTime[_tokenStakingCount] = _tokentime;
_tokenStakingStartTime[_tokenStakingCount] = now;
_usersTokens[_tokenStakingCount] = tokens;
_TokenTransactionstatus[_tokenStakingCount] = false;
totalStakedToken = totalStakedToken.add(tokens);
totalTokenStakesInContract = totalTokenStakesInContract.add(tokens);
totalStakedTokenInSerenityPool = totalStakedTokenInSerenityPool.add(tokens);
itoken.transferFrom(msg.sender, address(this), tokens);
} else if (time == PERIOD_EQUILIBRIUM) {
require(totalStakedTokenInEquilibriumPool.add(tokens) <= TOKEN_POOL_CAP, "Equilibrium Pool Limit Reached");
_tokentime = now + (time * 1 days);
_tokenStakingCount = _tokenStakingCount +1;
_tokenTotalDays[_tokenStakingCount] = time;
_tokenStakingAddress[_tokenStakingCount] = msg.sender;
_tokenStakingId[msg.sender].push(_tokenStakingCount);
_tokenStakingEndTime[_tokenStakingCount] = _tokentime;
_tokenStakingStartTime[_tokenStakingCount] = now;
_usersTokens[_tokenStakingCount] = tokens;
_TokenTransactionstatus[_tokenStakingCount] = false;
totalStakedToken = totalStakedToken.add(tokens);
totalTokenStakesInContract = totalTokenStakesInContract.add(tokens);
totalStakedTokenInEquilibriumPool = totalStakedTokenInEquilibriumPool.add(tokens);
itoken.transferFrom(msg.sender, address(this), tokens);
} else if(time == PERIOD_TRANQUILLITY) {
require(totalStakedTokenInTranquillityPool.add(tokens) <= TOKEN_POOL_CAP, "Tranquillity Pool Limit Reached");
_tokentime = now + (time * 1 days);
_tokenStakingCount = _tokenStakingCount +1;
_tokenTotalDays[_tokenStakingCount] = time;
_tokenStakingAddress[_tokenStakingCount] = msg.sender;
_tokenStakingId[msg.sender].push(_tokenStakingCount);
_tokenStakingEndTime[_tokenStakingCount] = _tokentime;
_tokenStakingStartTime[_tokenStakingCount] = now;
_usersTokens[_tokenStakingCount] = tokens;
_TokenTransactionstatus[_tokenStakingCount] = false;
totalStakedToken = totalStakedToken.add(tokens);
totalTokenStakesInContract = totalTokenStakesInContract.add(tokens);
totalStakedTokenInTranquillityPool = totalStakedTokenInTranquillityPool.add(tokens);
itoken.transferFrom(msg.sender, address(this), tokens);
} else {
return false;
}
return true;
}
// function to get staking count for token
function getTokenStakingCount() public view returns(uint256){
return _tokenStakingCount;
}
// function to get total Staked tokens
function getTotalStakedToken() public view returns(uint256){
return totalStakedToken;
}
// function to calculate reward for the message sender for token
function getTokenRewardDetailsByStakingId(uint256 id) public view returns(uint256){
if(_tokenTotalDays[id] == PERIOD_SERENITY) {
return (_usersTokens[id]*TOKEN_REWARD_PERCENT_SERENITY/100000000);
} else if(_tokenTotalDays[id] == PERIOD_EQUILIBRIUM) {
return (_usersTokens[id]*TOKEN_REWARD_PERCENT_EQUILIBRIUM/100000000);
} else if(_tokenTotalDays[id] == PERIOD_TRANQUILLITY) {
return (_usersTokens[id]*TOKEN_REWARD_PERCENT_TRANQUILLITY/100000000);
} else{
return 0;
}
}
// function to calculate penalty for the message sender for token
function getTokenPenaltyDetailByStakingId(uint256 id) public view returns(uint256){
if(_tokenStakingEndTime[id] > now){
if(_tokenTotalDays[id]==PERIOD_SERENITY){
return (_usersTokens[id]*TOKEN_PENALTY_PERCENT_SERENITY/100000000);
} else if(_tokenTotalDays[id] == PERIOD_EQUILIBRIUM) {
return (_usersTokens[id]*TOKEN_PENALTY_PERCENT_EQUILIBRIUM/100000000);
} else if(_tokenTotalDays[id] == PERIOD_TRANQUILLITY) {
return (_usersTokens[id]*TOKEN_PENALTY_PERCENT_TRANQUILLITY/100000000);
} else {
return 0;
}
} else{
return 0;
}
}
// function to withdraw staked tokens
function withdrawStakedTokens(uint256 stakingId) public returns(bool) {
require(_tokenStakingAddress[stakingId] == msg.sender,"No staked token found on this address and ID");
require(_TokenTransactionstatus[stakingId] != true,"Either tokens are already withdrawn or blocked by admin");
if(_tokenTotalDays[stakingId] == PERIOD_SERENITY){
require(now >= _tokenStakingStartTime[stakingId] + WITHDRAW_TIME_SERENITY, "Unable to Withdraw Staked token before 45 days of staking start time, Please Try Again Later!!!");
_TokenTransactionstatus[stakingId] = true;
if(now >= _tokenStakingEndTime[stakingId]){
_finalTokenStakeWithdraw[stakingId] = _usersTokens[stakingId].add(getTokenRewardDetailsByStakingId(stakingId));
itoken.transfer(msg.sender,_finalTokenStakeWithdraw[stakingId]);
totalTokenStakesInContract = totalTokenStakesInContract.sub(_usersTokens[stakingId]);
totalStakedTokenInSerenityPool = totalStakedTokenInSerenityPool.sub(_usersTokens[stakingId]);
_ownerTokenAllowance = _ownerTokenAllowance.sub(getTokenRewardDetailsByStakingId(stakingId));
} else {
_finalTokenStakeWithdraw[stakingId] = _usersTokens[stakingId].add(getTokenPenaltyDetailByStakingId(stakingId));
itoken.transfer(msg.sender,_finalTokenStakeWithdraw[stakingId]);
totalTokenStakesInContract = totalTokenStakesInContract.sub(_usersTokens[stakingId]);
totalStakedTokenInSerenityPool = totalStakedTokenInSerenityPool.sub(_usersTokens[stakingId]);
_ownerTokenAllowance = _ownerTokenAllowance.sub(getTokenPenaltyDetailByStakingId(stakingId));
}
} else if(_tokenTotalDays[stakingId] == PERIOD_EQUILIBRIUM){
require(now >= _tokenStakingStartTime[stakingId] + WITHDRAW_TIME_EQUILIBRIUM, "Unable to Withdraw Staked token before 90 days of staking start time, Please Try Again Later!!!");
_TokenTransactionstatus[stakingId] = true;
if(now >= _tokenStakingEndTime[stakingId]){
_finalTokenStakeWithdraw[stakingId] = _usersTokens[stakingId].add(getTokenRewardDetailsByStakingId(stakingId));
itoken.transfer(msg.sender,_finalTokenStakeWithdraw[stakingId]);
totalTokenStakesInContract = totalTokenStakesInContract.sub(_usersTokens[stakingId]);
totalStakedTokenInEquilibriumPool = totalStakedTokenInEquilibriumPool.sub(_usersTokens[stakingId]);
_ownerTokenAllowance = _ownerTokenAllowance.sub(getTokenRewardDetailsByStakingId(stakingId));
} else {
_finalTokenStakeWithdraw[stakingId] = _usersTokens[stakingId].add(getTokenPenaltyDetailByStakingId(stakingId));
itoken.transfer(msg.sender,_finalTokenStakeWithdraw[stakingId]);
totalTokenStakesInContract = totalTokenStakesInContract.sub(_usersTokens[stakingId]);
totalStakedTokenInEquilibriumPool = totalStakedTokenInEquilibriumPool.sub(_usersTokens[stakingId]);
_ownerTokenAllowance = _ownerTokenAllowance.sub(getTokenPenaltyDetailByStakingId(stakingId));
}
} else if(_tokenTotalDays[stakingId] == PERIOD_TRANQUILLITY){
require(now >= _tokenStakingStartTime[stakingId] + WITHDRAW_TIME_TRANQUILLITY, "Unable to Withdraw Staked token before 135 days of staking start time, Please Try Again Later!!!");
_TokenTransactionstatus[stakingId] = true;
if(now >= _tokenStakingEndTime[stakingId]){
_finalTokenStakeWithdraw[stakingId] = _usersTokens[stakingId].add(getTokenRewardDetailsByStakingId(stakingId));
itoken.transfer(msg.sender,_finalTokenStakeWithdraw[stakingId]);
totalTokenStakesInContract = totalTokenStakesInContract.sub(_usersTokens[stakingId]);
totalStakedTokenInTranquillityPool = totalStakedTokenInTranquillityPool.sub(_usersTokens[stakingId]);
_ownerTokenAllowance = _ownerTokenAllowance.sub(getTokenRewardDetailsByStakingId(stakingId));
} else {
_finalTokenStakeWithdraw[stakingId] = _usersTokens[stakingId].add(getTokenPenaltyDetailByStakingId(stakingId));
itoken.transfer(msg.sender,_finalTokenStakeWithdraw[stakingId]);
totalTokenStakesInContract = totalTokenStakesInContract.sub(_usersTokens[stakingId]);
totalStakedTokenInTranquillityPool = totalStakedTokenInTranquillityPool.sub(_usersTokens[stakingId]);
_ownerTokenAllowance = _ownerTokenAllowance.sub(getTokenPenaltyDetailByStakingId(stakingId));
}
} else {
return false;
}
return true;
}
// function to get Final Withdraw Staked value for token
function getFinalTokenStakeWithdraw(uint256 id) public view returns(uint256){
return _finalTokenStakeWithdraw[id];
}
// function to get total token stake in contract
function getTotalTokenStakesInContract() public view returns(uint256){
return totalTokenStakesInContract;
}
/*
* -------------------------------------------------------------------------------------------------------------------------------
* Get Functions for Stake Token Functionality
* -------------------------------------------------------------------------------------------------------------------------------
*/
// function to get Token Staking address by id
function getTokenStakingAddressById(uint256 id) external view returns (address){
require(id <= _tokenStakingCount,"Unable to reterive data on specified id, Please try again!!");
return _tokenStakingAddress[id];
}
// function to get Token staking id by address
function getTokenStakingIdByAddress(address add) external view returns(uint256[]){
require(add != address(0),"Invalid Address, Pleae Try Again!!!");
return _tokenStakingId[add];
}
// function to get Token Staking Starting time by id
function getTokenStakingStartTimeById(uint256 id) external view returns(uint256){
require(id <= _tokenStakingCount,"Unable to reterive data on specified id, Please try again!!");
return _tokenStakingStartTime[id];
}
// function to get Token Staking Ending time by id
function getTokenStakingEndTimeById(uint256 id) external view returns(uint256){
require(id <= _tokenStakingCount,"Unable to reterive data on specified id, Please try again!!");
return _tokenStakingEndTime[id];
}
// function to get Token Staking Total Days by Id
function getTokenStakingTotalDaysById(uint256 id) external view returns(uint256){
require(id <= _tokenStakingCount,"Unable to reterive data on specified id, Please try again!!");
return _tokenTotalDays[id];
}
// function to get Staking tokens by id
function getStakingTokenById(uint256 id) external view returns(uint256){
require(id <= _tokenStakingCount,"Unable to reterive data on specified id, Please try again!!");
return _usersTokens[id];
}
// function to get Token lockstatus by id
function getTokenLockStatus(uint256 id) external view returns(bool){
require(id <= _tokenStakingCount,"Unable to reterive data on specified id, Please try again!!");
return _TokenTransactionstatus[id];
}
}
Compiler Settings
{"remappings":[],"optimizer":{"runs":200,"enabled":true},"libraries":{},"evmVersion":"byzantium","compilationTarget":{"CoretoStaking.sol":"CoretoStaking"}}
Contract ABI
[{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"getTokenStakingStartTimeById","inputs":[{"type":"uint256","name":"id"}],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[{"type":"bool","name":""}],"name":"withdrawStakedTokens","inputs":[{"type":"uint256","name":"stakingId"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"WITHDRAW_TIME_SERENITY","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[{"type":"bool","name":""}],"name":"addTokenReward","inputs":[{"type":"uint256","name":"token"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"TOKEN_PENALTY_PERCENT_SERENITY","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"getStakingTokenById","inputs":[{"type":"uint256","name":"id"}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"getTokenStakingCount","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"TOKEN_PENALTY_PERCENT_TRANQUILLITY","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"getTotalStakedToken","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[{"type":"bool","name":""}],"name":"setContractAddress","inputs":[{"type":"address","name":"tokenContractAddress"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"getTotalTokenStakesInContract","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"getTokenStakingEndTimeById","inputs":[{"type":"uint256","name":"id"}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"bool","name":""}],"name":"getTokenLockStatus","inputs":[{"type":"uint256","name":"id"}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"PERIOD_SERENITY","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"WITHDRAW_TIME_EQUILIBRIUM","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"TOKEN_PENALTY_PERCENT_EQUILIBRIUM","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"getFinalTokenStakeWithdraw","inputs":[{"type":"uint256","name":"id"}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"totalStakedTokenInTranquillityPool","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"totalStakedTokenInSerenityPool","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"pauseTokenStaking","inputs":[],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"getTokenPenaltyDetailByStakingId","inputs":[{"type":"uint256","name":"id"}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"getTokenRewardDetailsByStakingId","inputs":[{"type":"uint256","name":"id"}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"bool","name":""}],"name":"tokenPaused","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"unpauseTokenStaking","inputs":[],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"totalTokenStakesInContract","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"PERIOD_TRANQUILLITY","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address","name":""}],"name":"getTokenStakingAddressById","inputs":[{"type":"uint256","name":"id"}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"totalStakedTokenInEquilibriumPool","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"getTokenStakingTotalDaysById","inputs":[{"type":"uint256","name":"id"}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"PERIOD_EQUILIBRIUM","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"TOKEN_POOL_CAP","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[{"type":"bool","name":""}],"name":"withdrawAddedTokenReward","inputs":[{"type":"uint256","name":"token"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256[]","name":""}],"name":"getTokenStakingIdByAddress","inputs":[{"type":"address","name":"add"}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"WITHDRAW_TIME_TRANQUILLITY","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"totalStakedToken","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"TOKEN_REWARD_PERCENT_TRANQUILLITY","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"TOKEN_REWARD_PERCENT_SERENITY","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[{"type":"bool","name":""}],"name":"transferOwnership","inputs":[{"type":"address","name":"newOwner"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"TOKEN_REWARD_PERCENT_EQUILIBRIUM","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"getTokenReward","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address","name":""}],"name":"getowner","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[{"type":"bool","name":""}],"name":"stakeToken","inputs":[{"type":"uint256","name":"tokens"},{"type":"uint256","name":"time"}],"constant":false},{"type":"constructor","stateMutability":"nonpayable","payable":false,"inputs":[]},{"type":"event","name":"Paused","inputs":[],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[],"anonymous":false}]
Contract Creation Code
0x60806040526000600b819055600c819055600e805460ff19169055600f81905560108190556011819055601281905560135534801561003d57600080fd5b5060008054600160a060020a031916331790556123bc8061005f6000396000f3006080604052600436106102035763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663032f3b0981146102085780630a57336a146102325780630afd19211461025e5780632841a1431461027357806329bfd11f1461028b578063332a35d2146102a05780633e4ffb16146102b857806341521e33146102cd578063423eea07146102e2578063477bddaa146102f757806350ff92a91461031857806354439ad01461032d5780635673017a14610345578063572b42631461035d5780635d0d1f42146103725780635d5b8cab1461038757806360c2a3481461039c57806364d8c6c1146103b4578063731d2912146103c957806384698190146103de5780638586ca00146103f5578063863997b21461040d57806386c75e74146104255780638cc15d4f1461043a578063906459791461044f57806397e66ba2146104645780639d6c890d14610479578063a4cb6727146104ad578063b248c812146104c2578063b2a56b8f146104da578063b802e791146104ef578063b8c1fc3314610504578063b9f7549b1461051c578063c8a840af1461058d578063cb6d8ee6146105a2578063cc40c36d146105b7578063cf3e324c146105cc578063f2fde38b146105e1578063fa0bd08e14610602578063fa8eb78214610617578063fe0174bd1461062c578063ffab4bd914610641575b600080fd5b34801561021457600080fd5b5061022060043561065c565b60408051918252519081900360200190f35b34801561023e57600080fd5b5061024a6004356106d1565b604080519115158252519081900360200190f35b34801561026a57600080fd5b506102206110d7565b34801561027f57600080fd5b5061024a6004356110de565b34801561029757600080fd5b506102206111e7565b3480156102ac57600080fd5b506102206004356111ee565b3480156102c457600080fd5b50610220611260565b3480156102d957600080fd5b50610220611266565b3480156102ee57600080fd5b5061022061126d565b34801561030357600080fd5b5061024a600160a060020a0360043516611273565b34801561032457600080fd5b50610220611307565b34801561033957600080fd5b5061022060043561130d565b34801561035157600080fd5b5061024a60043561137f565b34801561036957600080fd5b506102206113f4565b34801561037e57600080fd5b506102206113f9565b34801561039357600080fd5b50610220611400565b3480156103a857600080fd5b50610220600435611407565b3480156103c057600080fd5b50610220611419565b3480156103d557600080fd5b5061022061141f565b3480156103ea57600080fd5b506103f3611425565b005b34801561040157600080fd5b506102206004356114bd565b34801561041957600080fd5b5061022060043561157a565b34801561043157600080fd5b5061024a61161e565b34801561044657600080fd5b506103f3611627565b34801561045b57600080fd5b506102206116bc565b34801561047057600080fd5b506102206116c2565b34801561048557600080fd5b506104916004356116c8565b60408051600160a060020a039092168252519081900360200190f35b3480156104b957600080fd5b50610220611743565b3480156104ce57600080fd5b50610220600435611749565b3480156104e657600080fd5b506102206117bb565b3480156104fb57600080fd5b506102206117c0565b34801561051057600080fd5b5061024a6004356117cf565b34801561052857600080fd5b5061053d600160a060020a036004351661191d565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610579578181015183820152602001610561565b505050509050019250505060405180910390f35b34801561059957600080fd5b50610220611a0f565b3480156105ae57600080fd5b50610220611a16565b3480156105c357600080fd5b50610220611a1c565b3480156105d857600080fd5b50610220611a24565b3480156105ed57600080fd5b5061024a600160a060020a0360043516611a2b565b34801561060e57600080fd5b50610220611abf565b34801561062357600080fd5b50610220611ac6565b34801561063857600080fd5b50610491611acc565b34801561064d57600080fd5b5061024a600435602435611adb565b600b546000908211156106bb576040805160e560020a62461bcd02815260206004820152603b60248201526000805160206123118339815191526044820152600080516020612331833981519152606482015290519081900360840190fd5b506000818152600560205260409020545b919050565b600081815260036020526040812054600160a060020a03163314610765576040805160e560020a62461bcd02815260206004820152602c60248201527f4e6f207374616b656420746f6b656e20666f756e64206f6e207468697320616460448201527f647265737320616e642049440000000000000000000000000000000000000000606482015290519081900360840190fd5b60008281526008602052604090205460ff161515600114156107f7576040805160e560020a62461bcd02815260206004820152603760248201527f45697468657220746f6b656e732061726520616c72656164792077697468647260448201527f61776e206f7220626c6f636b65642062792061646d696e000000000000000000606482015290519081900360840190fd5b6000828152600a6020526040902054605a1415610b0e57600082815260056020526040902054623b5380014210156108c5576040805160e560020a62461bcd02815260206004820152605f60248201527f556e61626c6520746f205769746864726177205374616b656420746f6b656e2060448201527f6265666f72652034352064617973206f66207374616b696e672073746172742060648201527f74696d652c20506c656173652054727920416761696e204c6174657221212100608482015290519081900360a40190fd5b6000828152600860209081526040808320805460ff1916600117905560069091529020544210610a13576109166108fb8361157a565b6000848152600760205260409020549063ffffffff61223916565b6000838152600960209081526040808320849055600254815160e060020a63a9059cbb02815233600482015260248101959095529051600160a060020a039091169363a9059cbb9360448083019493928390030190829087803b15801561097c57600080fd5b505af1158015610990573d6000803e3d6000fd5b505050506040513d60208110156109a657600080fd5b50506000828152600760205260409020546010546109c99163ffffffff61229d16565b6010556000828152600760205260409020546011546109ed9163ffffffff61229d16565b601155610a0b6109fc8361157a565b600c549063ffffffff61229d16565b600c55610b09565b610a1f6108fb836114bd565b6000838152600960209081526040808320849055600254815160e060020a63a9059cbb02815233600482015260248101959095529051600160a060020a039091169363a9059cbb9360448083019493928390030190829087803b158015610a8557600080fd5b505af1158015610a99573d6000803e3d6000fd5b505050506040513d6020811015610aaf57600080fd5b5050600082815260076020526040902054601054610ad29163ffffffff61229d16565b601055600082815260076020526040902054601154610af69163ffffffff61229d16565b601155610b056109fc836114bd565b600c555b6110cf565b6000828152600a602052604090205460b41415610dea576000828152600560205260409020546276a70001421015610bdc576040805160e560020a62461bcd02815260206004820152605f60248201527f556e61626c6520746f205769746864726177205374616b656420746f6b656e2060448201527f6265666f72652039302064617973206f66207374616b696e672073746172742060648201527f74696d652c20506c656173652054727920416761696e204c6174657221212100608482015290519081900360a40190fd5b6000828152600860209081526040808320805460ff1916600117905560069091529020544210610cf857610c126108fb8361157a565b6000838152600960209081526040808320849055600254815160e060020a63a9059cbb02815233600482015260248101959095529051600160a060020a039091169363a9059cbb9360448083019493928390030190829087803b158015610c7857600080fd5b505af1158015610c8c573d6000803e3d6000fd5b505050506040513d6020811015610ca257600080fd5b5050600082815260076020526040902054601054610cc59163ffffffff61229d16565b601055600082815260076020526040902054601254610ce99163ffffffff61229d16565b601255610a0b6109fc8361157a565b610d046108fb836114bd565b6000838152600960209081526040808320849055600254815160e060020a63a9059cbb02815233600482015260248101959095529051600160a060020a039091169363a9059cbb9360448083019493928390030190829087803b158015610d6a57600080fd5b505af1158015610d7e573d6000803e3d6000fd5b505050506040513d6020811015610d9457600080fd5b5050600082815260076020526040902054601054610db79163ffffffff61229d16565b601055600082815260076020526040902054601254610ddb9163ffffffff61229d16565b601255610b056109fc836114bd565b6000828152600a602052604090205461010e14156110c75760008281526005602052604090205462b1fa8001421015610eb9576040805160e560020a62461bcd02815260206004820152606060248201527f556e61626c6520746f205769746864726177205374616b656420746f6b656e2060448201527f6265666f7265203133352064617973206f66207374616b696e6720737461727460648201527f2074696d652c20506c656173652054727920416761696e204c61746572212121608482015290519081900360a40190fd5b6000828152600860209081526040808320805460ff1916600117905560069091529020544210610fd557610eef6108fb8361157a565b6000838152600960209081526040808320849055600254815160e060020a63a9059cbb02815233600482015260248101959095529051600160a060020a039091169363a9059cbb9360448083019493928390030190829087803b158015610f5557600080fd5b505af1158015610f69573d6000803e3d6000fd5b505050506040513d6020811015610f7f57600080fd5b5050600082815260076020526040902054601054610fa29163ffffffff61229d16565b601055600082815260076020526040902054601354610fc69163ffffffff61229d16565b601355610a0b6109fc8361157a565b610fe16108fb836114bd565b6000838152600960209081526040808320849055600254815160e060020a63a9059cbb02815233600482015260248101959095529051600160a060020a039091169363a9059cbb9360448083019493928390030190829087803b15801561104757600080fd5b505af115801561105b573d6000803e3d6000fd5b505050506040513d602081101561107157600080fd5b50506000828152600760205260409020546010546110949163ffffffff61229d16565b6010556000828152600760205260409020546013546110b89163ffffffff61229d16565b601355610b056109fc836114bd565b5060006106cc565b506001919050565b623b538081565b60006110e86122ff565b1515611140576040805160e560020a62461bcd02815260206004820152602e60248201526000805160206123518339815191526044820152600080516020612371833981519152606482015290519081900360840190fd5b600c54611153908363ffffffff61223916565b600c556002546040805160e060020a6323b872dd028152336004820152306024820152604481018590529051600160a060020a03909216916323b872dd916064808201926020929091908290030181600087803b1580156111b357600080fd5b505af11580156111c7573d6000803e3d6000fd5b505050506040513d60208110156111dd57600080fd5b5060019392505050565b6224cb6881565b600b5460009082111561124d576040805160e560020a62461bcd02815260206004820152603b60248201526000805160206123118339815191526044820152600080516020612331833981519152606482015290519081900360840190fd5b5060009081526007602052604090205490565b600b5490565b62e0305281565b600f5490565b600061127d6122ff565b15156112d5576040805160e560020a62461bcd02815260206004820152602e60248201526000805160206123518339815191526044820152600080516020612371833981519152606482015290519081900360840190fd5b5060028054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b60105490565b600b5460009082111561136c576040805160e560020a62461bcd02815260206004820152603b60248201526000805160206123118339815191526044820152600080516020612331833981519152606482015290519081900360840190fd5b5060009081526006602052604090205490565b600b546000908211156113de576040805160e560020a62461bcd02815260206004820152603b60248201526000805160206123118339815191526044820152600080516020612331833981519152606482015290519081900360840190fd5b5060009081526008602052604090205460ff1690565b605a81565b6276a70081565b626e71a481565b60009081526009602052604090205490565b60135481565b60115481565b61142d6122ff565b1515611485576040805160e560020a62461bcd02815260206004820152602e60248201526000805160206123518339815191526044820152600080516020612371833981519152606482015290519081900360840190fd5b600e805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b6000818152600660205260408120544210156110c7576000828152600a6020526040902054605a141561150d576000828152600760205260409020546305f5e100906224cb68025b0490506106cc565b6000828152600a602052604090205460b41415611543576000828152600760205260409020546305f5e10090626e71a402611505565b6000828152600a602052604090205461010e14156110c7576000828152600760205260409020546305f5e1009062e0305202611505565b6000818152600a6020526040812054605a14156115b0576000828152600760205260409020546305f5e10090623641df02611505565b6000828152600a602052604090205460b414156115e6576000828152600760205260409020546305f5e1009062a6671502611505565b6000828152600a602052604090205461010e14156110c7576000828152600760205260409020546305f5e1009063018ce1c502611505565b600e5460ff1681565b61162f6122ff565b1515611687576040805160e560020a62461bcd02815260206004820152602e60248201526000805160206123518339815191526044820152600080516020612371833981519152606482015290519081900360840190fd5b600e805460ff191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a1565b60105481565b61010e81565b600b54600090821115611727576040805160e560020a62461bcd02815260206004820152603b60248201526000805160206123118339815191526044820152600080516020612331833981519152606482015290519081900360840190fd5b50600090815260036020526040902054600160a060020a031690565b60125481565b600b546000908211156117a8576040805160e560020a62461bcd02815260206004820152603b60248201526000805160206123118339815191526044820152600080516020612331833981519152606482015290519081900360840190fd5b506000908152600a602052604090205490565b60b481565b6a14adf4b7320334b900000081565b60006117d96122ff565b1515611831576040805160e560020a62461bcd02815260206004820152602e60248201526000805160206123518339815191526044820152600080516020612371833981519152606482015290519081900360840190fd5b600c5482106118b0576040805160e560020a62461bcd02815260206004820152602a60248201527f56616c7565206973206e6f74206665617369626c652c20506c6561736520547260448201527f7920416761696e21212100000000000000000000000000000000000000000000606482015290519081900360840190fd5b600c546118c3908363ffffffff61229d16565b600c556002546040805160e060020a63a9059cbb028152336004820152602481018590529051600160a060020a039092169163a9059cbb916044808201926020929091908290030181600087803b1580156111b357600080fd5b6060600160a060020a03821615156119a5576040805160e560020a62461bcd02815260206004820152602360248201527f496e76616c696420416464726573732c20506c6561652054727920416761696e60448201527f2121210000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a03821660009081526004602090815260409182902080548351818402810184019094528084529091830182828015611a0357602002820191906000526020600020905b8154815260200190600101908083116119ef575b50505050509050919050565b62b1fa8081565b600f5481565b63018ce1c581565b623641df81565b6000611a356122ff565b1515611a8d576040805160e560020a62461bcd02815260206004820152602e60248201526000805160206123518339815191526044820152600080516020612371833981519152606482015290519081900360840190fd5b5060008054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b62a6671581565b600c5490565b600054600160a060020a031690565b60008282828211611b5c576040805160e560020a62461bcd02815260206004820152602a60248201527f496e76616c696420546f6b656e20416d6f756e742c20506c656173652054727960448201527f20416761696e2121212000000000000000000000000000000000000000000000606482015290519081900360840190fd5b605a811480611b6b575060b481145b80611b77575061010e81145b1515611bf3576040805160e560020a62461bcd02815260206004820152602d60248201527f456e746572207468652056616c69642054696d6520506572696f6420616e642060448201527f54727920416761696e2021212100000000000000000000000000000000000000606482015290519081900360840190fd5b600e5460ff1615611c74576040805160e560020a62461bcd02815260206004820152603b60248201527f5374616b696e67206973205061757365642c20506c656173652074727920616660448201527f746572207374616b696e672067657420756e7061757365642121210000000000606482015290519081900360840190fd5b605a841415611e7a576011546a14adf4b7320334b900000090611c9d908763ffffffff61223916565b1115611cf3576040805160e560020a62461bcd02815260206004820152601b60248201527f536572656e69747920506f6f6c204c696d697420526561636865640000000000604482015290519081900360640190fd5b426201518085028101600d908155600b805460019081018083556000908152600a602090815260408083208b90558454835260038252808320805473ffffffffffffffffffffffffffffffffffffffff19163390811790915583526004825280832085548154958601825590845282842090940193909355935483548252600685528282205582548152600584528181209490945581548452600783528084208990559054835260089091529020805460ff19169055600f54611dbc908663ffffffff61223916565b600f55601054611dd2908663ffffffff61223916565b601055601154611de8908663ffffffff61223916565b6011556002546040805160e060020a6323b872dd028152336004820152306024820152604481018890529051600160a060020a03909216916323b872dd916064808201926020929091908290030181600087803b158015611e4857600080fd5b505af1158015611e5c573d6000803e3d6000fd5b505050506040513d6020811015611e7257600080fd5b5061222c9050565b60b484141561204e576012546a14adf4b7320334b900000090611ea3908763ffffffff61223916565b1115611ef9576040805160e560020a62461bcd02815260206004820152601e60248201527f457175696c69627269756d20506f6f6c204c696d697420526561636865640000604482015290519081900360640190fd5b426201518085028101600d908155600b805460019081018083556000908152600a602090815260408083208b90558454835260038252808320805473ffffffffffffffffffffffffffffffffffffffff19163390811790915583526004825280832085548154958601825590845282842090940193909355935483548252600685528282205582548152600584528181209490945581548452600783528084208990559054835260089091529020805460ff19169055600f54611fc2908663ffffffff61223916565b600f55601054611fd8908663ffffffff61223916565b601055601254611fee908663ffffffff61223916565b6012556002546040805160e060020a6323b872dd028152336004820152306024820152604481018890529051600160a060020a03909216916323b872dd916064808201926020929091908290030181600087803b158015611e4857600080fd5b61010e841415612223576013546a14adf4b7320334b900000090612078908763ffffffff61223916565b11156120ce576040805160e560020a62461bcd02815260206004820152601f60248201527f5472616e7175696c6c69747920506f6f6c204c696d6974205265616368656400604482015290519081900360640190fd5b426201518085028101600d908155600b805460019081018083556000908152600a602090815260408083208b90558454835260038252808320805473ffffffffffffffffffffffffffffffffffffffff19163390811790915583526004825280832085548154958601825590845282842090940193909355935483548252600685528282205582548152600584528181209490945581548452600783528084208990559054835260089091529020805460ff19169055600f54612197908663ffffffff61223916565b600f556010546121ad908663ffffffff61223916565b6010556013546121c3908663ffffffff61223916565b6013556002546040805160e060020a6323b872dd028152336004820152306024820152604481018890529051600160a060020a03909216916323b872dd916064808201926020929091908290030181600087803b158015611e4857600080fd5b60009250612231565b600192505b505092915050565b600082820183811015612296576040805160e560020a62461bcd02815260206004820152601d60248201527f43616c63756c6174696f6e206572726f7220696e206164646974696f6e000000604482015290519081900360640190fd5b9392505050565b600080838311156122f8576040805160e560020a62461bcd02815260206004820181905260248201527f43616c63756c6174696f6e206572726f7220696e207375627472616374696f6e604482015290519081900360640190fd5b5050900390565b600054600160a060020a03163314905600556e61626c6520746f2072657465726976652064617461206f6e207370656369666965642069642c20506c656173652074727920616761696e21210000000000596f7520617265206e6f742061757468656e74696361746520746f206d616b652074686973207472616e73666572000000000000000000000000000000000000a165627a7a72305820ac4fe51b8de9da5600f2a4c4deb4cd209f8a2fdcc0fa995a26fe626fb3ab0e5d0029
Deployed ByteCode
0x6080604052600436106102035763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663032f3b0981146102085780630a57336a146102325780630afd19211461025e5780632841a1431461027357806329bfd11f1461028b578063332a35d2146102a05780633e4ffb16146102b857806341521e33146102cd578063423eea07146102e2578063477bddaa146102f757806350ff92a91461031857806354439ad01461032d5780635673017a14610345578063572b42631461035d5780635d0d1f42146103725780635d5b8cab1461038757806360c2a3481461039c57806364d8c6c1146103b4578063731d2912146103c957806384698190146103de5780638586ca00146103f5578063863997b21461040d57806386c75e74146104255780638cc15d4f1461043a578063906459791461044f57806397e66ba2146104645780639d6c890d14610479578063a4cb6727146104ad578063b248c812146104c2578063b2a56b8f146104da578063b802e791146104ef578063b8c1fc3314610504578063b9f7549b1461051c578063c8a840af1461058d578063cb6d8ee6146105a2578063cc40c36d146105b7578063cf3e324c146105cc578063f2fde38b146105e1578063fa0bd08e14610602578063fa8eb78214610617578063fe0174bd1461062c578063ffab4bd914610641575b600080fd5b34801561021457600080fd5b5061022060043561065c565b60408051918252519081900360200190f35b34801561023e57600080fd5b5061024a6004356106d1565b604080519115158252519081900360200190f35b34801561026a57600080fd5b506102206110d7565b34801561027f57600080fd5b5061024a6004356110de565b34801561029757600080fd5b506102206111e7565b3480156102ac57600080fd5b506102206004356111ee565b3480156102c457600080fd5b50610220611260565b3480156102d957600080fd5b50610220611266565b3480156102ee57600080fd5b5061022061126d565b34801561030357600080fd5b5061024a600160a060020a0360043516611273565b34801561032457600080fd5b50610220611307565b34801561033957600080fd5b5061022060043561130d565b34801561035157600080fd5b5061024a60043561137f565b34801561036957600080fd5b506102206113f4565b34801561037e57600080fd5b506102206113f9565b34801561039357600080fd5b50610220611400565b3480156103a857600080fd5b50610220600435611407565b3480156103c057600080fd5b50610220611419565b3480156103d557600080fd5b5061022061141f565b3480156103ea57600080fd5b506103f3611425565b005b34801561040157600080fd5b506102206004356114bd565b34801561041957600080fd5b5061022060043561157a565b34801561043157600080fd5b5061024a61161e565b34801561044657600080fd5b506103f3611627565b34801561045b57600080fd5b506102206116bc565b34801561047057600080fd5b506102206116c2565b34801561048557600080fd5b506104916004356116c8565b60408051600160a060020a039092168252519081900360200190f35b3480156104b957600080fd5b50610220611743565b3480156104ce57600080fd5b50610220600435611749565b3480156104e657600080fd5b506102206117bb565b3480156104fb57600080fd5b506102206117c0565b34801561051057600080fd5b5061024a6004356117cf565b34801561052857600080fd5b5061053d600160a060020a036004351661191d565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610579578181015183820152602001610561565b505050509050019250505060405180910390f35b34801561059957600080fd5b50610220611a0f565b3480156105ae57600080fd5b50610220611a16565b3480156105c357600080fd5b50610220611a1c565b3480156105d857600080fd5b50610220611a24565b3480156105ed57600080fd5b5061024a600160a060020a0360043516611a2b565b34801561060e57600080fd5b50610220611abf565b34801561062357600080fd5b50610220611ac6565b34801561063857600080fd5b50610491611acc565b34801561064d57600080fd5b5061024a600435602435611adb565b600b546000908211156106bb576040805160e560020a62461bcd02815260206004820152603b60248201526000805160206123118339815191526044820152600080516020612331833981519152606482015290519081900360840190fd5b506000818152600560205260409020545b919050565b600081815260036020526040812054600160a060020a03163314610765576040805160e560020a62461bcd02815260206004820152602c60248201527f4e6f207374616b656420746f6b656e20666f756e64206f6e207468697320616460448201527f647265737320616e642049440000000000000000000000000000000000000000606482015290519081900360840190fd5b60008281526008602052604090205460ff161515600114156107f7576040805160e560020a62461bcd02815260206004820152603760248201527f45697468657220746f6b656e732061726520616c72656164792077697468647260448201527f61776e206f7220626c6f636b65642062792061646d696e000000000000000000606482015290519081900360840190fd5b6000828152600a6020526040902054605a1415610b0e57600082815260056020526040902054623b5380014210156108c5576040805160e560020a62461bcd02815260206004820152605f60248201527f556e61626c6520746f205769746864726177205374616b656420746f6b656e2060448201527f6265666f72652034352064617973206f66207374616b696e672073746172742060648201527f74696d652c20506c656173652054727920416761696e204c6174657221212100608482015290519081900360a40190fd5b6000828152600860209081526040808320805460ff1916600117905560069091529020544210610a13576109166108fb8361157a565b6000848152600760205260409020549063ffffffff61223916565b6000838152600960209081526040808320849055600254815160e060020a63a9059cbb02815233600482015260248101959095529051600160a060020a039091169363a9059cbb9360448083019493928390030190829087803b15801561097c57600080fd5b505af1158015610990573d6000803e3d6000fd5b505050506040513d60208110156109a657600080fd5b50506000828152600760205260409020546010546109c99163ffffffff61229d16565b6010556000828152600760205260409020546011546109ed9163ffffffff61229d16565b601155610a0b6109fc8361157a565b600c549063ffffffff61229d16565b600c55610b09565b610a1f6108fb836114bd565b6000838152600960209081526040808320849055600254815160e060020a63a9059cbb02815233600482015260248101959095529051600160a060020a039091169363a9059cbb9360448083019493928390030190829087803b158015610a8557600080fd5b505af1158015610a99573d6000803e3d6000fd5b505050506040513d6020811015610aaf57600080fd5b5050600082815260076020526040902054601054610ad29163ffffffff61229d16565b601055600082815260076020526040902054601154610af69163ffffffff61229d16565b601155610b056109fc836114bd565b600c555b6110cf565b6000828152600a602052604090205460b41415610dea576000828152600560205260409020546276a70001421015610bdc576040805160e560020a62461bcd02815260206004820152605f60248201527f556e61626c6520746f205769746864726177205374616b656420746f6b656e2060448201527f6265666f72652039302064617973206f66207374616b696e672073746172742060648201527f74696d652c20506c656173652054727920416761696e204c6174657221212100608482015290519081900360a40190fd5b6000828152600860209081526040808320805460ff1916600117905560069091529020544210610cf857610c126108fb8361157a565b6000838152600960209081526040808320849055600254815160e060020a63a9059cbb02815233600482015260248101959095529051600160a060020a039091169363a9059cbb9360448083019493928390030190829087803b158015610c7857600080fd5b505af1158015610c8c573d6000803e3d6000fd5b505050506040513d6020811015610ca257600080fd5b5050600082815260076020526040902054601054610cc59163ffffffff61229d16565b601055600082815260076020526040902054601254610ce99163ffffffff61229d16565b601255610a0b6109fc8361157a565b610d046108fb836114bd565b6000838152600960209081526040808320849055600254815160e060020a63a9059cbb02815233600482015260248101959095529051600160a060020a039091169363a9059cbb9360448083019493928390030190829087803b158015610d6a57600080fd5b505af1158015610d7e573d6000803e3d6000fd5b505050506040513d6020811015610d9457600080fd5b5050600082815260076020526040902054601054610db79163ffffffff61229d16565b601055600082815260076020526040902054601254610ddb9163ffffffff61229d16565b601255610b056109fc836114bd565b6000828152600a602052604090205461010e14156110c75760008281526005602052604090205462b1fa8001421015610eb9576040805160e560020a62461bcd02815260206004820152606060248201527f556e61626c6520746f205769746864726177205374616b656420746f6b656e2060448201527f6265666f7265203133352064617973206f66207374616b696e6720737461727460648201527f2074696d652c20506c656173652054727920416761696e204c61746572212121608482015290519081900360a40190fd5b6000828152600860209081526040808320805460ff1916600117905560069091529020544210610fd557610eef6108fb8361157a565b6000838152600960209081526040808320849055600254815160e060020a63a9059cbb02815233600482015260248101959095529051600160a060020a039091169363a9059cbb9360448083019493928390030190829087803b158015610f5557600080fd5b505af1158015610f69573d6000803e3d6000fd5b505050506040513d6020811015610f7f57600080fd5b5050600082815260076020526040902054601054610fa29163ffffffff61229d16565b601055600082815260076020526040902054601354610fc69163ffffffff61229d16565b601355610a0b6109fc8361157a565b610fe16108fb836114bd565b6000838152600960209081526040808320849055600254815160e060020a63a9059cbb02815233600482015260248101959095529051600160a060020a039091169363a9059cbb9360448083019493928390030190829087803b15801561104757600080fd5b505af115801561105b573d6000803e3d6000fd5b505050506040513d602081101561107157600080fd5b50506000828152600760205260409020546010546110949163ffffffff61229d16565b6010556000828152600760205260409020546013546110b89163ffffffff61229d16565b601355610b056109fc836114bd565b5060006106cc565b506001919050565b623b538081565b60006110e86122ff565b1515611140576040805160e560020a62461bcd02815260206004820152602e60248201526000805160206123518339815191526044820152600080516020612371833981519152606482015290519081900360840190fd5b600c54611153908363ffffffff61223916565b600c556002546040805160e060020a6323b872dd028152336004820152306024820152604481018590529051600160a060020a03909216916323b872dd916064808201926020929091908290030181600087803b1580156111b357600080fd5b505af11580156111c7573d6000803e3d6000fd5b505050506040513d60208110156111dd57600080fd5b5060019392505050565b6224cb6881565b600b5460009082111561124d576040805160e560020a62461bcd02815260206004820152603b60248201526000805160206123118339815191526044820152600080516020612331833981519152606482015290519081900360840190fd5b5060009081526007602052604090205490565b600b5490565b62e0305281565b600f5490565b600061127d6122ff565b15156112d5576040805160e560020a62461bcd02815260206004820152602e60248201526000805160206123518339815191526044820152600080516020612371833981519152606482015290519081900360840190fd5b5060028054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b60105490565b600b5460009082111561136c576040805160e560020a62461bcd02815260206004820152603b60248201526000805160206123118339815191526044820152600080516020612331833981519152606482015290519081900360840190fd5b5060009081526006602052604090205490565b600b546000908211156113de576040805160e560020a62461bcd02815260206004820152603b60248201526000805160206123118339815191526044820152600080516020612331833981519152606482015290519081900360840190fd5b5060009081526008602052604090205460ff1690565b605a81565b6276a70081565b626e71a481565b60009081526009602052604090205490565b60135481565b60115481565b61142d6122ff565b1515611485576040805160e560020a62461bcd02815260206004820152602e60248201526000805160206123518339815191526044820152600080516020612371833981519152606482015290519081900360840190fd5b600e805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b6000818152600660205260408120544210156110c7576000828152600a6020526040902054605a141561150d576000828152600760205260409020546305f5e100906224cb68025b0490506106cc565b6000828152600a602052604090205460b41415611543576000828152600760205260409020546305f5e10090626e71a402611505565b6000828152600a602052604090205461010e14156110c7576000828152600760205260409020546305f5e1009062e0305202611505565b6000818152600a6020526040812054605a14156115b0576000828152600760205260409020546305f5e10090623641df02611505565b6000828152600a602052604090205460b414156115e6576000828152600760205260409020546305f5e1009062a6671502611505565b6000828152600a602052604090205461010e14156110c7576000828152600760205260409020546305f5e1009063018ce1c502611505565b600e5460ff1681565b61162f6122ff565b1515611687576040805160e560020a62461bcd02815260206004820152602e60248201526000805160206123518339815191526044820152600080516020612371833981519152606482015290519081900360840190fd5b600e805460ff191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a1565b60105481565b61010e81565b600b54600090821115611727576040805160e560020a62461bcd02815260206004820152603b60248201526000805160206123118339815191526044820152600080516020612331833981519152606482015290519081900360840190fd5b50600090815260036020526040902054600160a060020a031690565b60125481565b600b546000908211156117a8576040805160e560020a62461bcd02815260206004820152603b60248201526000805160206123118339815191526044820152600080516020612331833981519152606482015290519081900360840190fd5b506000908152600a602052604090205490565b60b481565b6a14adf4b7320334b900000081565b60006117d96122ff565b1515611831576040805160e560020a62461bcd02815260206004820152602e60248201526000805160206123518339815191526044820152600080516020612371833981519152606482015290519081900360840190fd5b600c5482106118b0576040805160e560020a62461bcd02815260206004820152602a60248201527f56616c7565206973206e6f74206665617369626c652c20506c6561736520547260448201527f7920416761696e21212100000000000000000000000000000000000000000000606482015290519081900360840190fd5b600c546118c3908363ffffffff61229d16565b600c556002546040805160e060020a63a9059cbb028152336004820152602481018590529051600160a060020a039092169163a9059cbb916044808201926020929091908290030181600087803b1580156111b357600080fd5b6060600160a060020a03821615156119a5576040805160e560020a62461bcd02815260206004820152602360248201527f496e76616c696420416464726573732c20506c6561652054727920416761696e60448201527f2121210000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a03821660009081526004602090815260409182902080548351818402810184019094528084529091830182828015611a0357602002820191906000526020600020905b8154815260200190600101908083116119ef575b50505050509050919050565b62b1fa8081565b600f5481565b63018ce1c581565b623641df81565b6000611a356122ff565b1515611a8d576040805160e560020a62461bcd02815260206004820152602e60248201526000805160206123518339815191526044820152600080516020612371833981519152606482015290519081900360840190fd5b5060008054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b62a6671581565b600c5490565b600054600160a060020a031690565b60008282828211611b5c576040805160e560020a62461bcd02815260206004820152602a60248201527f496e76616c696420546f6b656e20416d6f756e742c20506c656173652054727960448201527f20416761696e2121212000000000000000000000000000000000000000000000606482015290519081900360840190fd5b605a811480611b6b575060b481145b80611b77575061010e81145b1515611bf3576040805160e560020a62461bcd02815260206004820152602d60248201527f456e746572207468652056616c69642054696d6520506572696f6420616e642060448201527f54727920416761696e2021212100000000000000000000000000000000000000606482015290519081900360840190fd5b600e5460ff1615611c74576040805160e560020a62461bcd02815260206004820152603b60248201527f5374616b696e67206973205061757365642c20506c656173652074727920616660448201527f746572207374616b696e672067657420756e7061757365642121210000000000606482015290519081900360840190fd5b605a841415611e7a576011546a14adf4b7320334b900000090611c9d908763ffffffff61223916565b1115611cf3576040805160e560020a62461bcd02815260206004820152601b60248201527f536572656e69747920506f6f6c204c696d697420526561636865640000000000604482015290519081900360640190fd5b426201518085028101600d908155600b805460019081018083556000908152600a602090815260408083208b90558454835260038252808320805473ffffffffffffffffffffffffffffffffffffffff19163390811790915583526004825280832085548154958601825590845282842090940193909355935483548252600685528282205582548152600584528181209490945581548452600783528084208990559054835260089091529020805460ff19169055600f54611dbc908663ffffffff61223916565b600f55601054611dd2908663ffffffff61223916565b601055601154611de8908663ffffffff61223916565b6011556002546040805160e060020a6323b872dd028152336004820152306024820152604481018890529051600160a060020a03909216916323b872dd916064808201926020929091908290030181600087803b158015611e4857600080fd5b505af1158015611e5c573d6000803e3d6000fd5b505050506040513d6020811015611e7257600080fd5b5061222c9050565b60b484141561204e576012546a14adf4b7320334b900000090611ea3908763ffffffff61223916565b1115611ef9576040805160e560020a62461bcd02815260206004820152601e60248201527f457175696c69627269756d20506f6f6c204c696d697420526561636865640000604482015290519081900360640190fd5b426201518085028101600d908155600b805460019081018083556000908152600a602090815260408083208b90558454835260038252808320805473ffffffffffffffffffffffffffffffffffffffff19163390811790915583526004825280832085548154958601825590845282842090940193909355935483548252600685528282205582548152600584528181209490945581548452600783528084208990559054835260089091529020805460ff19169055600f54611fc2908663ffffffff61223916565b600f55601054611fd8908663ffffffff61223916565b601055601254611fee908663ffffffff61223916565b6012556002546040805160e060020a6323b872dd028152336004820152306024820152604481018890529051600160a060020a03909216916323b872dd916064808201926020929091908290030181600087803b158015611e4857600080fd5b61010e841415612223576013546a14adf4b7320334b900000090612078908763ffffffff61223916565b11156120ce576040805160e560020a62461bcd02815260206004820152601f60248201527f5472616e7175696c6c69747920506f6f6c204c696d6974205265616368656400604482015290519081900360640190fd5b426201518085028101600d908155600b805460019081018083556000908152600a602090815260408083208b90558454835260038252808320805473ffffffffffffffffffffffffffffffffffffffff19163390811790915583526004825280832085548154958601825590845282842090940193909355935483548252600685528282205582548152600584528181209490945581548452600783528084208990559054835260089091529020805460ff19169055600f54612197908663ffffffff61223916565b600f556010546121ad908663ffffffff61223916565b6010556013546121c3908663ffffffff61223916565b6013556002546040805160e060020a6323b872dd028152336004820152306024820152604481018890529051600160a060020a03909216916323b872dd916064808201926020929091908290030181600087803b158015611e4857600080fd5b60009250612231565b600192505b505092915050565b600082820183811015612296576040805160e560020a62461bcd02815260206004820152601d60248201527f43616c63756c6174696f6e206572726f7220696e206164646974696f6e000000604482015290519081900360640190fd5b9392505050565b600080838311156122f8576040805160e560020a62461bcd02815260206004820181905260248201527f43616c63756c6174696f6e206572726f7220696e207375627472616374696f6e604482015290519081900360640190fd5b5050900390565b600054600160a060020a03163314905600556e61626c6520746f2072657465726976652064617461206f6e207370656369666965642069642c20506c656173652074727920616761696e21210000000000596f7520617265206e6f742061757468656e74696361746520746f206d616b652074686973207472616e73666572000000000000000000000000000000000000a165627a7a72305820ac4fe51b8de9da5600f2a4c4deb4cd209f8a2fdcc0fa995a26fe626fb3ab0e5d0029