Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 25 from a total of 94 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Transfer Ownersh... | 12614419 | 1719 days ago | IN | 0 ETH | 0.00120607 | ||||
| Lock Contract | 12614387 | 1719 days ago | IN | 0 ETH | 0.00128928 | ||||
| Transfer V2Owner... | 12614295 | 1719 days ago | IN | 0 ETH | 0.00141129 | ||||
| Un Stake | 12589493 | 1723 days ago | IN | 0 ETH | 0.00537453 | ||||
| Un Stake | 12586295 | 1724 days ago | IN | 0 ETH | 0.00588028 | ||||
| Un Stake | 12582099 | 1724 days ago | IN | 0 ETH | 0.00928845 | ||||
| Un Stake | 12580649 | 1724 days ago | IN | 0 ETH | 0.00613379 | ||||
| Un Stake | 12575420 | 1725 days ago | IN | 0 ETH | 0.00781803 | ||||
| Un Stake | 12575383 | 1725 days ago | IN | 0 ETH | 0.00806254 | ||||
| Un Stake | 12573803 | 1725 days ago | IN | 0 ETH | 0.01112144 | ||||
| Un Stake | 12566981 | 1727 days ago | IN | 0 ETH | 0.00689624 | ||||
| Un Stake | 12566959 | 1727 days ago | IN | 0 ETH | 0.00826424 | ||||
| Un Stake | 12563713 | 1727 days ago | IN | 0 ETH | 0.02672494 | ||||
| Un Stake | 12554790 | 1728 days ago | IN | 0 ETH | 0.00879958 | ||||
| Un Stake | 12554743 | 1728 days ago | IN | 0 ETH | 0.00101334 | ||||
| Un Stake | 12554661 | 1728 days ago | IN | 0 ETH | 0.00733581 | ||||
| Un Stake | 12553111 | 1729 days ago | IN | 0 ETH | 0.00859735 | ||||
| Un Stake | 12547134 | 1730 days ago | IN | 0 ETH | 0.00616486 | ||||
| Un Stake | 12545233 | 1730 days ago | IN | 0 ETH | 0.01390525 | ||||
| Un Stake | 12538100 | 1731 days ago | IN | 0 ETH | 0.00713152 | ||||
| Un Stake | 12537983 | 1731 days ago | IN | 0 ETH | 0.00796212 | ||||
| Un Stake | 12524461 | 1733 days ago | IN | 0 ETH | 0.01562944 | ||||
| Un Stake | 12524167 | 1733 days ago | IN | 0 ETH | 0.02277144 | ||||
| Un Stake | 12521954 | 1734 days ago | IN | 0 ETH | 0.01959307 | ||||
| Un Stake | 12521937 | 1734 days ago | IN | 0 ETH | 0.02397204 |
Advanced mode: Intended for advanced users or developers and will display all Internal Transactions including zero value transfers.
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
|||
|---|---|---|---|---|---|---|---|---|
| Unstake Status | 16423304 | 1135 days ago | 0 ETH | |||||
| Unstake Status | 14817406 | 1375 days ago | 0 ETH | |||||
| Unstake Status | 14780050 | 1381 days ago | 0 ETH | |||||
| Unstake Status | 14370982 | 1446 days ago | 0 ETH | |||||
| Unstake Status | 14370976 | 1446 days ago | 0 ETH | |||||
| Unstake Status | 13685655 | 1552 days ago | 0 ETH | |||||
| Unstake Status | 13618976 | 1563 days ago | 0 ETH | |||||
| Unstake Status | 13596353 | 1566 days ago | 0 ETH | |||||
| Unstake Status | 13541667 | 1575 days ago | 0 ETH | |||||
| Unstake Status | 13511562 | 1579 days ago | 0 ETH | |||||
| Unstake Status | 13472874 | 1586 days ago | 0 ETH | |||||
| Unstake Status | 13472851 | 1586 days ago | 0 ETH | |||||
| Unstake Status | 13434132 | 1592 days ago | 0 ETH | |||||
| Unstake Status | 13313530 | 1610 days ago | 0 ETH | |||||
| Unstake Status | 13293442 | 1614 days ago | 0 ETH | |||||
| Unstake Status | 13273946 | 1617 days ago | 0 ETH | |||||
| Unstake Status | 13257861 | 1619 days ago | 0 ETH | |||||
| Unstake Status | 13232361 | 1623 days ago | 0 ETH | |||||
| Unstake Status | 13232361 | 1623 days ago | 0 ETH | |||||
| Unstake Status | 13227025 | 1624 days ago | 0 ETH | |||||
| Unstake Status | 13191165 | 1629 days ago | 0 ETH | |||||
| Unstake Status | 13190955 | 1629 days ago | 0 ETH | |||||
| Unstake Status | 13190936 | 1629 days ago | 0 ETH | |||||
| Total Un Staking... | 13151712 | 1636 days ago | 0 ETH | |||||
| Total Un Staking... | 13151712 | 1636 days ago | 0 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
UnifarmV2Fixed
Compiler Version
v0.7.6+commit.7338295f
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2021-05-14
*/
// Sources flattened with hardhat v2.1.2 https://hardhat.org
// File contracts/access/Context.sol
// SPDX-License-Identifier: MIT;
pragma solidity >=0.6.0 <=0.8.0;
/*
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with GSN meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address payable) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes memory) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
// File contracts/security/Pausable.sol
pragma solidity >=0.6.0 <=0.8.0;
/**
* @dev Contract module which allows children to implement an emergency stop
* mechanism that can be triggered by an authorized account.
*
* This module is used through inheritance. It will make available the
* modifiers `whenNotPaused` and `whenPaused`, which can be applied to
* the functions of your contract. Note that they will not be pausable by
* simply including this module, only once the modifiers are put in place.
*/
abstract contract Pausable is Context {
/**
* @dev Emitted when the pause is triggered by `account`.
*/
event Paused(address account);
/**
* @dev Emitted when the pause is lifted by `account`.
*/
event Unpaused(address account);
bool private _paused;
/**
* @dev Initializes the contract in unpaused state.
*/
constructor() {
_paused = false;
}
/**
* @dev Returns true if the contract is paused, and false otherwise.
*/
function paused() public view virtual returns (bool) {
return _paused;
}
/**
* @dev Modifier to make a function callable only when the contract is not paused.
*
* Requirements:
*
* - The contract must not be paused.
*/
modifier whenNotPaused() {
require(!paused(), "Pausable: paused");
_;
}
/**
* @dev Modifier to make a function callable only when the contract is paused.
*
* Requirements:
*
* - The contract must be paused.
*/
modifier whenPaused() {
require(paused(), "Pausable: not paused");
_;
}
/**
* @dev Triggers stopped state.
*
* Requirements:
*
* - The contract must not be paused.
*/
function _pause() internal virtual whenNotPaused {
_paused = true;
emit Paused(_msgSender());
}
/**
* @dev Returns to normal state.
*
* Requirements:
*
* - The contract must be paused.
*/
function _unpause() internal virtual whenPaused {
_paused = false;
emit Unpaused(_msgSender());
}
}
// File contracts/access/Ownable.sol
pragma solidity ^0.7.6;
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Pausable {
address public _owner;
address public _admin;
event OwnershipTransferred(
address indexed previousOwner,
address indexed newOwner
);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor(address ownerAddress) {
_owner = msg.sender;
_admin = ownerAddress;
emit OwnershipTransferred(address(0), _owner);
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyAdmin() {
require(_admin == _msgSender(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public onlyAdmin {
emit OwnershipTransferred(_owner, _admin);
_owner = _admin;
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
// File contracts/proxy/abstract/OwnableV2.sol
pragma solidity ^0.7.6;
abstract contract OwnableV2 {
function transferOwnership(address newOwner) external virtual;
function owner() external virtual returns (address);
}
// File contracts/proxy/abstract/AdminV2.sol
pragma solidity ^0.7.6;
abstract contract AdminV2 is OwnableV2 {
struct tokenInfo {
bool isExist;
uint8 decimal;
uint256 userStakeLimit;
uint256 maxStake;
uint256 lockableDays;
bool optionableStatus;
}
uint256 public stakeDuration;
uint256 public refPercentage;
uint256 public optionableBenefit;
mapping(address => address[]) public tokensSequenceList;
mapping(address => tokenInfo) public tokenDetails;
mapping(address => mapping(address => uint256)) public tokenDailyDistribution;
mapping(address => mapping(address => bool)) public tokenBlockedStatus;
function safeWithdraw(address tokenAddress, uint256 amount) external virtual;
}
// File contracts/proxy/abstract/Unifarm.sol
pragma solidity ^0.7.6;
abstract contract Unifarm is AdminV2 {
mapping(address => uint256) public totalStaking;
function viewStakingDetails(address _user)
public
view
virtual
returns (
address[] memory,
address[] memory,
bool[] memory,
uint256[] memory,
uint256[] memory,
uint256[] memory
);
}
// File contracts/libraries/SafeMath.sol
pragma solidity >=0.6.0 <=0.8.0;
/**
* @dev Wrappers over Solidity's arithmetic operations with added overflow
* checks.
*
* Arithmetic operations in Solidity wrap on overflow. This can easily result
* in bugs, because programmers usually assume that an overflow raises an
* error, which is the standard behavior in high level programming languages.
* `SafeMath` restores this intuition by reverting the transaction when an
* operation overflows.
*
* Using this library instead of the unchecked operations eliminates an entire
* class of bugs, so it's recommended to use it always.
*/
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
uint256 c = a + b;
if (c < a) return (false, 0);
return (true, c);
}
/**
* @dev Returns the substraction of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
if (b > a) return (false, 0);
return (true, a - b);
}
/**
* @dev Returns the multiplication of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) return (true, 0);
uint256 c = a * b;
if (c / a != b) return (false, 0);
return (true, c);
}
/**
* @dev Returns the division of two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
if (b == 0) return (false, 0);
return (true, a / b);
}
/**
* @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
if (b == 0) return (false, 0);
return (true, a % b);
}
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
*
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
require(b <= a, "SafeMath: subtraction overflow");
return a - b;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
*
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) return 0;
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
/**
* @dev Returns the integer division of two unsigned integers, reverting on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
require(b > 0, "SafeMath: division by zero");
return a / b;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
require(b > 0, "SafeMath: modulo by zero");
return a % b;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {trySub}.
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
require(b <= a, errorMessage);
return a - b;
}
/**
* @dev Returns the integer division of two unsigned integers, reverting with custom message on
* division by zero. The result is rounded towards zero.
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {tryDiv}.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
require(b > 0, errorMessage);
return a / b;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting with custom message when dividing by zero.
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {tryMod}.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
require(b > 0, errorMessage);
return a % b;
}
}
// File contracts/abstract/IERC20.sol
pragma solidity >=0.6.0 <=0.8.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `recipient`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address recipient, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender)
external
view
returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `sender` to `recipient` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(
address sender,
address recipient,
uint256 amount
) external returns (bool);
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
}
// File contracts/UnifarmV2Fixed.sol
pragma solidity ^0.7.6;
contract UnifarmV2Fixed is Ownable {
struct lockabelToken {
uint256 lockableDays;
bool optionableStatus;
}
Unifarm public uniV2;
using SafeMath for uint256;
uint256[] public intervalDays = [1, 8, 15, 22, 29, 36];
uint256 public constant DAYS = 1 days;
mapping(address => uint256) public totalUnStakingB;
mapping(address => uint256) public totalUnStakingA;
mapping(address => lockabelToken) public lockableDetailsB;
mapping(address => mapping(uint256 => bool)) public unstakeStatus;
event IntervalDaysDetails(uint256[] updatedIntervals, uint256 time);
event Claim(
address indexed userAddress,
address indexed stakedTokenAddress,
address indexed tokenAddress,
uint256 claimRewards,
uint256 time
);
event UnStake(
address indexed userAddress,
address indexed unStakedtokenAddress,
uint256 unStakedAmount,
uint256 time,
uint256 stakeID
);
event ReferralEarn(
address indexed userAddress,
address indexed callerAddress,
address indexed rewardTokenAddress,
uint256 rewardAmount,
uint256 time
);
event LockableTokenDetails(
address indexed tokenAddress,
uint256 lockableDys,
bool optionalbleStatus,
uint256 updatedTime
);
event WithdrawDetails(
address indexed tokenAddress,
uint256 withdrawalAmount,
uint256 time
);
constructor(address v2Address) Ownable(msg.sender) {
uniV2 = Unifarm(v2Address);
}
function init(address[] memory tokenAddress)
external
onlyOwner
returns (bool)
{
for (uint256 i = 0; i < tokenAddress.length; i++) {
transferFromContractV2(tokenAddress[i]);
}
return true;
}
function transferFromContractV2(address tokenAddress) internal {
uint256 bal = IERC20(tokenAddress).balanceOf(address(uniV2));
if (bal > 0) uniV2.safeWithdraw(tokenAddress, bal);
}
/**
* @notice send rewards
* @param stakedToken Stake amount of the user
* @param tokenAddress Reward token address
* @param amount Amount to be transferred as reward
*/
function sendToken(
address user,
address stakedToken,
address tokenAddress,
uint256 amount
) internal {
// Checks
if (tokenAddress != address(0)) {
require(
IERC20(tokenAddress).balanceOf(address(this)) >= amount,
"SEND: Insufficient Balance in Contract"
);
IERC20(tokenAddress).transfer(user, amount);
emit Claim(user, stakedToken, tokenAddress, amount, block.timestamp);
}
}
/**
* @notice Unstake and claim rewards
* @param stakeId Stake ID of the user
*/
function unStake(address user, uint256 stakeId) external whenNotPaused {
require(
msg.sender == user || msg.sender == _owner,
"UNSTAKE: Invalid User Entry"
);
(
,
address[] memory tokenAddress,
bool[] memory activeStatus,
,
uint256[] memory stakedAmount,
uint256[] memory startTime
) = (uniV2.viewStakingDetails(user));
// lockableDays check
require(
lockableDetailsB[tokenAddress[stakeId]].lockableDays <= block.timestamp,
"Token Locked"
);
// optional lock check
if (lockableDetailsB[tokenAddress[stakeId]].optionableStatus == true) {
require(
startTime[stakeId].add(uniV2.stakeDuration()) <= block.timestamp,
"Locked in optional lock"
);
}
// Checks
if (unstakeStatus[user][stakeId] == false && activeStatus[stakeId] == true)
unstakeStatus[user][stakeId] = true;
else revert("UNSTAKE : Unstaked Already");
// State updation
uint256 totalStaking =
uniV2.totalStaking(tokenAddress[stakeId]).sub(
totalUnStakingB[tokenAddress[stakeId]].add(
totalUnStakingA[tokenAddress[stakeId]]
)
);
totalUnStakingB[tokenAddress[stakeId]] = totalUnStakingB[
tokenAddress[stakeId]
]
.add(stakedAmount[stakeId]);
// Balance check
require(
IERC20(tokenAddress[stakeId]).balanceOf(address(this)) >=
stakedAmount[stakeId],
"UNSTAKE : Insufficient Balance"
);
IERC20(tokenAddress[stakeId]).transfer(user, stakedAmount[stakeId]);
claimRewards(user, stakeId, totalStaking);
// Emit state changes
emit UnStake(
user,
tokenAddress[stakeId],
stakedAmount[stakeId],
block.timestamp,
stakeId
);
}
function updateIntervalDays(uint256[] memory _interval) external onlyOwner {
intervalDays = new uint256[](0);
for (uint8 i = 0; i < _interval.length; i++) {
uint256 noD = uniV2.stakeDuration().div(DAYS);
require(noD > _interval[i], "Invalid Interval Day");
intervalDays.push(_interval[i]);
}
emit IntervalDaysDetails(intervalDays, block.timestamp);
}
function lockableToken(
address tokenAddress,
uint8 lockableStatus,
uint256 lockedDays,
bool optionableStatus
) external onlyOwner {
require(
lockableStatus == 1 || lockableStatus == 2 || lockableStatus == 3,
"Invalid Lockable Status"
);
(bool tokenExist, , , , , ) = uniV2.tokenDetails(tokenAddress);
require(tokenExist == true, "Token Not Exist");
if (lockableStatus == 1) {
lockableDetailsB[tokenAddress].lockableDays = block.timestamp.add(
lockedDays
);
} else if (lockableStatus == 2)
lockableDetailsB[tokenAddress].lockableDays = 0;
else if (lockableStatus == 3)
lockableDetailsB[tokenAddress].optionableStatus = optionableStatus;
emit LockableTokenDetails(
tokenAddress,
lockableDetailsB[tokenAddress].lockableDays,
lockableDetailsB[tokenAddress].optionableStatus,
block.timestamp
);
}
function transferV2Ownership(address newOwner) external onlyOwner {
uniV2.transferOwnership(newOwner);
}
function safeWithdraw(address tokenAddress, uint256 amount)
external
onlyOwner
{
require(
IERC20(tokenAddress).balanceOf(address(this)) >= amount,
"SAFEWITHDRAW: Insufficient Balance"
);
require(
IERC20(tokenAddress).transfer(_owner, amount) == true,
"SAFEWITHDRAW: Transfer failed"
);
emit WithdrawDetails(tokenAddress, amount, block.timestamp);
}
function updateV2Address(address v2Address)
external
onlyOwner
returns (bool)
{
uniV2 = Unifarm(v2Address);
return true;
}
function updateTotalUnstakingA(
address[] memory tokenAddress,
uint256[] memory tokenAmount
) external onlyOwner returns (bool) {
require(tokenAddress.length == tokenAmount.length, "Invalid Input");
for (uint8 i = 0; i < tokenAddress.length; i++) {
totalUnStakingA[tokenAddress[i]] = tokenAmount[i];
}
return true;
}
function totalStakingDetails(address tokenAddress)
external
view
returns (uint256)
{
uint256 totalStaking =
uniV2.totalStaking(tokenAddress).sub(
totalUnStakingB[tokenAddress].add(totalUnStakingA[tokenAddress])
);
return totalStaking;
}
function emergencyUnstake(
uint256 stakeId,
address userAddress,
address[] memory rewardtokens,
uint256[] memory amount
) external onlyOwner {
(
address[] memory referrerAddress,
address[] memory tokenAddress,
bool[] memory activeStatus,
,
uint256[] memory stakedAmount,
) = (uniV2.viewStakingDetails(userAddress));
// Checks
if (
unstakeStatus[userAddress][stakeId] == false &&
activeStatus[stakeId] == true
) unstakeStatus[userAddress][stakeId] = true;
else revert("EMERGENCY: Unstaked Already");
transferFromContractV2(tokenAddress[stakeId]);
// Balance check
require(
IERC20(tokenAddress[stakeId]).balanceOf(address(this)) >=
stakedAmount[stakeId],
"EMERGENCY : Insufficient Balance"
);
totalUnStakingB[tokenAddress[stakeId]] = totalUnStakingB[
tokenAddress[stakeId]
]
.add(stakedAmount[stakeId]);
IERC20(tokenAddress[stakeId]).transfer(userAddress, stakedAmount[stakeId]);
for (uint256 i = 0; i < rewardtokens.length; i++) {
require(
IERC20(rewardtokens[i]).balanceOf(address(this)) >= amount[i],
"EMERGENCY : Insufficient Reward Balance"
);
uint256 rewardsEarned = amount[i];
transferFromContractV2(rewardtokens[i]);
if (referrerAddress[stakeId] != address(0)) {
uint256 refEarned =
(rewardsEarned.mul(uniV2.refPercentage())).div(100 ether);
rewardsEarned = rewardsEarned.sub(refEarned);
require(
IERC20(rewardtokens[i]).transfer(referrerAddress[stakeId], refEarned),
"EMERGENCY : Transfer Failed"
);
emit ReferralEarn(
referrerAddress[stakeId],
userAddress,
rewardtokens[i],
refEarned,
block.timestamp
);
}
IERC20(rewardtokens[i]).transfer(userAddress, rewardsEarned);
}
// Emit state changes
emit UnStake(
userAddress,
tokenAddress[stakeId],
stakedAmount[stakeId],
block.timestamp,
stakeId
);
}
function lockContract(bool pauseStatus) external onlyOwner {
if (pauseStatus == true) _pause();
else if (pauseStatus == false) _unpause();
}
/**
* @notice Get rewards for one day
* @param stakedAmount Stake amount of the user
* @param stakedToken Staked token address of the user
* @param rewardToken Reward token address
* @param totalStake totalStakeAmount
* @return reward One dayh reward for the user
*/
function getOneDayReward(
uint256 stakedAmount,
address stakedToken,
address rewardToken,
uint256 totalStake
) public view returns (uint256 reward) {
uint256 lockBenefit;
if (lockableDetailsB[stakedToken].optionableStatus) {
stakedAmount = stakedAmount.mul(uniV2.optionableBenefit());
lockBenefit = stakedAmount.mul(uniV2.optionableBenefit().sub(1));
reward = (
stakedAmount.mul(uniV2.tokenDailyDistribution(stakedToken, rewardToken))
)
.div(totalStake.add(lockBenefit));
} else
reward = (
stakedAmount.mul(uniV2.tokenDailyDistribution(stakedToken, rewardToken))
)
.div(totalStake);
}
function claimRewards(
address user,
uint256 stakeId,
uint256 totalStaking
) internal {
(
address[] memory referrerAddress,
address[] memory tokenAddress,
,
,
uint256[] memory stakedAmount,
uint256[] memory startTime
) = (uniV2.viewStakingDetails(user));
// Local variables
uint256 interval;
uint256 endOfProfit;
interval = startTime[stakeId].add(uniV2.stakeDuration());
if (interval > block.timestamp) endOfProfit = block.timestamp;
else endOfProfit = startTime[stakeId].add(uniV2.stakeDuration());
interval = endOfProfit.sub(startTime[stakeId]);
// Reward calculation
if (interval >= DAYS)
_rewardCalculation(
user,
referrerAddress[stakeId],
tokenAddress[stakeId],
stakedAmount[stakeId],
interval,
totalStaking
);
}
function _rewardCalculation(
address user,
address referrerAddress,
address stakedToken,
uint256 stakedAmount,
uint256 interval,
uint256 totalStake
) internal {
uint256 rewardsEarned;
uint256 noOfDays;
noOfDays = interval.div(DAYS);
rewardsEarned = noOfDays.mul(
getOneDayReward(stakedAmount, stakedToken, stakedToken, totalStake)
);
// Referrer Earning
if (referrerAddress != address(0)) {
uint256 refEarned =
(rewardsEarned.mul(uniV2.refPercentage())).div(100 ether);
rewardsEarned = rewardsEarned.sub(refEarned);
require(
IERC20(stakedToken).transfer(referrerAddress, refEarned),
"Transfer Failed"
);
emit ReferralEarn(
referrerAddress,
user,
stakedToken,
refEarned,
block.timestamp
);
}
// Rewards Send
sendToken(user, stakedToken, stakedToken, rewardsEarned);
uint8 i = 1;
while (i < intervalDays.length) {
if (noOfDays >= intervalDays[i]) {
uint256 balDays = noOfDays.sub((intervalDays[i].sub(1)));
address rewardToken = uniV2.tokensSequenceList(stakedToken, i);
if (
rewardToken != stakedToken &&
uniV2.tokenBlockedStatus(stakedToken, rewardToken) == false
) {
rewardsEarned = balDays.mul(
getOneDayReward(stakedAmount, stakedToken, rewardToken, totalStake)
);
// Referrer Earning
if (referrerAddress != address(0)) {
uint256 refEarned =
(rewardsEarned.mul(uniV2.refPercentage())).div(100 ether);
rewardsEarned = rewardsEarned.sub(refEarned);
require(
IERC20(rewardToken).transfer(referrerAddress, refEarned),
"Transfer Failed"
);
emit ReferralEarn(
referrerAddress,
user,
rewardToken,
refEarned,
block.timestamp
);
}
// Rewards Send
sendToken(user, stakedToken, rewardToken, rewardsEarned);
}
i = i + 1;
} else {
break;
}
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"v2Address","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"userAddress","type":"address"},{"indexed":true,"internalType":"address","name":"stakedTokenAddress","type":"address"},{"indexed":true,"internalType":"address","name":"tokenAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"claimRewards","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256[]","name":"updatedIntervals","type":"uint256[]"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"IntervalDaysDetails","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"tokenAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"lockableDys","type":"uint256"},{"indexed":false,"internalType":"bool","name":"optionalbleStatus","type":"bool"},{"indexed":false,"internalType":"uint256","name":"updatedTime","type":"uint256"}],"name":"LockableTokenDetails","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"userAddress","type":"address"},{"indexed":true,"internalType":"address","name":"callerAddress","type":"address"},{"indexed":true,"internalType":"address","name":"rewardTokenAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"rewardAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"ReferralEarn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"userAddress","type":"address"},{"indexed":true,"internalType":"address","name":"unStakedtokenAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"unStakedAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"stakeID","type":"uint256"}],"name":"UnStake","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"tokenAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"withdrawalAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"WithdrawDetails","type":"event"},{"inputs":[],"name":"DAYS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"stakeId","type":"uint256"},{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"address[]","name":"rewardtokens","type":"address[]"},{"internalType":"uint256[]","name":"amount","type":"uint256[]"}],"name":"emergencyUnstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"stakedAmount","type":"uint256"},{"internalType":"address","name":"stakedToken","type":"address"},{"internalType":"address","name":"rewardToken","type":"address"},{"internalType":"uint256","name":"totalStake","type":"uint256"}],"name":"getOneDayReward","outputs":[{"internalType":"uint256","name":"reward","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"tokenAddress","type":"address[]"}],"name":"init","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"intervalDays","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"pauseStatus","type":"bool"}],"name":"lockContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lockableDetailsB","outputs":[{"internalType":"uint256","name":"lockableDays","type":"uint256"},{"internalType":"bool","name":"optionableStatus","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint8","name":"lockableStatus","type":"uint8"},{"internalType":"uint256","name":"lockedDays","type":"uint256"},{"internalType":"bool","name":"optionableStatus","type":"bool"}],"name":"lockableToken","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"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"safeWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"totalStakingDetails","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalUnStakingA","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalUnStakingB","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferV2Ownership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"stakeId","type":"uint256"}],"name":"unStake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniV2","outputs":[{"internalType":"contract Unifarm","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"unstakeStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_interval","type":"uint256[]"}],"name":"updateIntervalDays","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"tokenAddress","type":"address[]"},{"internalType":"uint256[]","name":"tokenAmount","type":"uint256[]"}],"name":"updateTotalUnstakingA","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"v2Address","type":"address"}],"name":"updateV2Address","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
61014060405260016080908152600860a052600f60c052601660e052601d6101005260246101205262000037906003906006620000fb565b503480156200004557600080fd5b50604051620040b8380380620040b8833981810160405260208110156200006b57600080fd5b505160008054610100338181026001600160a81b031990931692909217808455600180546001600160a01b0319168417905560405192939190046001600160a01b0316917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600280546001600160a01b0319166001600160a01b039290921691909117905562000167565b8280548282559060005260206000209081019282156200013e579160200282015b828111156200013e578251829060ff169055916020019190600101906200011c565b506200014c92915062000150565b5090565b5b808211156200014c576000815560010162000151565b613f4180620001776000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c80639bc11c94116100c3578063c922e9371161007c578063c922e937146105d5578063d43135061461070d578063d93938141461074a578063db7564f514610776578063f2fde38b1461079c578063ffae4049146107c257610158565b80639bc11c94146104b5578063b104e006146104e1578063b2bdfa7b146104fe578063beab17a014610506578063c549e6b91461052c578063c6044c461461053457610158565b8063715018a611610115578063715018a6146103dd57806375d752b3146103e55780638617f90c1461040b578063897cceee1461044a5780638a995967146104695780638c4bd0a01461048f57610158565b806301193ad71461015d57806301bc45c914610200578063056e407b146102245780634cd365311461035b5780635058c460146103a95780635c975abb146103d5575b600080fd5b6101fe6004803603602081101561017357600080fd5b810190602081018135600160201b81111561018d57600080fd5b82018360208201111561019f57600080fd5b803590602001918460208302840111600160201b831117156101c057600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506107ca945050505050565b005b610208610a03565b604080516001600160a01b039092168252519081900360200190f35b6103476004803603604081101561023a57600080fd5b810190602081018135600160201b81111561025457600080fd5b82018360208201111561026657600080fd5b803590602001918460208302840111600160201b8311171561028757600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156102d657600080fd5b8201836020820111156102e857600080fd5b803590602001918460208302840111600160201b8311171561030957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610a12945050505050565b604080519115158252519081900360200190f35b6103976004803603608081101561037157600080fd5b508035906001600160a01b03602082013581169160408101359091169060600135610b28565b60408051918252519081900360200190f35b6101fe600480360360408110156103bf57600080fd5b506001600160a01b038135169060200135610d6b565b610347610fb3565b6101fe610fbc565b6101fe600480360360208110156103fb57600080fd5b50356001600160a01b0316611082565b6104316004803603602081101561042157600080fd5b50356001600160a01b0316611148565b6040805192835290151560208301528051918290030190f35b6101fe6004803603602081101561046057600080fd5b50351515611164565b6103976004803603602081101561047f57600080fd5b50356001600160a01b03166111e9565b610397600480360360208110156104a557600080fd5b50356001600160a01b0316611270565b610347600480360360408110156104cb57600080fd5b506001600160a01b038135169060200135611282565b610397600480360360208110156104f757600080fd5b50356112a2565b6102086112c3565b6103976004803603602081101561051c57600080fd5b50356001600160a01b03166112d7565b6103976112e9565b6103476004803603602081101561054a57600080fd5b810190602081018135600160201b81111561056457600080fd5b82018360208201111561057657600080fd5b803590602001918460208302840111600160201b8311171561059757600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506112f0945050505050565b6101fe600480360360808110156105eb57600080fd5b8135916001600160a01b0360208201351691810190606081016040820135600160201b81111561061a57600080fd5b82018360208201111561062c57600080fd5b803590602001918460208302840111600160201b8311171561064d57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561069c57600080fd5b8201836020820111156106ae57600080fd5b803590602001918460208302840111600160201b831117156106cf57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611388945050505050565b6101fe6004803603608081101561072357600080fd5b506001600160a01b038135169060ff60208201351690604081013590606001351515611f6a565b6101fe6004803603604081101561076057600080fd5b506001600160a01b038135169060200135612202565b6103476004803603602081101561078c57600080fd5b50356001600160a01b0316612c62565b6101fe600480360360208110156107b257600080fd5b50356001600160a01b0316612ce6565b610208612dee565b6107d2612dfd565b60005461010090046001600160a01b03908116911614610827576040805162461bcd60e51b81526020600482018190526024820152600080516020613eec833981519152604482015290519081900360640190fd5b604080516000815260208101918290525161084491600391613dd5565b5060005b81518160ff1610156109815760006108dd62015180600260009054906101000a90046001600160a01b03166001600160a01b03166340f02ab66040518163ffffffff1660e01b815260040160206040518083038186803b1580156108ab57600080fd5b505afa1580156108bf573d6000803e3d6000fd5b505050506040513d60208110156108d557600080fd5b505190612e01565b9050828260ff16815181106108ee57fe5b60200260200101518111610940576040805162461bcd60e51b8152602060048201526014602482015273496e76616c696420496e74657276616c2044617960601b604482015290519081900360640190fd5b6003838360ff168151811061095157fe5b60209081029190910181015182546001818101855560009485529290932090920191909155919091019050610848565b507f29635226d0b00834767b0cf38daca8dc0fe978152b0a8a5b39eb281126352361600342604051808060200183815260200182810382528481815481526020019150805480156109f157602002820191906000526020600020905b8154815260200190600101908083116109dd575b5050935050505060405180910390a150565b6001546001600160a01b031681565b6000610a1c612dfd565b60005461010090046001600160a01b03908116911614610a71576040805162461bcd60e51b81526020600482018190526024820152600080516020613eec833981519152604482015290519081900360640190fd5b8151835114610ab7576040805162461bcd60e51b815260206004820152600d60248201526c125b9d985b1a5908125b9c1d5d609a1b604482015290519081900360640190fd5b60005b83518160ff161015610b1c57828160ff1681518110610ad557fe5b602002602001015160056000868460ff1681518110610af057fe5b6020908102919091018101516001600160a01b0316825281019190915260400160002055600101610aba565b50600190505b92915050565b6001600160a01b038316600090815260066020526040812060010154819060ff1615610d015760025460408051630253126360e11b81529051610bc7926001600160a01b0316916304a624c6916004808301926020929190829003018186803b158015610b9457600080fd5b505afa158015610ba8573d6000803e3d6000fd5b505050506040513d6020811015610bbe57600080fd5b50518790612e68565b9550610c58610c516001600260009054906101000a90046001600160a01b03166001600160a01b03166304a624c66040518163ffffffff1660e01b815260040160206040518083038186803b158015610c1f57600080fd5b505afa158015610c33573d6000803e3d6000fd5b505050506040513d6020811015610c4957600080fd5b505190612ec1565b8790612e68565b9050610cfa610c678483612f1e565b6002546040805163061dce6960e21b81526001600160a01b038a8116600483015289811660248301529151610cf493929092169163187739a491604480820192602092909190829003018186803b158015610cc157600080fd5b505afa158015610cd5573d6000803e3d6000fd5b505050506040513d6020811015610ceb57600080fd5b50518990612e68565b90612e01565b9150610d62565b6002546040805163061dce6960e21b81526001600160a01b03888116600483015287811660248301529151610d5f938793610cf49391169163187739a491604480820192602092909190829003018186803b158015610cc157600080fd5b91505b50949350505050565b610d73612dfd565b60005461010090046001600160a01b03908116911614610dc8576040805162461bcd60e51b81526020600482018190526024820152600080516020613eec833981519152604482015290519081900360640190fd5b80826001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610e1657600080fd5b505afa158015610e2a573d6000803e3d6000fd5b505050506040513d6020811015610e4057600080fd5b50511015610e7f5760405162461bcd60e51b8152600401808060200182810382526022815260200180613e5c6022913960400191505060405180910390fd5b816001600160a01b031663a9059cbb600060019054906101000a90046001600160a01b0316836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610eeb57600080fd5b505af1158015610eff573d6000803e3d6000fd5b505050506040513d6020811015610f1557600080fd5b50511515600114610f6d576040805162461bcd60e51b815260206004820152601d60248201527f5341464557495448445241573a205472616e73666572206661696c6564000000604482015290519081900360640190fd5b6040805182815242602082015281516001600160a01b038516927fcb92e2679de255302c9b8d0673cbdf8ef54667e943bf8f049bcaf6a85926ba1a928290030190a25050565b60005460ff1690565b610fc4612dfd565b6001546001600160a01b03908116911614611014576040805162461bcd60e51b81526020600482018190526024820152600080516020613eec833981519152604482015290519081900360640190fd5b600154600080546040516001600160a01b0393841693610100909204909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600154600080546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b61108a612dfd565b60005461010090046001600160a01b039081169116146110df576040805162461bcd60e51b81526020600482018190526024820152600080516020613eec833981519152604482015290519081900360640190fd5b6002546040805163f2fde38b60e01b81526001600160a01b0384811660048301529151919092169163f2fde38b91602480830192600092919082900301818387803b15801561112d57600080fd5b505af1158015611141573d6000803e3d6000fd5b5050505050565b6006602052600090815260409020805460019091015460ff1682565b61116c612dfd565b60005461010090046001600160a01b039081169116146111c1576040805162461bcd60e51b81526020600482018190526024820152600080516020613eec833981519152604482015290519081900360640190fd5b600181151514156111d9576111d4612f78565b6111e6565b806111e6576111e6613018565b50565b6001600160a01b038116600090815260056020908152604080832054600490925282205482916112699161121c91612f1e565b60025460408051637053cd8b60e11b81526001600160a01b0388811660048301529151919092169163e0a79b16916024808301926020929190829003018186803b158015610c1f57600080fd5b9392505050565b60046020526000908152604090205481565b600760209081526000928352604080842090915290825290205460ff1681565b600381815481106112b257600080fd5b600091825260209091200154905081565b60005461010090046001600160a01b031681565b60056020526000908152604090205481565b6201518081565b60006112fa612dfd565b60005461010090046001600160a01b0390811691161461134f576040805162461bcd60e51b81526020600482018190526024820152600080516020613eec833981519152604482015290519081900360640190fd5b60005b825181101561137f5761137783828151811061136a57fe5b602002602001015161309b565b600101611352565b50600192915050565b611390612dfd565b60005461010090046001600160a01b039081169116146113e5576040805162461bcd60e51b81526020600482018190526024820152600080516020613eec833981519152604482015290519081900360640190fd5b600254604080516326fa24e960e01b81526001600160a01b038681166004830152915160009384938493849391909216916326fa24e99160248083019286929190829003018186803b15801561143a57600080fd5b505afa15801561144e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260c081101561147757600080fd5b8101908080516040519392919084600160201b82111561149657600080fd5b9083019060208201858111156114ab57600080fd5b82518660208202830111600160201b821117156114c757600080fd5b82525081516020918201928201910280838360005b838110156114f45781810151838201526020016114dc565b5050505090500160405260200180516040519392919084600160201b82111561151c57600080fd5b90830190602082018581111561153157600080fd5b82518660208202830111600160201b8211171561154d57600080fd5b82525081516020918201928201910280838360005b8381101561157a578181015183820152602001611562565b5050505090500160405260200180516040519392919084600160201b8211156115a257600080fd5b9083019060208201858111156115b757600080fd5b82518660208202830111600160201b821117156115d357600080fd5b82525081516020918201928201910280838360005b838110156116005781810151838201526020016115e8565b5050505090500160405260200180516040519392919084600160201b82111561162857600080fd5b90830190602082018581111561163d57600080fd5b82518660208202830111600160201b8211171561165957600080fd5b82525081516020918201928201910280838360005b8381101561168657818101518382015260200161166e565b5050505090500160405260200180516040519392919084600160201b8211156116ae57600080fd5b9083019060208201858111156116c357600080fd5b82518660208202830111600160201b821117156116df57600080fd5b82525081516020918201928201910280838360005b8381101561170c5781810151838201526020016116f4565b5050505090500160405260200180516040519392919084600160201b82111561173457600080fd5b90830190602082018581111561174957600080fd5b82518660208202830111600160201b8211171561176557600080fd5b82525081516020918201928201910280838360005b8381101561179257818101518382015260200161177a565b505050509050016040525050505094505093509350935060076000886001600160a01b03166001600160a01b03168152602001908152602001600020600089815260200190815260200160002060009054906101000a900460ff16151560001515148015611817575081888151811061180757fe5b6020026020010151151560011515145b1561184f576001600160a01b03871660009081526007602090815260408083208b84529091529020805460ff1916600117905561189c565b6040805162461bcd60e51b815260206004820152601b60248201527f454d455247454e43593a20556e7374616b656420416c72656164790000000000604482015290519081900360640190fd5b6118ab83898151811061136a57fe5b8088815181106118b757fe5b60200260200101518389815181106118cb57fe5b60200260200101516001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561191f57600080fd5b505afa158015611933573d6000803e3d6000fd5b505050506040513d602081101561194957600080fd5b5051101561199e576040805162461bcd60e51b815260206004820181905260248201527f454d455247454e4359203a20496e73756666696369656e742042616c616e6365604482015290519081900360640190fd5b6119fc8189815181106119ad57fe5b602002602001015160046000868c815181106119c557fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054612f1e90919063ffffffff16565b60046000858b81518110611a0c57fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550828881518110611a4457fe5b60200260200101516001600160a01b031663a9059cbb88838b81518110611a6757fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611ab557600080fd5b505af1158015611ac9573d6000803e3d6000fd5b505050506040513d6020811015611adf57600080fd5b50600090505b8651811015611ede57858181518110611afa57fe5b6020026020010151878281518110611b0e57fe5b60200260200101516001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015611b6257600080fd5b505afa158015611b76573d6000803e3d6000fd5b505050506040513d6020811015611b8c57600080fd5b50511015611bcb5760405162461bcd60e51b8152600401808060200182810382526027815260200180613ea46027913960400191505060405180910390fd5b6000868281518110611bd957fe5b60200260200101519050611bf288838151811061136a57fe5b60006001600160a01b0316868b81518110611c0957fe5b60200260200101516001600160a01b031614611e3f576000611cb268056bc75e2d63100000610cf4600260009054906101000a90046001600160a01b03166001600160a01b031663e5c468696040518163ffffffff1660e01b815260040160206040518083038186803b158015611c7f57600080fd5b505afa158015611c93573d6000803e3d6000fd5b505050506040513d6020811015611ca957600080fd5b50518590612e68565b9050611cbe8282612ec1565b9150888381518110611ccc57fe5b60200260200101516001600160a01b031663a9059cbb888d81518110611cee57fe5b6020026020010151836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611d3d57600080fd5b505af1158015611d51573d6000803e3d6000fd5b505050506040513d6020811015611d6757600080fd5b5051611dba576040805162461bcd60e51b815260206004820152601b60248201527f454d455247454e4359203a205472616e73666572204661696c65640000000000604482015290519081900360640190fd5b888381518110611dc657fe5b60200260200101516001600160a01b03168a6001600160a01b0316888d81518110611ded57fe5b60200260200101516001600160a01b03167fcc30edb66a991e48ca3676c277d3a35485ebfaf3016fa9536663b2689c8f5eef8442604051808381526020018281526020019250505060405180910390a4505b878281518110611e4b57fe5b60200260200101516001600160a01b031663a9059cbb8a836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611ea957600080fd5b505af1158015611ebd573d6000803e3d6000fd5b505050506040513d6020811015611ed357600080fd5b505050600101611ae5565b50828881518110611eeb57fe5b60200260200101516001600160a01b0316876001600160a01b03167fa4b627609e711628747558b171b04b9636337afdadac065ee7113fb91eab0b72838b81518110611f3357fe5b6020026020010151428c60405180848152602001838152602001828152602001935050505060405180910390a35050505050505050565b611f72612dfd565b60005461010090046001600160a01b03908116911614611fc7576040805162461bcd60e51b81526020600482018190526024820152600080516020613eec833981519152604482015290519081900360640190fd5b8260ff1660011480611fdc57508260ff166002145b80611fea57508260ff166003145b61203b576040805162461bcd60e51b815260206004820152601760248201527f496e76616c6964204c6f636b61626c6520537461747573000000000000000000604482015290519081900360640190fd5b6002546040805163dd4be68360e01b81526001600160a01b0387811660048301529151600093929092169163dd4be6839160248082019260c092909190829003018186803b15801561208c57600080fd5b505afa1580156120a0573d6000803e3d6000fd5b505050506040513d60c08110156120b657600080fd5b50519050600181151514612103576040805162461bcd60e51b815260206004820152600f60248201526e151bdad95b88139bdd08115e1a5cdd608a1b604482015290519081900360640190fd5b8360ff1660011415612137576121194284612f1e565b6001600160a01b038616600090815260066020526040902055612195565b8360ff1660021415612161576001600160a01b038516600090815260066020526040812055612195565b8360ff1660031415612195576001600160a01b0385166000908152600660205260409020600101805460ff19168315151790555b6001600160a01b0385166000818152600660209081526040918290208054600190910154835191825260ff16151591810191909152428183015290517f4030f7d2425e172fe94d03a4cfd07dcdbc4909529bdf15d2732aa1559ff9be7c9181900360600190a25050505050565b61220a610fb3565b1561224f576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b336001600160a01b0383161480612275575060005461010090046001600160a01b031633145b6122c6576040805162461bcd60e51b815260206004820152601b60248201527f554e5354414b453a20496e76616c6964205573657220456e7472790000000000604482015290519081900360640190fd5b600254604080516326fa24e960e01b81526001600160a01b038581166004830152915160009384938493849391909216916326fa24e99160248083019286929190829003018186803b15801561231b57600080fd5b505afa15801561232f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260c081101561235857600080fd5b8101908080516040519392919084600160201b82111561237757600080fd5b90830190602082018581111561238c57600080fd5b82518660208202830111600160201b821117156123a857600080fd5b82525081516020918201928201910280838360005b838110156123d55781810151838201526020016123bd565b5050505090500160405260200180516040519392919084600160201b8211156123fd57600080fd5b90830190602082018581111561241257600080fd5b82518660208202830111600160201b8211171561242e57600080fd5b82525081516020918201928201910280838360005b8381101561245b578181015183820152602001612443565b5050505090500160405260200180516040519392919084600160201b82111561248357600080fd5b90830190602082018581111561249857600080fd5b82518660208202830111600160201b821117156124b457600080fd5b82525081516020918201928201910280838360005b838110156124e15781810151838201526020016124c9565b5050505090500160405260200180516040519392919084600160201b82111561250957600080fd5b90830190602082018581111561251e57600080fd5b82518660208202830111600160201b8211171561253a57600080fd5b82525081516020918201928201910280838360005b8381101561256757818101518382015260200161254f565b5050505090500160405260200180516040519392919084600160201b82111561258f57600080fd5b9083019060208201858111156125a457600080fd5b82518660208202830111600160201b821117156125c057600080fd5b82525081516020918201928201910280838360005b838110156125ed5781810151838201526020016125d5565b5050505090500160405260200180516040519392919084600160201b82111561261557600080fd5b90830190602082018581111561262a57600080fd5b82518660208202830111600160201b8211171561264657600080fd5b82525081516020918201928201910280838360005b8381101561267357818101518382015260200161265b565b5050505090500160405250505095509550509450945050426006600086888151811061269b57fe5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600001541115612709576040805162461bcd60e51b815260206004820152600c60248201526b151bdad95b88131bd8dad95960a21b604482015290519081900360640190fd5b6006600085878151811061271957fe5b6020908102919091018101516001600160a01b0316825281019190915260400160002060019081015460ff161515141561284257426127ef600260009054906101000a90046001600160a01b03166001600160a01b03166340f02ab66040518163ffffffff1660e01b815260040160206040518083038186803b15801561279f57600080fd5b505afa1580156127b3573d6000803e3d6000fd5b505050506040513d60208110156127c957600080fd5b505183518490899081106127d957fe5b6020026020010151612f1e90919063ffffffff16565b1115612842576040805162461bcd60e51b815260206004820152601760248201527f4c6f636b656420696e206f7074696f6e616c206c6f636b000000000000000000604482015290519081900360640190fd5b6001600160a01b038616600090815260076020908152604080832088845290915290205460ff1615801561288d575082858151811061287d57fe5b6020026020010151151560011515145b156128c5576001600160a01b03861660009081526007602090815260408083208884529091529020805460ff19166001179055612912565b6040805162461bcd60e51b815260206004820152601a60248201527f554e5354414b45203a20556e7374616b656420416c7265616479000000000000604482015290519081900360640190fd5b60006129cb61296360056000888a8151811061292a57fe5b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205460046000898b815181106119c557fe5b60025487516001600160a01b039091169063e0a79b169089908b90811061298657fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610c1f57600080fd5b90506129f48387815181106129dc57fe5b602002602001015160046000888a815181106119c557fe5b60046000878981518110612a0457fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550828681518110612a3c57fe5b6020026020010151858781518110612a5057fe5b60200260200101516001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015612aa457600080fd5b505afa158015612ab8573d6000803e3d6000fd5b505050506040513d6020811015612ace57600080fd5b50511015612b23576040805162461bcd60e51b815260206004820152601e60248201527f554e5354414b45203a20496e73756666696369656e742042616c616e63650000604482015290519081900360640190fd5b848681518110612b2f57fe5b60200260200101516001600160a01b031663a9059cbb88858981518110612b5257fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612ba057600080fd5b505af1158015612bb4573d6000803e3d6000fd5b505050506040513d6020811015612bca57600080fd5b50612bd8905087878361318f565b848681518110612be457fe5b60200260200101516001600160a01b0316876001600160a01b03167fa4b627609e711628747558b171b04b9636337afdadac065ee7113fb91eab0b72858981518110612c2c57fe5b6020026020010151428a60405180848152602001838152602001828152602001935050505060405180910390a350505050505050565b6000612c6c612dfd565b60005461010090046001600160a01b03908116911614612cc1576040805162461bcd60e51b81526020600482018190526024820152600080516020613eec833981519152604482015290519081900360640190fd5b50600280546001600160a01b0383166001600160a01b03199091161790556001919050565b612cee612dfd565b60005461010090046001600160a01b03908116911614612d43576040805162461bcd60e51b81526020600482018190526024820152600080516020613eec833981519152604482015290519081900360640190fd5b6001600160a01b038116612d885760405162461bcd60e51b8152600401808060200182810382526026815260200180613e7e6026913960400191505060405180910390fd5b600080546040516001600160a01b038085169361010090930416917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6002546001600160a01b031681565b3390565b6000808211612e57576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381612e6057fe5b049392505050565b600082612e7757506000610b22565b82820282848281612e8457fe5b04146112695760405162461bcd60e51b8152600401808060200182810382526021815260200180613ecb6021913960400191505060405180910390fd5b600082821115612f18576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015611269576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b612f80610fb3565b15612fc5576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612ffb612dfd565b604080516001600160a01b039092168252519081900360200190a1565b613020610fb3565b613068576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612ffb612dfd565b600254604080516370a0823160e01b81526001600160a01b03928316600482015290516000928416916370a08231916024808301926020929190829003018186803b1580156130e957600080fd5b505afa1580156130fd573d6000803e3d6000fd5b505050506040513d602081101561311357600080fd5b50519050801561318b5760025460408051630282c62360e51b81526001600160a01b0385811660048301526024820185905291519190921691635058c46091604480830192600092919082900301818387803b15801561317257600080fd5b505af1158015613186573d6000803e3d6000fd5b505050505b5050565b600254604080516326fa24e960e01b81526001600160a01b038681166004830152915160009384938493849391909216916326fa24e99160248083019286929190829003018186803b1580156131e457600080fd5b505afa1580156131f8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260c081101561322157600080fd5b8101908080516040519392919084600160201b82111561324057600080fd5b90830190602082018581111561325557600080fd5b82518660208202830111600160201b8211171561327157600080fd5b82525081516020918201928201910280838360005b8381101561329e578181015183820152602001613286565b5050505090500160405260200180516040519392919084600160201b8211156132c657600080fd5b9083019060208201858111156132db57600080fd5b82518660208202830111600160201b821117156132f757600080fd5b82525081516020918201928201910280838360005b8381101561332457818101518382015260200161330c565b5050505090500160405260200180516040519392919084600160201b82111561334c57600080fd5b90830190602082018581111561336157600080fd5b82518660208202830111600160201b8211171561337d57600080fd5b82525081516020918201928201910280838360005b838110156133aa578181015183820152602001613392565b5050505090500160405260200180516040519392919084600160201b8211156133d257600080fd5b9083019060208201858111156133e757600080fd5b82518660208202830111600160201b8211171561340357600080fd5b82525081516020918201928201910280838360005b83811015613430578181015183820152602001613418565b5050505090500160405260200180516040519392919084600160201b82111561345857600080fd5b90830190602082018581111561346d57600080fd5b82518660208202830111600160201b8211171561348957600080fd5b82525081516020918201928201910280838360005b838110156134b657818101518382015260200161349e565b5050505090500160405260200180516040519392919084600160201b8211156134de57600080fd5b9083019060208201858111156134f357600080fd5b82518660208202830111600160201b8211171561350f57600080fd5b82525081516020918201928201910280838360005b8381101561353c578181015183820152602001613524565b50505050905001604052505050955095505050935093506000806135e1600260009054906101000a90046001600160a01b03166001600160a01b03166340f02ab66040518163ffffffff1660e01b815260040160206040518083038186803b1580156135a757600080fd5b505afa1580156135bb573d6000803e3d6000fd5b505050506040513d60208110156135d157600080fd5b5051845185908b9081106127d957fe5b9150428211156135f257504261363b565b60025460408051632078155b60e11b81529051613638926001600160a01b0316916340f02ab6916004808301926020929190829003018186803b1580156135a757600080fd5b90505b61366183898151811061364a57fe5b602002602001015182612ec190919063ffffffff16565b91506201518082106136b4576136b489878a8151811061367d57fe5b6020026020010151878b8151811061369157fe5b6020026020010151878c815181106136a557fe5b6020026020010151868c6136bf565b505050505050505050565b6000806136cf8462015180612e01565b90506136e76136e086888987610b28565b8290612e68565b91506001600160a01b038716156138be57600061378b68056bc75e2d63100000610cf4600260009054906101000a90046001600160a01b03166001600160a01b031663e5c468696040518163ffffffff1660e01b815260040160206040518083038186803b15801561375857600080fd5b505afa15801561376c573d6000803e3d6000fd5b505050506040513d602081101561378257600080fd5b50518690612e68565b90506137978382612ec1565b9250866001600160a01b031663a9059cbb89836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156137f057600080fd5b505af1158015613804573d6000803e3d6000fd5b505050506040513d602081101561381a57600080fd5b505161385f576040805162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8811985a5b1959608a1b604482015290519081900360640190fd5b866001600160a01b0316896001600160a01b0316896001600160a01b03167fcc30edb66a991e48ca3676c277d3a35485ebfaf3016fa9536663b2689c8f5eef8442604051808381526020018281526020019250505060405180910390a4505b6138ca88878885613c38565b60015b60035460ff821610156136b45760038160ff16815481106138ea57fe5b90600052602060002001548210613c2e57600061393561392e600160038560ff168154811061391557fe5b9060005260206000200154612ec190919063ffffffff16565b8490612ec1565b600254604080516314e734ed60e21b81526001600160a01b038c8116600483015260ff871660248301529151939450600093919092169163539cd3b4916044808301926020929190829003018186803b15801561399157600080fd5b505afa1580156139a5573d6000803e3d6000fd5b505050506040513d60208110156139bb57600080fd5b505190506001600160a01b03808216908a1614801590613a595750600254604080516314291f5b60e11b81526001600160a01b038c811660048301528481166024830152915191909216916328523eb6916044808301926020929190829003018186803b158015613a2b57600080fd5b505afa158015613a3f573d6000803e3d6000fd5b505050506040513d6020811015613a5557600080fd5b5051155b15613c2457613a74613a6d898b848a610b28565b8390612e68565b94506001600160a01b038a1615613c18576000613ae568056bc75e2d63100000610cf4600260009054906101000a90046001600160a01b03166001600160a01b031663e5c468696040518163ffffffff1660e01b815260040160206040518083038186803b158015610cc157600080fd5b9050613af18682612ec1565b9550816001600160a01b031663a9059cbb8c836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015613b4a57600080fd5b505af1158015613b5e573d6000803e3d6000fd5b505050506040513d6020811015613b7457600080fd5b5051613bb9576040805162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8811985a5b1959608a1b604482015290519081900360640190fd5b816001600160a01b03168c6001600160a01b03168c6001600160a01b03167fcc30edb66a991e48ca3676c277d3a35485ebfaf3016fa9536663b2689c8f5eef8442604051808381526020018281526020019250505060405180910390a4505b613c248b8a8388613c38565b5050600101613c33565b6136b4565b6138cd565b6001600160a01b03821615613dcf5780826001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015613c9557600080fd5b505afa158015613ca9573d6000803e3d6000fd5b505050506040513d6020811015613cbf57600080fd5b50511015613cfe5760405162461bcd60e51b8152600401808060200182810382526026815260200180613e366026913960400191505060405180910390fd5b816001600160a01b031663a9059cbb85836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015613d5557600080fd5b505af1158015613d69573d6000803e3d6000fd5b505050506040513d6020811015613d7f57600080fd5b50506040805182815242602082015281516001600160a01b038086169387821693918916927fcd5e4f020ddad29434c2200a9edf2f8d7ec30f0d787f03b528ab7279aab0acbe9281900390910190a45b50505050565b828054828255906000526020600020908101928215613e10579160200282015b82811115613e10578251825591602001919060010190613df5565b50613e1c929150613e20565b5090565b5b80821115613e1c5760008155600101613e2156fe53454e443a20496e73756666696369656e742042616c616e636520696e20436f6e74726163745341464557495448445241573a20496e73756666696369656e742042616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373454d455247454e4359203a20496e73756666696369656e74205265776172642042616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a264697066735822122029f5f71533e514c6a65c8820b270c0e4c29204cc0608b6a0fc3cc988bba15e9b64736f6c63430007060033000000000000000000000000207c678457617bc8c8ab06f9088efc1dcd45887c
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101585760003560e01c80639bc11c94116100c3578063c922e9371161007c578063c922e937146105d5578063d43135061461070d578063d93938141461074a578063db7564f514610776578063f2fde38b1461079c578063ffae4049146107c257610158565b80639bc11c94146104b5578063b104e006146104e1578063b2bdfa7b146104fe578063beab17a014610506578063c549e6b91461052c578063c6044c461461053457610158565b8063715018a611610115578063715018a6146103dd57806375d752b3146103e55780638617f90c1461040b578063897cceee1461044a5780638a995967146104695780638c4bd0a01461048f57610158565b806301193ad71461015d57806301bc45c914610200578063056e407b146102245780634cd365311461035b5780635058c460146103a95780635c975abb146103d5575b600080fd5b6101fe6004803603602081101561017357600080fd5b810190602081018135600160201b81111561018d57600080fd5b82018360208201111561019f57600080fd5b803590602001918460208302840111600160201b831117156101c057600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506107ca945050505050565b005b610208610a03565b604080516001600160a01b039092168252519081900360200190f35b6103476004803603604081101561023a57600080fd5b810190602081018135600160201b81111561025457600080fd5b82018360208201111561026657600080fd5b803590602001918460208302840111600160201b8311171561028757600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156102d657600080fd5b8201836020820111156102e857600080fd5b803590602001918460208302840111600160201b8311171561030957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610a12945050505050565b604080519115158252519081900360200190f35b6103976004803603608081101561037157600080fd5b508035906001600160a01b03602082013581169160408101359091169060600135610b28565b60408051918252519081900360200190f35b6101fe600480360360408110156103bf57600080fd5b506001600160a01b038135169060200135610d6b565b610347610fb3565b6101fe610fbc565b6101fe600480360360208110156103fb57600080fd5b50356001600160a01b0316611082565b6104316004803603602081101561042157600080fd5b50356001600160a01b0316611148565b6040805192835290151560208301528051918290030190f35b6101fe6004803603602081101561046057600080fd5b50351515611164565b6103976004803603602081101561047f57600080fd5b50356001600160a01b03166111e9565b610397600480360360208110156104a557600080fd5b50356001600160a01b0316611270565b610347600480360360408110156104cb57600080fd5b506001600160a01b038135169060200135611282565b610397600480360360208110156104f757600080fd5b50356112a2565b6102086112c3565b6103976004803603602081101561051c57600080fd5b50356001600160a01b03166112d7565b6103976112e9565b6103476004803603602081101561054a57600080fd5b810190602081018135600160201b81111561056457600080fd5b82018360208201111561057657600080fd5b803590602001918460208302840111600160201b8311171561059757600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506112f0945050505050565b6101fe600480360360808110156105eb57600080fd5b8135916001600160a01b0360208201351691810190606081016040820135600160201b81111561061a57600080fd5b82018360208201111561062c57600080fd5b803590602001918460208302840111600160201b8311171561064d57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561069c57600080fd5b8201836020820111156106ae57600080fd5b803590602001918460208302840111600160201b831117156106cf57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611388945050505050565b6101fe6004803603608081101561072357600080fd5b506001600160a01b038135169060ff60208201351690604081013590606001351515611f6a565b6101fe6004803603604081101561076057600080fd5b506001600160a01b038135169060200135612202565b6103476004803603602081101561078c57600080fd5b50356001600160a01b0316612c62565b6101fe600480360360208110156107b257600080fd5b50356001600160a01b0316612ce6565b610208612dee565b6107d2612dfd565b60005461010090046001600160a01b03908116911614610827576040805162461bcd60e51b81526020600482018190526024820152600080516020613eec833981519152604482015290519081900360640190fd5b604080516000815260208101918290525161084491600391613dd5565b5060005b81518160ff1610156109815760006108dd62015180600260009054906101000a90046001600160a01b03166001600160a01b03166340f02ab66040518163ffffffff1660e01b815260040160206040518083038186803b1580156108ab57600080fd5b505afa1580156108bf573d6000803e3d6000fd5b505050506040513d60208110156108d557600080fd5b505190612e01565b9050828260ff16815181106108ee57fe5b60200260200101518111610940576040805162461bcd60e51b8152602060048201526014602482015273496e76616c696420496e74657276616c2044617960601b604482015290519081900360640190fd5b6003838360ff168151811061095157fe5b60209081029190910181015182546001818101855560009485529290932090920191909155919091019050610848565b507f29635226d0b00834767b0cf38daca8dc0fe978152b0a8a5b39eb281126352361600342604051808060200183815260200182810382528481815481526020019150805480156109f157602002820191906000526020600020905b8154815260200190600101908083116109dd575b5050935050505060405180910390a150565b6001546001600160a01b031681565b6000610a1c612dfd565b60005461010090046001600160a01b03908116911614610a71576040805162461bcd60e51b81526020600482018190526024820152600080516020613eec833981519152604482015290519081900360640190fd5b8151835114610ab7576040805162461bcd60e51b815260206004820152600d60248201526c125b9d985b1a5908125b9c1d5d609a1b604482015290519081900360640190fd5b60005b83518160ff161015610b1c57828160ff1681518110610ad557fe5b602002602001015160056000868460ff1681518110610af057fe5b6020908102919091018101516001600160a01b0316825281019190915260400160002055600101610aba565b50600190505b92915050565b6001600160a01b038316600090815260066020526040812060010154819060ff1615610d015760025460408051630253126360e11b81529051610bc7926001600160a01b0316916304a624c6916004808301926020929190829003018186803b158015610b9457600080fd5b505afa158015610ba8573d6000803e3d6000fd5b505050506040513d6020811015610bbe57600080fd5b50518790612e68565b9550610c58610c516001600260009054906101000a90046001600160a01b03166001600160a01b03166304a624c66040518163ffffffff1660e01b815260040160206040518083038186803b158015610c1f57600080fd5b505afa158015610c33573d6000803e3d6000fd5b505050506040513d6020811015610c4957600080fd5b505190612ec1565b8790612e68565b9050610cfa610c678483612f1e565b6002546040805163061dce6960e21b81526001600160a01b038a8116600483015289811660248301529151610cf493929092169163187739a491604480820192602092909190829003018186803b158015610cc157600080fd5b505afa158015610cd5573d6000803e3d6000fd5b505050506040513d6020811015610ceb57600080fd5b50518990612e68565b90612e01565b9150610d62565b6002546040805163061dce6960e21b81526001600160a01b03888116600483015287811660248301529151610d5f938793610cf49391169163187739a491604480820192602092909190829003018186803b158015610cc157600080fd5b91505b50949350505050565b610d73612dfd565b60005461010090046001600160a01b03908116911614610dc8576040805162461bcd60e51b81526020600482018190526024820152600080516020613eec833981519152604482015290519081900360640190fd5b80826001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610e1657600080fd5b505afa158015610e2a573d6000803e3d6000fd5b505050506040513d6020811015610e4057600080fd5b50511015610e7f5760405162461bcd60e51b8152600401808060200182810382526022815260200180613e5c6022913960400191505060405180910390fd5b816001600160a01b031663a9059cbb600060019054906101000a90046001600160a01b0316836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610eeb57600080fd5b505af1158015610eff573d6000803e3d6000fd5b505050506040513d6020811015610f1557600080fd5b50511515600114610f6d576040805162461bcd60e51b815260206004820152601d60248201527f5341464557495448445241573a205472616e73666572206661696c6564000000604482015290519081900360640190fd5b6040805182815242602082015281516001600160a01b038516927fcb92e2679de255302c9b8d0673cbdf8ef54667e943bf8f049bcaf6a85926ba1a928290030190a25050565b60005460ff1690565b610fc4612dfd565b6001546001600160a01b03908116911614611014576040805162461bcd60e51b81526020600482018190526024820152600080516020613eec833981519152604482015290519081900360640190fd5b600154600080546040516001600160a01b0393841693610100909204909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600154600080546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b61108a612dfd565b60005461010090046001600160a01b039081169116146110df576040805162461bcd60e51b81526020600482018190526024820152600080516020613eec833981519152604482015290519081900360640190fd5b6002546040805163f2fde38b60e01b81526001600160a01b0384811660048301529151919092169163f2fde38b91602480830192600092919082900301818387803b15801561112d57600080fd5b505af1158015611141573d6000803e3d6000fd5b5050505050565b6006602052600090815260409020805460019091015460ff1682565b61116c612dfd565b60005461010090046001600160a01b039081169116146111c1576040805162461bcd60e51b81526020600482018190526024820152600080516020613eec833981519152604482015290519081900360640190fd5b600181151514156111d9576111d4612f78565b6111e6565b806111e6576111e6613018565b50565b6001600160a01b038116600090815260056020908152604080832054600490925282205482916112699161121c91612f1e565b60025460408051637053cd8b60e11b81526001600160a01b0388811660048301529151919092169163e0a79b16916024808301926020929190829003018186803b158015610c1f57600080fd5b9392505050565b60046020526000908152604090205481565b600760209081526000928352604080842090915290825290205460ff1681565b600381815481106112b257600080fd5b600091825260209091200154905081565b60005461010090046001600160a01b031681565b60056020526000908152604090205481565b6201518081565b60006112fa612dfd565b60005461010090046001600160a01b0390811691161461134f576040805162461bcd60e51b81526020600482018190526024820152600080516020613eec833981519152604482015290519081900360640190fd5b60005b825181101561137f5761137783828151811061136a57fe5b602002602001015161309b565b600101611352565b50600192915050565b611390612dfd565b60005461010090046001600160a01b039081169116146113e5576040805162461bcd60e51b81526020600482018190526024820152600080516020613eec833981519152604482015290519081900360640190fd5b600254604080516326fa24e960e01b81526001600160a01b038681166004830152915160009384938493849391909216916326fa24e99160248083019286929190829003018186803b15801561143a57600080fd5b505afa15801561144e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260c081101561147757600080fd5b8101908080516040519392919084600160201b82111561149657600080fd5b9083019060208201858111156114ab57600080fd5b82518660208202830111600160201b821117156114c757600080fd5b82525081516020918201928201910280838360005b838110156114f45781810151838201526020016114dc565b5050505090500160405260200180516040519392919084600160201b82111561151c57600080fd5b90830190602082018581111561153157600080fd5b82518660208202830111600160201b8211171561154d57600080fd5b82525081516020918201928201910280838360005b8381101561157a578181015183820152602001611562565b5050505090500160405260200180516040519392919084600160201b8211156115a257600080fd5b9083019060208201858111156115b757600080fd5b82518660208202830111600160201b821117156115d357600080fd5b82525081516020918201928201910280838360005b838110156116005781810151838201526020016115e8565b5050505090500160405260200180516040519392919084600160201b82111561162857600080fd5b90830190602082018581111561163d57600080fd5b82518660208202830111600160201b8211171561165957600080fd5b82525081516020918201928201910280838360005b8381101561168657818101518382015260200161166e565b5050505090500160405260200180516040519392919084600160201b8211156116ae57600080fd5b9083019060208201858111156116c357600080fd5b82518660208202830111600160201b821117156116df57600080fd5b82525081516020918201928201910280838360005b8381101561170c5781810151838201526020016116f4565b5050505090500160405260200180516040519392919084600160201b82111561173457600080fd5b90830190602082018581111561174957600080fd5b82518660208202830111600160201b8211171561176557600080fd5b82525081516020918201928201910280838360005b8381101561179257818101518382015260200161177a565b505050509050016040525050505094505093509350935060076000886001600160a01b03166001600160a01b03168152602001908152602001600020600089815260200190815260200160002060009054906101000a900460ff16151560001515148015611817575081888151811061180757fe5b6020026020010151151560011515145b1561184f576001600160a01b03871660009081526007602090815260408083208b84529091529020805460ff1916600117905561189c565b6040805162461bcd60e51b815260206004820152601b60248201527f454d455247454e43593a20556e7374616b656420416c72656164790000000000604482015290519081900360640190fd5b6118ab83898151811061136a57fe5b8088815181106118b757fe5b60200260200101518389815181106118cb57fe5b60200260200101516001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561191f57600080fd5b505afa158015611933573d6000803e3d6000fd5b505050506040513d602081101561194957600080fd5b5051101561199e576040805162461bcd60e51b815260206004820181905260248201527f454d455247454e4359203a20496e73756666696369656e742042616c616e6365604482015290519081900360640190fd5b6119fc8189815181106119ad57fe5b602002602001015160046000868c815181106119c557fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054612f1e90919063ffffffff16565b60046000858b81518110611a0c57fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550828881518110611a4457fe5b60200260200101516001600160a01b031663a9059cbb88838b81518110611a6757fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611ab557600080fd5b505af1158015611ac9573d6000803e3d6000fd5b505050506040513d6020811015611adf57600080fd5b50600090505b8651811015611ede57858181518110611afa57fe5b6020026020010151878281518110611b0e57fe5b60200260200101516001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015611b6257600080fd5b505afa158015611b76573d6000803e3d6000fd5b505050506040513d6020811015611b8c57600080fd5b50511015611bcb5760405162461bcd60e51b8152600401808060200182810382526027815260200180613ea46027913960400191505060405180910390fd5b6000868281518110611bd957fe5b60200260200101519050611bf288838151811061136a57fe5b60006001600160a01b0316868b81518110611c0957fe5b60200260200101516001600160a01b031614611e3f576000611cb268056bc75e2d63100000610cf4600260009054906101000a90046001600160a01b03166001600160a01b031663e5c468696040518163ffffffff1660e01b815260040160206040518083038186803b158015611c7f57600080fd5b505afa158015611c93573d6000803e3d6000fd5b505050506040513d6020811015611ca957600080fd5b50518590612e68565b9050611cbe8282612ec1565b9150888381518110611ccc57fe5b60200260200101516001600160a01b031663a9059cbb888d81518110611cee57fe5b6020026020010151836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611d3d57600080fd5b505af1158015611d51573d6000803e3d6000fd5b505050506040513d6020811015611d6757600080fd5b5051611dba576040805162461bcd60e51b815260206004820152601b60248201527f454d455247454e4359203a205472616e73666572204661696c65640000000000604482015290519081900360640190fd5b888381518110611dc657fe5b60200260200101516001600160a01b03168a6001600160a01b0316888d81518110611ded57fe5b60200260200101516001600160a01b03167fcc30edb66a991e48ca3676c277d3a35485ebfaf3016fa9536663b2689c8f5eef8442604051808381526020018281526020019250505060405180910390a4505b878281518110611e4b57fe5b60200260200101516001600160a01b031663a9059cbb8a836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611ea957600080fd5b505af1158015611ebd573d6000803e3d6000fd5b505050506040513d6020811015611ed357600080fd5b505050600101611ae5565b50828881518110611eeb57fe5b60200260200101516001600160a01b0316876001600160a01b03167fa4b627609e711628747558b171b04b9636337afdadac065ee7113fb91eab0b72838b81518110611f3357fe5b6020026020010151428c60405180848152602001838152602001828152602001935050505060405180910390a35050505050505050565b611f72612dfd565b60005461010090046001600160a01b03908116911614611fc7576040805162461bcd60e51b81526020600482018190526024820152600080516020613eec833981519152604482015290519081900360640190fd5b8260ff1660011480611fdc57508260ff166002145b80611fea57508260ff166003145b61203b576040805162461bcd60e51b815260206004820152601760248201527f496e76616c6964204c6f636b61626c6520537461747573000000000000000000604482015290519081900360640190fd5b6002546040805163dd4be68360e01b81526001600160a01b0387811660048301529151600093929092169163dd4be6839160248082019260c092909190829003018186803b15801561208c57600080fd5b505afa1580156120a0573d6000803e3d6000fd5b505050506040513d60c08110156120b657600080fd5b50519050600181151514612103576040805162461bcd60e51b815260206004820152600f60248201526e151bdad95b88139bdd08115e1a5cdd608a1b604482015290519081900360640190fd5b8360ff1660011415612137576121194284612f1e565b6001600160a01b038616600090815260066020526040902055612195565b8360ff1660021415612161576001600160a01b038516600090815260066020526040812055612195565b8360ff1660031415612195576001600160a01b0385166000908152600660205260409020600101805460ff19168315151790555b6001600160a01b0385166000818152600660209081526040918290208054600190910154835191825260ff16151591810191909152428183015290517f4030f7d2425e172fe94d03a4cfd07dcdbc4909529bdf15d2732aa1559ff9be7c9181900360600190a25050505050565b61220a610fb3565b1561224f576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b336001600160a01b0383161480612275575060005461010090046001600160a01b031633145b6122c6576040805162461bcd60e51b815260206004820152601b60248201527f554e5354414b453a20496e76616c6964205573657220456e7472790000000000604482015290519081900360640190fd5b600254604080516326fa24e960e01b81526001600160a01b038581166004830152915160009384938493849391909216916326fa24e99160248083019286929190829003018186803b15801561231b57600080fd5b505afa15801561232f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260c081101561235857600080fd5b8101908080516040519392919084600160201b82111561237757600080fd5b90830190602082018581111561238c57600080fd5b82518660208202830111600160201b821117156123a857600080fd5b82525081516020918201928201910280838360005b838110156123d55781810151838201526020016123bd565b5050505090500160405260200180516040519392919084600160201b8211156123fd57600080fd5b90830190602082018581111561241257600080fd5b82518660208202830111600160201b8211171561242e57600080fd5b82525081516020918201928201910280838360005b8381101561245b578181015183820152602001612443565b5050505090500160405260200180516040519392919084600160201b82111561248357600080fd5b90830190602082018581111561249857600080fd5b82518660208202830111600160201b821117156124b457600080fd5b82525081516020918201928201910280838360005b838110156124e15781810151838201526020016124c9565b5050505090500160405260200180516040519392919084600160201b82111561250957600080fd5b90830190602082018581111561251e57600080fd5b82518660208202830111600160201b8211171561253a57600080fd5b82525081516020918201928201910280838360005b8381101561256757818101518382015260200161254f565b5050505090500160405260200180516040519392919084600160201b82111561258f57600080fd5b9083019060208201858111156125a457600080fd5b82518660208202830111600160201b821117156125c057600080fd5b82525081516020918201928201910280838360005b838110156125ed5781810151838201526020016125d5565b5050505090500160405260200180516040519392919084600160201b82111561261557600080fd5b90830190602082018581111561262a57600080fd5b82518660208202830111600160201b8211171561264657600080fd5b82525081516020918201928201910280838360005b8381101561267357818101518382015260200161265b565b5050505090500160405250505095509550509450945050426006600086888151811061269b57fe5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600001541115612709576040805162461bcd60e51b815260206004820152600c60248201526b151bdad95b88131bd8dad95960a21b604482015290519081900360640190fd5b6006600085878151811061271957fe5b6020908102919091018101516001600160a01b0316825281019190915260400160002060019081015460ff161515141561284257426127ef600260009054906101000a90046001600160a01b03166001600160a01b03166340f02ab66040518163ffffffff1660e01b815260040160206040518083038186803b15801561279f57600080fd5b505afa1580156127b3573d6000803e3d6000fd5b505050506040513d60208110156127c957600080fd5b505183518490899081106127d957fe5b6020026020010151612f1e90919063ffffffff16565b1115612842576040805162461bcd60e51b815260206004820152601760248201527f4c6f636b656420696e206f7074696f6e616c206c6f636b000000000000000000604482015290519081900360640190fd5b6001600160a01b038616600090815260076020908152604080832088845290915290205460ff1615801561288d575082858151811061287d57fe5b6020026020010151151560011515145b156128c5576001600160a01b03861660009081526007602090815260408083208884529091529020805460ff19166001179055612912565b6040805162461bcd60e51b815260206004820152601a60248201527f554e5354414b45203a20556e7374616b656420416c7265616479000000000000604482015290519081900360640190fd5b60006129cb61296360056000888a8151811061292a57fe5b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205460046000898b815181106119c557fe5b60025487516001600160a01b039091169063e0a79b169089908b90811061298657fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610c1f57600080fd5b90506129f48387815181106129dc57fe5b602002602001015160046000888a815181106119c557fe5b60046000878981518110612a0457fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550828681518110612a3c57fe5b6020026020010151858781518110612a5057fe5b60200260200101516001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015612aa457600080fd5b505afa158015612ab8573d6000803e3d6000fd5b505050506040513d6020811015612ace57600080fd5b50511015612b23576040805162461bcd60e51b815260206004820152601e60248201527f554e5354414b45203a20496e73756666696369656e742042616c616e63650000604482015290519081900360640190fd5b848681518110612b2f57fe5b60200260200101516001600160a01b031663a9059cbb88858981518110612b5257fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612ba057600080fd5b505af1158015612bb4573d6000803e3d6000fd5b505050506040513d6020811015612bca57600080fd5b50612bd8905087878361318f565b848681518110612be457fe5b60200260200101516001600160a01b0316876001600160a01b03167fa4b627609e711628747558b171b04b9636337afdadac065ee7113fb91eab0b72858981518110612c2c57fe5b6020026020010151428a60405180848152602001838152602001828152602001935050505060405180910390a350505050505050565b6000612c6c612dfd565b60005461010090046001600160a01b03908116911614612cc1576040805162461bcd60e51b81526020600482018190526024820152600080516020613eec833981519152604482015290519081900360640190fd5b50600280546001600160a01b0383166001600160a01b03199091161790556001919050565b612cee612dfd565b60005461010090046001600160a01b03908116911614612d43576040805162461bcd60e51b81526020600482018190526024820152600080516020613eec833981519152604482015290519081900360640190fd5b6001600160a01b038116612d885760405162461bcd60e51b8152600401808060200182810382526026815260200180613e7e6026913960400191505060405180910390fd5b600080546040516001600160a01b038085169361010090930416917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6002546001600160a01b031681565b3390565b6000808211612e57576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381612e6057fe5b049392505050565b600082612e7757506000610b22565b82820282848281612e8457fe5b04146112695760405162461bcd60e51b8152600401808060200182810382526021815260200180613ecb6021913960400191505060405180910390fd5b600082821115612f18576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015611269576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b612f80610fb3565b15612fc5576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612ffb612dfd565b604080516001600160a01b039092168252519081900360200190a1565b613020610fb3565b613068576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612ffb612dfd565b600254604080516370a0823160e01b81526001600160a01b03928316600482015290516000928416916370a08231916024808301926020929190829003018186803b1580156130e957600080fd5b505afa1580156130fd573d6000803e3d6000fd5b505050506040513d602081101561311357600080fd5b50519050801561318b5760025460408051630282c62360e51b81526001600160a01b0385811660048301526024820185905291519190921691635058c46091604480830192600092919082900301818387803b15801561317257600080fd5b505af1158015613186573d6000803e3d6000fd5b505050505b5050565b600254604080516326fa24e960e01b81526001600160a01b038681166004830152915160009384938493849391909216916326fa24e99160248083019286929190829003018186803b1580156131e457600080fd5b505afa1580156131f8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260c081101561322157600080fd5b8101908080516040519392919084600160201b82111561324057600080fd5b90830190602082018581111561325557600080fd5b82518660208202830111600160201b8211171561327157600080fd5b82525081516020918201928201910280838360005b8381101561329e578181015183820152602001613286565b5050505090500160405260200180516040519392919084600160201b8211156132c657600080fd5b9083019060208201858111156132db57600080fd5b82518660208202830111600160201b821117156132f757600080fd5b82525081516020918201928201910280838360005b8381101561332457818101518382015260200161330c565b5050505090500160405260200180516040519392919084600160201b82111561334c57600080fd5b90830190602082018581111561336157600080fd5b82518660208202830111600160201b8211171561337d57600080fd5b82525081516020918201928201910280838360005b838110156133aa578181015183820152602001613392565b5050505090500160405260200180516040519392919084600160201b8211156133d257600080fd5b9083019060208201858111156133e757600080fd5b82518660208202830111600160201b8211171561340357600080fd5b82525081516020918201928201910280838360005b83811015613430578181015183820152602001613418565b5050505090500160405260200180516040519392919084600160201b82111561345857600080fd5b90830190602082018581111561346d57600080fd5b82518660208202830111600160201b8211171561348957600080fd5b82525081516020918201928201910280838360005b838110156134b657818101518382015260200161349e565b5050505090500160405260200180516040519392919084600160201b8211156134de57600080fd5b9083019060208201858111156134f357600080fd5b82518660208202830111600160201b8211171561350f57600080fd5b82525081516020918201928201910280838360005b8381101561353c578181015183820152602001613524565b50505050905001604052505050955095505050935093506000806135e1600260009054906101000a90046001600160a01b03166001600160a01b03166340f02ab66040518163ffffffff1660e01b815260040160206040518083038186803b1580156135a757600080fd5b505afa1580156135bb573d6000803e3d6000fd5b505050506040513d60208110156135d157600080fd5b5051845185908b9081106127d957fe5b9150428211156135f257504261363b565b60025460408051632078155b60e11b81529051613638926001600160a01b0316916340f02ab6916004808301926020929190829003018186803b1580156135a757600080fd5b90505b61366183898151811061364a57fe5b602002602001015182612ec190919063ffffffff16565b91506201518082106136b4576136b489878a8151811061367d57fe5b6020026020010151878b8151811061369157fe5b6020026020010151878c815181106136a557fe5b6020026020010151868c6136bf565b505050505050505050565b6000806136cf8462015180612e01565b90506136e76136e086888987610b28565b8290612e68565b91506001600160a01b038716156138be57600061378b68056bc75e2d63100000610cf4600260009054906101000a90046001600160a01b03166001600160a01b031663e5c468696040518163ffffffff1660e01b815260040160206040518083038186803b15801561375857600080fd5b505afa15801561376c573d6000803e3d6000fd5b505050506040513d602081101561378257600080fd5b50518690612e68565b90506137978382612ec1565b9250866001600160a01b031663a9059cbb89836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156137f057600080fd5b505af1158015613804573d6000803e3d6000fd5b505050506040513d602081101561381a57600080fd5b505161385f576040805162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8811985a5b1959608a1b604482015290519081900360640190fd5b866001600160a01b0316896001600160a01b0316896001600160a01b03167fcc30edb66a991e48ca3676c277d3a35485ebfaf3016fa9536663b2689c8f5eef8442604051808381526020018281526020019250505060405180910390a4505b6138ca88878885613c38565b60015b60035460ff821610156136b45760038160ff16815481106138ea57fe5b90600052602060002001548210613c2e57600061393561392e600160038560ff168154811061391557fe5b9060005260206000200154612ec190919063ffffffff16565b8490612ec1565b600254604080516314e734ed60e21b81526001600160a01b038c8116600483015260ff871660248301529151939450600093919092169163539cd3b4916044808301926020929190829003018186803b15801561399157600080fd5b505afa1580156139a5573d6000803e3d6000fd5b505050506040513d60208110156139bb57600080fd5b505190506001600160a01b03808216908a1614801590613a595750600254604080516314291f5b60e11b81526001600160a01b038c811660048301528481166024830152915191909216916328523eb6916044808301926020929190829003018186803b158015613a2b57600080fd5b505afa158015613a3f573d6000803e3d6000fd5b505050506040513d6020811015613a5557600080fd5b5051155b15613c2457613a74613a6d898b848a610b28565b8390612e68565b94506001600160a01b038a1615613c18576000613ae568056bc75e2d63100000610cf4600260009054906101000a90046001600160a01b03166001600160a01b031663e5c468696040518163ffffffff1660e01b815260040160206040518083038186803b158015610cc157600080fd5b9050613af18682612ec1565b9550816001600160a01b031663a9059cbb8c836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015613b4a57600080fd5b505af1158015613b5e573d6000803e3d6000fd5b505050506040513d6020811015613b7457600080fd5b5051613bb9576040805162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8811985a5b1959608a1b604482015290519081900360640190fd5b816001600160a01b03168c6001600160a01b03168c6001600160a01b03167fcc30edb66a991e48ca3676c277d3a35485ebfaf3016fa9536663b2689c8f5eef8442604051808381526020018281526020019250505060405180910390a4505b613c248b8a8388613c38565b5050600101613c33565b6136b4565b6138cd565b6001600160a01b03821615613dcf5780826001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015613c9557600080fd5b505afa158015613ca9573d6000803e3d6000fd5b505050506040513d6020811015613cbf57600080fd5b50511015613cfe5760405162461bcd60e51b8152600401808060200182810382526026815260200180613e366026913960400191505060405180910390fd5b816001600160a01b031663a9059cbb85836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015613d5557600080fd5b505af1158015613d69573d6000803e3d6000fd5b505050506040513d6020811015613d7f57600080fd5b50506040805182815242602082015281516001600160a01b038086169387821693918916927fcd5e4f020ddad29434c2200a9edf2f8d7ec30f0d787f03b528ab7279aab0acbe9281900390910190a45b50505050565b828054828255906000526020600020908101928215613e10579160200282015b82811115613e10578251825591602001919060010190613df5565b50613e1c929150613e20565b5090565b5b80821115613e1c5760008155600101613e2156fe53454e443a20496e73756666696369656e742042616c616e636520696e20436f6e74726163745341464557495448445241573a20496e73756666696369656e742042616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373454d455247454e4359203a20496e73756666696369656e74205265776172642042616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a264697066735822122029f5f71533e514c6a65c8820b270c0e4c29204cc0608b6a0fc3cc988bba15e9b64736f6c63430007060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000207c678457617bc8c8ab06f9088efc1dcd45887c
-----Decoded View---------------
Arg [0] : v2Address (address): 0x207C678457617bC8c8Ab06F9088EFC1DCD45887c
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000207c678457617bc8c8ab06f9088efc1dcd45887c
Deployed Bytecode Sourcemap
16655:13834:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21215:398;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;21215:398:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;21215:398:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21215:398:0;;-1:-1:-1;21215:398:0;;-1:-1:-1;;;;;21215:398:0:i;:::-;;3796:21;;;:::i;:::-;;;;-1:-1:-1;;;;;3796:21:0;;;;;;;;;;;;;;23279:359;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;23279:359:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;23279:359:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23279:359:0;;;;;;;;-1:-1:-1;23279:359:0;;-1:-1:-1;;;;;23279:359:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;23279:359:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23279:359:0;;-1:-1:-1;23279:359:0;;-1:-1:-1;;;;;23279:359:0:i;:::-;;;;;;;;;;;;;;;;;;26579:705;;;;;;;;;;;;;;;;-1:-1:-1;26579:705:0;;;-1:-1:-1;;;;;26579:705:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;22693:421;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22693:421:0;;;;;;;;:::i;2075:80::-;;;:::i;4891:122::-;;;:::i;22575:112::-;;;;;;;;;;;;;;;;-1:-1:-1;22575:112:0;-1:-1:-1;;;;;22575:112:0;;:::i;17052:57::-;;;;;;;;;;;;;;;;-1:-1:-1;17052:57:0;-1:-1:-1;;;;;17052:57:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;26122:153;;;;;;;;;;;;;;;;-1:-1:-1;26122:153:0;;;;:::i;23644:292::-;;;;;;;;;;;;;;;;-1:-1:-1;23644:292:0;-1:-1:-1;;;;;23644:292:0;;:::i;16942:50::-;;;;;;;;;;;;;;;;-1:-1:-1;16942:50:0;-1:-1:-1;;;;;16942:50:0;;:::i;17114:65::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17114:65:0;;;;;;;;:::i;16839:54::-;;;;;;;;;;;;;;;;-1:-1:-1;16839:54:0;;:::i;3770:21::-;;;:::i;16997:50::-;;;;;;;;;;;;;;;;-1:-1:-1;16997:50:0;-1:-1:-1;;;;;16997:50:0;;:::i;16898:37::-;;;:::i;18164:235::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;18164:235:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;18164:235:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18164:235:0;;-1:-1:-1;18164:235:0;;-1:-1:-1;;;;;18164:235:0:i;23942:2174::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23942:2174:0;;;;;;;;;;;;;;;;-1:-1:-1;;;23942:2174:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;23942:2174:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23942:2174:0;;;;;;;;-1:-1:-1;23942:2174:0;;-1:-1:-1;;;;;23942:2174:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;23942:2174:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23942:2174:0;;-1:-1:-1;23942:2174:0;;-1:-1:-1;;;;;23942:2174:0:i;21619:950::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;21619:950:0;;;;;;;;;;;;;;;;;;;;;;:::i;19369:1840::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;19369:1840:0;;;;;;;;:::i;23120:153::-;;;;;;;;;;;;;;;;-1:-1:-1;23120:153:0;-1:-1:-1;;;;;23120:153:0;;:::i;5158:230::-;;;;;;;;;;;;;;;;-1:-1:-1;5158:230:0;-1:-1:-1;;;;;5158:230:0;;:::i;16783:20::-;;;:::i;21215:398::-;4299:12;:10;:12::i;:::-;4289:6;;;;;-1:-1:-1;;;;;4289:6:0;;;:22;;;4281:67;;;;;-1:-1:-1;;;4281:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4281:67:0;;;;;;;;;;;;;;;21312:16:::1;::::0;;21326:1:::1;21312:16:::0;;::::1;::::0;::::1;::::0;;;;21297:31;::::1;::::0;:12:::1;::::0;:31:::1;:::i;:::-;;21342:7;21337:207;21359:9;:16;21355:1;:20;;;21337:207;;;21391:11;21405:31;16929:6;21405:5;;;;;;;;;-1:-1:-1::0;;;;;21405:5:0::1;-1:-1:-1::0;;;;;21405:19:0::1;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;21405:21:0;;:25:::1;:31::i;:::-;21391:45;;21459:9;21469:1;21459:12;;;;;;;;;;;;;;;;21453:3;:18;21445:51;;;::::0;;-1:-1:-1;;;21445:51:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;21445:51:0;;;;;;;;;;;;;::::1;;21505:12;21523:9;21533:1;21523:12;;;;;;;;;;;::::0;;::::1;::::0;;;;;;;21505:31;;::::1;::::0;;::::1;::::0;;-1:-1:-1;21505:31:0;;;;;;;;;::::1;::::0;;;;21377:3;;;::::1;::::0;-1:-1:-1;21337:207:0::1;;;;21557:50;21577:12;21591:15;21557:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21215:398:::0;:::o;3796:21::-;;;-1:-1:-1;;;;;3796:21:0;;:::o;23279:359::-;23414:4;4299:12;:10;:12::i;:::-;4289:6;;;;;-1:-1:-1;;;;;4289:6:0;;;:22;;;4281:67;;;;;-1:-1:-1;;;4281:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4281:67:0;;;;;;;;;;;;;;;23458:11:::1;:18;23435:12;:19;:41;23427:67;;;::::0;;-1:-1:-1;;;23427:67:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;23427:67:0;;;;;;;;;;;;;::::1;;23506:7;23501:114;23523:12;:19;23519:1;:23;;;23501:114;;;23593:11;23605:1;23593:14;;;;;;;;;;;;;;;;23558:15;:32;23574:12;23587:1;23574:15;;;;;;;;;;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;23558:32:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;23558:32:0;:49;23544:3:::1;;23501:114;;;;23628:4;23621:11;;4355:1;23279:359:::0;;;;:::o;26579:705::-;-1:-1:-1;;;;;26789:29:0;;26734:14;26789:29;;;:16;:29;;;;;:46;;;26734:14;;26789:46;;26785:493;;;26878:5;;:25;;;-1:-1:-1;;;26878:25:0;;;;26861:43;;-1:-1:-1;;;;;26878:5:0;;:23;;:25;;;;;;;;;;;;;;:5;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26878:25:0;26861:12;;:16;:43::i;:::-;26846:58;;26927:50;26944:32;26974:1;26944:5;;;;;;;;;-1:-1:-1;;;;;26944:5:0;-1:-1:-1;;;;;26944:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26944:25:0;;:29;:32::i;:::-;26927:12;;:16;:50::i;:::-;26913:64;-1:-1:-1;26995:135:0;27102:27;:10;26913:64;27102:14;:27::i;:::-;27023:5;;:54;;;-1:-1:-1;;;27023:54:0;;-1:-1:-1;;;;;27023:54:0;;;;;;;;;;;;;;;;27006:72;;27023:5;;;;;:28;;:54;;;;;;;;;;;;;;;:5;:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27023:54:0;27006:12;;:16;:72::i;:::-;26995:106;;:135::i;:::-;26986:144;;26785:493;;;27188:5;;:54;;;-1:-1:-1;;;27188:54:0;;-1:-1:-1;;;;;27188:54:0;;;;;;;;;;;;;;;;27160:118;;27267:10;;27171:72;;27188:5;;;:28;;:54;;;;;;;;;;;;;;;:5;:54;;;;;;;;;;27160:118;27151:127;;26785:493;26579:705;;;;;;;:::o;22693:421::-;4299:12;:10;:12::i;:::-;4289:6;;;;;-1:-1:-1;;;;;4289:6:0;;;:22;;;4281:67;;;;;-1:-1:-1;;;4281:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4281:67:0;;;;;;;;;;;;;;;22857:6:::1;22815:12;-1:-1:-1::0;;;;;22808:30:0::1;;22847:4;22808:45;;;;;;;;;;;;;-1:-1:-1::0;;;;;22808:45:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;22808:45:0;:55:::1;;22792:123;;;;-1:-1:-1::0;;;22792:123:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22947:12;-1:-1:-1::0;;;;;22940:29:0::1;;22970:6;;;;;;;;;-1:-1:-1::0;;;;;22970:6:0::1;22978;22940:45;;;;;;;;;;;;;-1:-1:-1::0;;;;;22940:45:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;22940:45:0;:53:::1;;22989:4;22940:53;22924:116;;;::::0;;-1:-1:-1;;;22924:116:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;23054:54;::::0;;;;;23092:15:::1;23054:54;::::0;::::1;::::0;;;-1:-1:-1;;;;;23054:54:0;::::1;::::0;::::1;::::0;;;;;;::::1;22693:421:::0;;:::o;2075:80::-;2122:4;2142:7;;;2075:80;:::o;4891:122::-;4493:12;:10;:12::i;:::-;4483:6;;-1:-1:-1;;;;;4483:6:0;;;:22;;;4475:67;;;;;-1:-1:-1;;;4475:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4475:67:0;;;;;;;;;;;;;;;4978:6:::1;::::0;::::1;4970::::0;;4949:36:::1;::::0;-1:-1:-1;;;;;4978:6:0;;::::1;::::0;::::1;4970::::0;;::::1;::::0;;::::1;::::0;4949:36:::1;::::0;::::1;5001:6;::::0;::::1;4992:15:::0;;-1:-1:-1;;;;;5001:6:0;;::::1;;4992:15;-1:-1:-1::0;;;;;;4992:15:0;;::::1;::::0;;;::::1;::::0;;4891:122::o;22575:112::-;4299:12;:10;:12::i;:::-;4289:6;;;;;-1:-1:-1;;;;;4289:6:0;;;:22;;;4281:67;;;;;-1:-1:-1;;;4281:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4281:67:0;;;;;;;;;;;;;;;22648:5:::1;::::0;:33:::1;::::0;;-1:-1:-1;;;22648:33:0;;-1:-1:-1;;;;;22648:33:0;;::::1;;::::0;::::1;::::0;;;:5;;;::::1;::::0;:23:::1;::::0;:33;;;;;:5:::1;::::0;:33;;;;;;;:5;;:33;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22575:112:::0;:::o;17052:57::-;;;;;;;;;;;;;;;;;;;;;:::o;26122:153::-;4299:12;:10;:12::i;:::-;4289:6;;;;;-1:-1:-1;;;;;4289:6:0;;;:22;;;4281:67;;;;;-1:-1:-1;;;4281:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4281:67:0;;;;;;;;;;;;;;;26207:4:::1;26192:19:::0;::::1;;;26188:81;;;26213:8;:6;:8::i;:::-;26188:81;;;26237:20:::0;26233:36:::1;;26259:10;:8;:10::i;:::-;26122:153:::0;:::o;23644:292::-;-1:-1:-1;;;;;23863:29:0;;23733:7;23863:29;;;:15;:29;;;;;;;;;23829:15;:29;;;;;;23733:7;;23782:120;;23829:64;;:33;:64::i;:::-;23782:5;;:32;;;-1:-1:-1;;;23782:32:0;;-1:-1:-1;;;;;23782:32:0;;;;;;;;;:5;;;;;:18;;:32;;;;;;;;;;;;;;:5;:32;;;;;;;;;;:120;23752:150;23644:292;-1:-1:-1;;;23644:292:0:o;16942:50::-;;;;;;;;;;;;;:::o;17114:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16839:54::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16839:54:0;:::o;3770:21::-;;;;;;-1:-1:-1;;;;;3770:21:0;;:::o;16997:50::-;;;;;;;;;;;;;:::o;16898:37::-;16929:6;16898:37;:::o;18164:235::-;18252:4;4299:12;:10;:12::i;:::-;4289:6;;;;;-1:-1:-1;;;;;4289:6:0;;;:22;;;4281:67;;;;;-1:-1:-1;;;4281:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4281:67:0;;;;;;;;;;;;;;;18273:9:::1;18268:106;18292:12;:19;18288:1;:23;18268:106;;;18327:39;18350:12;18363:1;18350:15;;;;;;;;;;;;;;18327:22;:39::i;:::-;18313:3;;18268:106;;;-1:-1:-1::0;18389:4:0::1;::::0;18164:235;-1:-1:-1;;18164:235:0:o;23942:2174::-;4299:12;:10;:12::i;:::-;4289:6;;;;;-1:-1:-1;;;;;4289:6:0;;;:22;;;4281:67;;;;;-1:-1:-1;;;4281:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4281:67:0;;;;;;;;;;;;;;;24288:5:::1;::::0;:37:::1;::::0;;-1:-1:-1;;;24288:37:0;;-1:-1:-1;;;;;24288:37:0;;::::1;;::::0;::::1;::::0;;;24122:32:::1;::::0;;;;;;;24288:5;;;::::1;::::0;:24:::1;::::0;:37;;;;;24122:32;;24288:37;;;;;;;:5;:37;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;24288:37:0::1;::::0;::::1;;::::0;::::1;::::0;::::1;;;;;::::0;::::1;;;;;;;;;;;;;;;-1:-1:-1::0;;;24288:37:0::1;;;;;;::::0;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;;;;;::::0;::::1;;;;;;;;;;;-1:-1:-1::0;;;24288:37:0::1;;;;;;;::::0;::::1;;::::0;;-1:-1:-1;24288:37:0;;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;::::1;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;24288:37:0::1;;;;;;::::0;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;;;;;::::0;::::1;;;;;;;;;;;-1:-1:-1::0;;;24288:37:0::1;;;;;;;::::0;::::1;;::::0;;-1:-1:-1;24288:37:0;;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;::::1;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;24288:37:0::1;;;;;;::::0;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;;;;;::::0;::::1;;;;;;;;;;;-1:-1:-1::0;;;24288:37:0::1;;;;;;;::::0;::::1;;::::0;;-1:-1:-1;24288:37:0;;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;::::1;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;24288:37:0::1;;;;;;::::0;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;;;;;::::0;::::1;;;;;;;;;;;-1:-1:-1::0;;;24288:37:0::1;;;;;;;::::0;::::1;;::::0;;-1:-1:-1;24288:37:0;;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;::::1;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;24288:37:0::1;;;;;;::::0;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;;;;;::::0;::::1;;;;;;;;;;;-1:-1:-1::0;;;24288:37:0::1;;;;;;;::::0;::::1;;::::0;;-1:-1:-1;24288:37:0;;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;::::1;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;24288:37:0::1;;;;;;::::0;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;;;;;::::0;::::1;;;;;;;;;;;-1:-1:-1::0;;;24288:37:0::1;;;;;;;::::0;::::1;;::::0;;-1:-1:-1;24288:37:0;;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;::::1;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;::::0;::::1;;24113:213;;;;;;;;;;24362:13;:26;24376:11;-1:-1:-1::0;;;;;24362:26:0::1;-1:-1:-1::0;;;;;24362:26:0::1;;;;;;;;;;;;:35;24389:7;24362:35;;;;;;;;;;;;;;;;;;;;;:44;;24401:5;24362:44;;;:84;;;;;24417:12;24430:7;24417:21;;;;;;;;;;;;;;:29;;24442:4;24417:29;;;24362:84;24350:195;;;-1:-1:-1::0;;;;;24454:26:0;::::1;;::::0;;;:13:::1;:26;::::0;;;;;;;:35;;;;;;;;:42;;-1:-1:-1;;24454:42:0::1;24492:4;24454:42;::::0;;24350:195:::1;;;24508:37;::::0;;-1:-1:-1;;;24508:37:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;24350:195;24554:45;24577:12;24590:7;24577:21;;;;;;;24554:45;24713:12;24726:7;24713:21;;;;;;;;;;;;;;24653:12;24666:7;24653:21;;;;;;;;;;;;;;-1:-1:-1::0;;;;;24646:39:0::1;;24694:4;24646:54;;;;;;;;;;;;;-1:-1:-1::0;;;;;24646:54:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;24646:54:0;:88:::1;;24630:154;;;::::0;;-1:-1:-1;;;24630:154:0;;::::1;;::::0;::::1;::::0;;;;;;;::::1;::::0;;;;;;;;;;;;;::::1;;24834:87;24899:12;24912:7;24899:21;;;;;;;;;;;;;;24834:15;:52;24858:12;24871:7;24858:21;;;;;;;;;;;;;;-1:-1:-1::0;;;;;24834:52:0::1;-1:-1:-1::0;;;;;24834:52:0::1;;;;;;;;;;;;;:64;;:87;;;;:::i;:::-;24793:15;:38;24809:12;24822:7;24809:21;;;;;;;;;;;;;;-1:-1:-1::0;;;;;24793:38:0::1;-1:-1:-1::0;;;;;24793:38:0::1;;;;;;;;;;;;:128;;;;24937:12;24950:7;24937:21;;;;;;;;;;;;;;-1:-1:-1::0;;;;;24930:38:0::1;;24969:11;24982:12;24995:7;24982:21;;;;;;;;;;;;;;24930:74;;;;;;;;;;;;;-1:-1:-1::0;;;;;24930:74:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;25018:9:0::1;::::0;-1:-1:-1;25013:923:0::1;25037:12;:19;25033:1;:23;25013:923;;;25142:6;25149:1;25142:9;;;;;;;;;;;;;;25097:12;25110:1;25097:15;;;;;;;;;;;;;;-1:-1:-1::0;;;;;25090:33:0::1;;25132:4;25090:48;;;;;;;;;;;;;-1:-1:-1::0;;;;;25090:48:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;25090:48:0;:61:::1;;25072:140;;;;-1:-1:-1::0;;;25072:140:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25221:21;25245:6;25252:1;25245:9;;;;;;;;;;;;;;25221:33;;25265:39;25288:12;25301:1;25288:15;;;;;;;25265:39;25355:1;-1:-1:-1::0;;;;;25319:38:0::1;:15;25335:7;25319:24;;;;;;;;;;;;;;-1:-1:-1::0;;;;;25319:38:0::1;;25315:543;;25370:17;25401:57;25448:9;25402:40;25420:5;;;;;;;;;-1:-1:-1::0;;;;;25420:5:0::1;-1:-1:-1::0;;;;;25420:19:0::1;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;25420:21:0;25402:13;;:17:::1;:40::i;25401:57::-;25370:88:::0;-1:-1:-1;25485:28:0::1;:13:::0;25370:88;25485:17:::1;:28::i;:::-;25469:44;;25553:12;25566:1;25553:15;;;;;;;;;;;;;;-1:-1:-1::0;;;;;25546:32:0::1;;25579:15;25595:7;25579:24;;;;;;;;;;;;;;25605:9;25546:69;;;;;;;;;;;;;-1:-1:-1::0;;;;;25546:69:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;25546:69:0;25526:142:::1;;;::::0;;-1:-1:-1;;;25526:142:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;25772:12;25785:1;25772:15;;;;;;;;;;;;;;-1:-1:-1::0;;;;;25686:162:0::1;25748:11;-1:-1:-1::0;;;;;25686:162:0::1;25711:15;25727:7;25711:24;;;;;;;;;;;;;;-1:-1:-1::0;;;;;25686:162:0::1;;25800:9;25822:15;25686:162;;;;;;;;;;;;;;;;;;;;;;;;25315:543;;25875:12;25888:1;25875:15;;;;;;;;;;;;;;-1:-1:-1::0;;;;;25868:32:0::1;;25901:11;25914:13;25868:60;;;;;;;;;;;;;-1:-1:-1::0;;;;;25868:60:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;;25058:3:0::1;;25013:923;;;;26012:12;26025:7;26012:21;;;;;;;;;;;;;;-1:-1:-1::0;;;;;25976:134:0::1;25992:11;-1:-1:-1::0;;;;;25976:134:0::1;;26042:12;26055:7;26042:21;;;;;;;;;;;;;;26072:15;26096:7;25976:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4355:1;;;;23942:2174:::0;;;;:::o;21619:950::-;4299:12;:10;:12::i;:::-;4289:6;;;;;-1:-1:-1;;;;;4289:6:0;;;:22;;;4281:67;;;;;-1:-1:-1;;;4281:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4281:67:0;;;;;;;;;;;;;;;21796:14:::1;:19;;21814:1;21796:19;:42;;;;21819:14;:19;;21837:1;21819:19;21796:42;:65;;;;21842:14;:19;;21860:1;21842:19;21796:65;21780:122;;;::::0;;-1:-1:-1;;;21780:122:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;21941:5;::::0;:32:::1;::::0;;-1:-1:-1;;;21941:32:0;;-1:-1:-1;;;;;21941:32:0;;::::1;;::::0;::::1;::::0;;;21912:15:::1;::::0;21941:5;;;::::1;::::0;:18:::1;::::0;:32;;;;;::::1;::::0;;;;;;;;;:5;:32;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;21941:32:0;;-1:-1:-1;22004:4:0::1;21990:18:::0;::::1;;;21982:46;;;::::0;;-1:-1:-1;;;21982:46:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;21982:46:0;;;;;;;;;;;;;::::1;;22041:14;:19;;22059:1;22041:19;22037:332;;;22117:49;:15;22147:10:::0;22117:19:::1;:49::i;:::-;-1:-1:-1::0;;;;;22071:30:0;::::1;;::::0;;;:16:::1;:30;::::0;;;;:95;22037:332:::1;;;22184:14;:19;;22202:1;22184:19;22180:189;;;-1:-1:-1::0;;;;;22212:30:0;::::1;22258:1;22212:30:::0;;;:16:::1;:30;::::0;;;;:47;22180:189:::1;;;22275:14;:19;;22293:1;22275:19;22271:98;;;-1:-1:-1::0;;;;;22303:30:0;::::1;;::::0;;;:16:::1;:30;::::0;;;;:47:::1;;:66:::0;;-1:-1:-1;;22303:66:0::1;::::0;::::1;;;::::0;;22271:98:::1;-1:-1:-1::0;;;;;22383:180:0;::::1;22433:30;::::0;;;:16:::1;:30;::::0;;;;;;;;:43;;22485:47:::1;::::0;;::::1;::::0;22383:180;;;;;22485:47:::1;;22383:180;;::::0;;::::1;::::0;;;;22541:15:::1;22383:180:::0;;;;;;::::1;::::0;;;;;;;::::1;4355:1;21619:950:::0;;;;:::o;19369:1840::-;2375:8;:6;:8::i;:::-;2374:9;2366:38;;;;;-1:-1:-1;;;2366:38:0;;;;;;;;;;;;-1:-1:-1;;;2366:38:0;;;;;;;;;;;;;;;19463:10:::1;-1:-1:-1::0;;;;;19463:18:0;::::1;;::::0;:42:::1;;-1:-1:-1::0;19499:6:0::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;19499:6:0::1;19485:10;:20;19463:42;19447:103;;;::::0;;-1:-1:-1;;;19447:103:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;19734:5;::::0;:30:::1;::::0;;-1:-1:-1;;;19734:30:0;;-1:-1:-1;;;;;19734:30:0;;::::1;;::::0;::::1;::::0;;;19577:29:::1;::::0;;;;;;;19734:5;;;::::1;::::0;:24:::1;::::0;:30;;;;;19577:29;;19734:30;;;;;;;:5;:30;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;19734:30:0::1;::::0;::::1;;::::0;::::1;::::0;::::1;;;;;::::0;::::1;;;;;;;;;;;;;;;-1:-1:-1::0;;;19734:30:0::1;;;;;;::::0;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;;;;;::::0;::::1;;;;;;;;;;;-1:-1:-1::0;;;19734:30:0::1;;;;;;;::::0;::::1;;::::0;;-1:-1:-1;19734:30:0;;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;::::1;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;19734:30:0::1;;;;;;::::0;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;;;;;::::0;::::1;;;;;;;;;;;-1:-1:-1::0;;;19734:30:0::1;;;;;;;::::0;::::1;;::::0;;-1:-1:-1;19734:30:0;;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;::::1;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;19734:30:0::1;;;;;;::::0;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;;;;;::::0;::::1;;;;;;;;;;;-1:-1:-1::0;;;19734:30:0::1;;;;;;;::::0;::::1;;::::0;;-1:-1:-1;19734:30:0;;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;::::1;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;19734:30:0::1;;;;;;::::0;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;;;;;::::0;::::1;;;;;;;;;;;-1:-1:-1::0;;;19734:30:0::1;;;;;;;::::0;::::1;;::::0;;-1:-1:-1;19734:30:0;;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;::::1;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;19734:30:0::1;;;;;;::::0;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;;;;;::::0;::::1;;;;;;;;;;;-1:-1:-1::0;;;19734:30:0::1;;;;;;;::::0;::::1;;::::0;;-1:-1:-1;19734:30:0;;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;::::1;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;19734:30:0::1;;;;;;::::0;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;;;;;::::0;::::1;;;;;;;;;;;-1:-1:-1::0;;;19734:30:0::1;;;;;;;::::0;::::1;;::::0;;-1:-1:-1;19734:30:0;;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;::::1;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;::::0;::::1;;19559:206;;;;;;;;;;19873:15;19817:16;:39;19834:12;19847:7;19834:21;;;;;;;;;;;;;;-1:-1:-1::0;;;;;19817:39:0::1;-1:-1:-1::0;;;;;19817:39:0::1;;;;;;;;;;;;:52;;;:71;;19801:117;;;::::0;;-1:-1:-1;;;19801:117:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;19801:117:0;;;;;;;;;;;;;::::1;;19959:16;:39;19976:12;19989:7;19976:21;;;;;;;;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;19959:39:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;19959:39:0;:56:::1;::::0;;::::1;::::0;::::1;;:64;;;19955:214;;;20101:15;20052:45;20075:5;;;;;;;;;-1:-1:-1::0;;;;;20075:5:0::1;-1:-1:-1::0;;;;;20075:19:0::1;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;20075:21:0;20052:18;;:9;;20062:7;;20052:18;::::1;;;;;;;;;;;:22;;:45;;;;:::i;:::-;:64;;20034:127;;;::::0;;-1:-1:-1;;;20034:127:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;20196:19:0;::::1;;::::0;;;:13:::1;:19;::::0;;;;;;;:28;;;;;;;;;::::1;;:37;::::0;::::1;:70;;;20237:12;20250:7;20237:21;;;;;;;;;;;;;;:29;;20262:4;20237:29;;;20196:70;20192:166;;;-1:-1:-1::0;;;;;20275:19:0;::::1;;::::0;;;:13:::1;:19;::::0;;;;;;;:28;;;;;;;;:35;;-1:-1:-1;;20275:35:0::1;20306:4;20275:35;::::0;;20192:166:::1;;;20322:36;::::0;;-1:-1:-1;;;20322:36:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;20192:166;20390:20;20420:169;20476:104;20531:15;:38;20547:12;20560:7;20547:21;;;;;;;;;;;;;;-1:-1:-1::0;;;;;20531:38:0::1;-1:-1:-1::0;;;;;20531:38:0::1;;;;;;;;;;;;;20476:15;:38;20492:12;20505:7;20492:21;;;;;;;20476:104;20420:5;::::0;20439:21;;-1:-1:-1;;;;;20420:5:0;;::::1;::::0;:18:::1;::::0;20439:12;;20452:7;;20439:21;::::1;;;;;;;;;;;20420:41;;;;;;;;;;;;;-1:-1:-1::0;;;;;20420:41:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;:169;20390:199;;20639:87;20704:12;20717:7;20704:21;;;;;;;;;;;;;;20639:15;:52;20663:12;20676:7;20663:21;;;;;;;20639:87;20598:15;:38;20614:12;20627:7;20614:21;;;;;;;;;;;;;;-1:-1:-1::0;;;;;20598:38:0::1;-1:-1:-1::0;;;;;20598:38:0::1;;;;;;;;;;;;:128;;;;20840:12;20853:7;20840:21;;;;;;;;;;;;;;20780:12;20793:7;20780:21;;;;;;;;;;;;;;-1:-1:-1::0;;;;;20773:39:0::1;;20821:4;20773:54;;;;;;;;;;;;;-1:-1:-1::0;;;;;20773:54:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;20773:54:0;:88:::1;;20757:152;;;::::0;;-1:-1:-1;;;20757:152:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;20925:12;20938:7;20925:21;;;;;;;;;;;;;;-1:-1:-1::0;;;;;20918:38:0::1;;20957:4;20963:12;20976:7;20963:21;;;;;;;;;;;;;;20918:67;;;;;;;;;;;;;-1:-1:-1::0;;;;;20918:67:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;20994:41:0::1;::::0;-1:-1:-1;21007:4:0;21013:7;21022:12;20994::::1;:41::i;:::-;21105:12;21118:7;21105:21;;;;;;;;;;;;;;-1:-1:-1::0;;;;;21076:127:0::1;21092:4;-1:-1:-1::0;;;;;21076:127:0::1;;21135:12;21148:7;21135:21;;;;;;;;;;;;;;21165:15;21189:7;21076:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2411:1;;;;;19369:1840:::0;;:::o;23120:153::-;23207:4;4299:12;:10;:12::i;:::-;4289:6;;;;;-1:-1:-1;;;;;4289:6:0;;;:22;;;4281:67;;;;;-1:-1:-1;;;4281:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4281:67:0;;;;;;;;;;;;;;;-1:-1:-1;23223:5:0::1;:26:::0;;-1:-1:-1;;;;;23223:26:0;::::1;-1:-1:-1::0;;;;;;23223:26:0;;::::1;;::::0;;;23120:153;;;:::o;5158:230::-;4299:12;:10;:12::i;:::-;4289:6;;;;;-1:-1:-1;;;;;4289:6:0;;;:22;;;4281:67;;;;;-1:-1:-1;;;4281:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4281:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;5243:22:0;::::1;5235:73;;;;-1:-1:-1::0;;;5235:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5341:6;::::0;;5320:38:::1;::::0;-1:-1:-1;;;;;5320:38:0;;::::1;::::0;5341:6:::1;::::0;;::::1;;::::0;5320:38:::1;::::0;::::1;5365:6;:17:::0;;-1:-1:-1;;;;;5365:17:0;;::::1;;;-1:-1:-1::0;;;;;;5365:17:0;;::::1;::::0;;;::::1;::::0;;5158:230::o;16783:20::-;;;-1:-1:-1;;;;;16783:20:0;;:::o;715:100::-;799:10;715:100;:::o;10903:143::-;10961:7;10989:1;10985;:5;10977:44;;;;;-1:-1:-1;;;10977:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11039:1;11035;:5;;;;;;;10903:143;-1:-1:-1;;;10903:143:0:o;10249:202::-;10307:7;10327:6;10323:20;;-1:-1:-1;10342:1:0;10335:8;;10323:20;10362:5;;;10366:1;10362;:5;:1;10382:5;;;;;:10;10374:56;;;;-1:-1:-1;;;10374:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9864:148;9922:7;9951:1;9946;:6;;9938:49;;;;;-1:-1:-1;;;9938:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10001:5:0;;;9864:148::o;9438:165::-;9496:7;9524:5;;;9544:6;;;;9536:46;;;;;-1:-1:-1;;;9536:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;2801:108;2375:8;:6;:8::i;:::-;2374:9;2366:38;;;;;-1:-1:-1;;;2366:38:0;;;;;;;;;;;;-1:-1:-1;;;2366:38:0;;;;;;;;;;;;;;;2857:7:::1;:14:::0;;-1:-1:-1;;2857:14:0::1;2867:4;2857:14;::::0;;2883:20:::1;2890:12;:10;:12::i;:::-;2883:20;::::0;;-1:-1:-1;;;;;2883:20:0;;::::1;::::0;;;;;;;::::1;::::0;;::::1;2801:108::o:0;3034:110::-;2626:8;:6;:8::i;:::-;2618:41;;;;;-1:-1:-1;;;2618:41:0;;;;;;;;;;;;-1:-1:-1;;;2618:41:0;;;;;;;;;;;;;;;3099:5:::1;3089:15:::0;;-1:-1:-1;;3089:15:0::1;::::0;;3116:22:::1;3125:12;:10;:12::i;18405:195::-:0;18528:5;;18489:46;;;-1:-1:-1;;;18489:46:0;;-1:-1:-1;;;;;18528:5:0;;;18489:46;;;;;;18475:11;;18489:30;;;;;:46;;;;;;;;;;;;;;:30;:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18489:46:0;;-1:-1:-1;18548:7:0;;18544:50;;18557:5;;:37;;;-1:-1:-1;;;18557:37:0;;-1:-1:-1;;;;;18557:37:0;;;;;;;;;;;;;;;:5;;;;;:18;;:37;;;;;:5;;:37;;;;;;;:5;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18544:50;18405:195;;:::o;27290:913::-;27582:5;;:30;;;-1:-1:-1;;;27582:30:0;;-1:-1:-1;;;;;27582:30:0;;;;;;;;;27410:32;;;;;;;;27582:5;;;;;:24;;:30;;;;;27410:32;;27582:30;;;;;;;:5;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;27582:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;27582:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;27582:30:0;;;;;;;;;;;;-1:-1:-1;27582:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;27582:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;27582:30:0;;;;;;;;;;;;-1:-1:-1;27582:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;27582:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;27582:30:0;;;;;;;;;;;;-1:-1:-1;27582:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;27582:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;27582:30:0;;;;;;;;;;;;-1:-1:-1;27582:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;27582:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;27582:30:0;;;;;;;;;;;;-1:-1:-1;27582:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;27582:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;27582:30:0;;;;;;;;;;;;-1:-1:-1;27582:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27401:212;;;;;;;;;;27646:16;27669:19;27708:45;27731:5;;;;;;;;;-1:-1:-1;;;;;27731:5:0;-1:-1:-1;;;;;27731:19:0;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27731:21:0;27708:18;;:9;;27718:7;;27708:18;;;;;:45;27697:56;;27777:15;27766:8;:26;27762:132;;;-1:-1:-1;27808:15:0;27762:132;;;27872:5;;:21;;;-1:-1:-1;;;27872:21:0;;;;27849:45;;-1:-1:-1;;;;;27872:5:0;;:19;;:21;;;;;;;;;;;;;;:5;:21;;;;;;;;;;27849:45;27835:59;;27762:132;27914:35;27930:9;27940:7;27930:18;;;;;;;;;;;;;;27914:11;:15;;:35;;;;:::i;:::-;27903:46;;16929:6;27989:8;:16;27985:212;;28014:183;28043:4;28058:15;28074:7;28058:24;;;;;;;;;;;;;;28093:12;28106:7;28093:21;;;;;;;;;;;;;;28125:12;28138:7;28125:21;;;;;;;;;;;;;;28157:8;28176:12;28014:18;:183::i;:::-;27290:913;;;;;;;;;:::o;28209:2277::-;28408:21;;28472:18;:8;16929:6;28472:12;:18::i;:::-;28461:29;;28513:95;28534:67;28550:12;28564:11;28577;28590:10;28534:15;:67::i;:::-;28513:8;;:12;:95::i;:::-;28497:111;-1:-1:-1;;;;;;28646:29:0;;;28642:459;;28686:17;28715:57;28762:9;28716:40;28734:5;;;;;;;;;-1:-1:-1;;;;;28734:5:0;-1:-1:-1;;;;;28734:19:0;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28734:21:0;28716:13;;:17;:40::i;28715:57::-;28686:86;-1:-1:-1;28797:28:0;:13;28686:86;28797:17;:28::i;:::-;28781:44;;28861:11;-1:-1:-1;;;;;28854:28:0;;28883:15;28900:9;28854:56;;;;;;;;;;;;;-1:-1:-1;;;;;28854:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28854:56:0;28836:111;;;;;-1:-1:-1;;;28836:111:0;;;;;;;;;;;;-1:-1:-1;;;28836:111:0;;;;;;;;;;;;;;;29027:11;-1:-1:-1;;;;;28963:130:0;29012:4;-1:-1:-1;;;;;28963:130:0;28986:15;-1:-1:-1;;;;;28963:130:0;;29049:9;29069:15;28963:130;;;;;;;;;;;;;;;;;;;;;;;;28642:459;;29131:56;29141:4;29147:11;29160;29173:13;29131:9;:56::i;:::-;29206:1;29214:1267;29225:12;:19;29221:23;;;;29214:1267;;;29271:12;29284:1;29271:15;;;;;;;;;;;;;;;;;;29259:8;:27;29255:1219;;29299:15;29317:38;29331:22;29351:1;29331:12;29344:1;29331:15;;;;;;;;;;;;;;;;;;:19;;:22;;;;:::i;:::-;29317:8;;:12;:38::i;:::-;29390:5;;:40;;;-1:-1:-1;;;29390:40:0;;-1:-1:-1;;;;;29390:40:0;;;;;;;;;;;;;;;;29299:56;;-1:-1:-1;29368:19:0;;29390:5;;;;;:24;;:40;;;;;;;;;;;;;;:5;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29390:40:0;;-1:-1:-1;;;;;;29459:26:0;;;;;;;;;;:100;;-1:-1:-1;29500:5:0;;:50;;;-1:-1:-1;;;29500:50:0;;-1:-1:-1;;;;;29500:50:0;;;;;;;;;;;;;;;;:5;;;;;:24;;:50;;;;;;;;;;;;;;:5;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29500:50:0;:59;29459:100;29443:970;;;29600:106;29626:67;29642:12;29656:11;29669;29682:10;29626:15;:67::i;:::-;29600:7;;:11;:106::i;:::-;29584:122;-1:-1:-1;;;;;;29758:29:0;;;29754:549;;29804:17;29839:57;29886:9;29840:40;29858:5;;;;;;;;;-1:-1:-1;;;;;29858:5:0;-1:-1:-1;;;;;29858:19:0;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29839:57;29804:92;-1:-1:-1;29927:28:0;:13;29804:92;29927:17;:28::i;:::-;29911:44;;30003:11;-1:-1:-1;;;;;29996:28:0;;30025:15;30042:9;29996:56;;;;;;;;;;;;;-1:-1:-1;;;;;29996:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29996:56:0;29972:129;;;;;-1:-1:-1;;;29972:129:0;;;;;;;;;;;;-1:-1:-1;;;29972:129:0;;;;;;;;;;;;;;;30205:11;-1:-1:-1;;;;;30123:166:0;30184:4;-1:-1:-1;;;;;30123:166:0;30152:15;-1:-1:-1;;;;;30123:166:0;;30233:9;30259:15;30123:166;;;;;;;;;;;;;;;;;;;;;;;;29754:549;;30345:56;30355:4;30361:11;30374;30387:13;30345:9;:56::i;:::-;-1:-1:-1;;30431:1:0;30427:5;29255:1219;;;30459:5;;29255:1219;29214:1267;;18799:468;-1:-1:-1;;;;;18951:26:0;;;18947:315;;19055:6;19013:12;-1:-1:-1;;;;;19006:30:0;;19045:4;19006:45;;;;;;;;;;;;;-1:-1:-1;;;;;19006:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19006:45:0;:55;;18988:133;;;;-1:-1:-1;;;18988:133:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19139:12;-1:-1:-1;;;;;19132:29:0;;19162:4;19168:6;19132:43;;;;;;;;;;;;;-1:-1:-1;;;;;19132:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19191:63:0;;;;;;19238:15;19132:43;19191:63;;;;;-1:-1:-1;;;;;19191:63:0;;;;;;;;;;;;;;;;;;;;;;18947:315;18799:468;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;
Swarm Source
ipfs://29f5f71533e514c6a65c8820b270c0e4c29204cc0608b6a0fc3cc988bba15e9b
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.