ERC-20
DeFi
Overview
Max Total Supply
2,925,458.68388218844327806 esMMY
Holders
1,709 ( -0.059%)
Market
Price
$0.00 @ 0.000000 FTM
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
EsGMX
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at ftmscan.com on 2022-12-02 */ pragma solidity 0.6.12; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.3._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.3._ */ function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using SafeMath for uint256; using Address for address; function safeTransfer(IERC20 token, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ function safeApprove(IERC20 token, address spender, uint256 value) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' // solhint-disable-next-line max-line-length require((value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).add(value); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero"); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } interface IYieldTracker { function claim(address _account, address _receiver) external returns (uint256); function updateRewards(address _account) external; function getTokensPerInterval() external view returns (uint256); function claimable(address _account) external view returns (uint256); } interface IBaseToken { function totalStaked() external view returns (uint256); function stakedBalance(address _account) external view returns (uint256); function removeAdmin(address _account) external; function setInPrivateTransferMode(bool _inPrivateTransferMode) external; function withdrawToken(address _token, address _account, uint256 _amount) external; } contract BaseToken is IERC20, IBaseToken { using SafeMath for uint256; using SafeERC20 for IERC20; string public name; string public symbol; uint8 public constant decimals = 18; uint256 public override totalSupply; uint256 public nonStakingSupply; address public gov; mapping (address => uint256) public balances; mapping (address => mapping (address => uint256)) public allowances; address[] public yieldTrackers; mapping (address => bool) public nonStakingAccounts; mapping (address => bool) public admins; bool public inPrivateTransferMode; mapping (address => bool) public isHandler; modifier onlyGov() { require(msg.sender == gov, "BaseToken: forbidden"); _; } modifier onlyAdmin() { require(admins[msg.sender], "BaseToken: forbidden"); _; } constructor(string memory _name, string memory _symbol, uint256 _initialSupply) public { name = _name; symbol = _symbol; gov = msg.sender; _mint(msg.sender, _initialSupply); } function setGov(address _gov) external onlyGov { gov = _gov; } function setInfo(string memory _name, string memory _symbol) external onlyGov { name = _name; symbol = _symbol; } function setYieldTrackers(address[] memory _yieldTrackers) external onlyGov { yieldTrackers = _yieldTrackers; } function addAdmin(address _account) external onlyGov { admins[_account] = true; } function removeAdmin(address _account) external override onlyGov { admins[_account] = false; } // to help users who accidentally send their tokens to this contract function withdrawToken(address _token, address _account, uint256 _amount) external override onlyGov { IERC20(_token).safeTransfer(_account, _amount); } function setInPrivateTransferMode(bool _inPrivateTransferMode) external override onlyGov { inPrivateTransferMode = _inPrivateTransferMode; } function setHandler(address _handler, bool _isActive) external onlyGov { isHandler[_handler] = _isActive; } function addNonStakingAccount(address _account) external onlyAdmin { require(!nonStakingAccounts[_account], "BaseToken: _account already marked"); _updateRewards(_account); nonStakingAccounts[_account] = true; nonStakingSupply = nonStakingSupply.add(balances[_account]); } function removeNonStakingAccount(address _account) external onlyAdmin { require(nonStakingAccounts[_account], "BaseToken: _account not marked"); _updateRewards(_account); nonStakingAccounts[_account] = false; nonStakingSupply = nonStakingSupply.sub(balances[_account]); } function recoverClaim(address _account, address _receiver) external onlyAdmin { for (uint256 i = 0; i < yieldTrackers.length; i++) { address yieldTracker = yieldTrackers[i]; IYieldTracker(yieldTracker).claim(_account, _receiver); } } function claim(address _receiver) external { for (uint256 i = 0; i < yieldTrackers.length; i++) { address yieldTracker = yieldTrackers[i]; IYieldTracker(yieldTracker).claim(msg.sender, _receiver); } } function totalStaked() external view override returns (uint256) { return totalSupply.sub(nonStakingSupply); } function balanceOf(address _account) external view override returns (uint256) { return balances[_account]; } function stakedBalance(address _account) external view override returns (uint256) { if (nonStakingAccounts[_account]) { return 0; } return balances[_account]; } function transfer(address _recipient, uint256 _amount) external override returns (bool) { _transfer(msg.sender, _recipient, _amount); return true; } function allowance(address _owner, address _spender) external view override returns (uint256) { return allowances[_owner][_spender]; } function approve(address _spender, uint256 _amount) external override returns (bool) { _approve(msg.sender, _spender, _amount); return true; } function transferFrom(address _sender, address _recipient, uint256 _amount) external override returns (bool) { if (isHandler[msg.sender]) { _transfer(_sender, _recipient, _amount); return true; } uint256 nextAllowance = allowances[_sender][msg.sender].sub(_amount, "BaseToken: transfer amount exceeds allowance"); _approve(_sender, msg.sender, nextAllowance); _transfer(_sender, _recipient, _amount); return true; } function _mint(address _account, uint256 _amount) internal { require(_account != address(0), "BaseToken: mint to the zero address"); _updateRewards(_account); totalSupply = totalSupply.add(_amount); balances[_account] = balances[_account].add(_amount); if (nonStakingAccounts[_account]) { nonStakingSupply = nonStakingSupply.add(_amount); } emit Transfer(address(0), _account, _amount); } function _burn(address _account, uint256 _amount) internal { require(_account != address(0), "BaseToken: burn from the zero address"); _updateRewards(_account); balances[_account] = balances[_account].sub(_amount, "BaseToken: burn amount exceeds balance"); totalSupply = totalSupply.sub(_amount); if (nonStakingAccounts[_account]) { nonStakingSupply = nonStakingSupply.sub(_amount); } emit Transfer(_account, address(0), _amount); } function _transfer(address _sender, address _recipient, uint256 _amount) private { require(_sender != address(0), "BaseToken: transfer from the zero address"); require(_recipient != address(0), "BaseToken: transfer to the zero address"); if (inPrivateTransferMode) { require(isHandler[msg.sender], "BaseToken: msg.sender not whitelisted"); } _updateRewards(_sender); _updateRewards(_recipient); balances[_sender] = balances[_sender].sub(_amount, "BaseToken: transfer amount exceeds balance"); balances[_recipient] = balances[_recipient].add(_amount); if (nonStakingAccounts[_sender]) { nonStakingSupply = nonStakingSupply.sub(_amount); } if (nonStakingAccounts[_recipient]) { nonStakingSupply = nonStakingSupply.add(_amount); } emit Transfer(_sender, _recipient,_amount); } function _approve(address _owner, address _spender, uint256 _amount) private { require(_owner != address(0), "BaseToken: approve from the zero address"); require(_spender != address(0), "BaseToken: approve to the zero address"); allowances[_owner][_spender] = _amount; emit Approval(_owner, _spender, _amount); } function _updateRewards(address _account) private { for (uint256 i = 0; i < yieldTrackers.length; i++) { address yieldTracker = yieldTrackers[i]; IYieldTracker(yieldTracker).updateRewards(_account); } } } interface IMintable { function isMinter(address _account) external returns (bool); function setMinter(address _minter, bool _isActive) external; function mint(address _account, uint256 _amount) external; function burn(address _account, uint256 _amount) external; } contract MintableBaseToken is BaseToken, IMintable { mapping (address => bool) public override isMinter; constructor(string memory _name, string memory _symbol, uint256 _initialSupply) public BaseToken(_name, _symbol, _initialSupply) { } modifier onlyMinter() { require(isMinter[msg.sender], "MintableBaseToken: forbidden"); _; } function setMinter(address _minter, bool _isActive) external override onlyGov { isMinter[_minter] = _isActive; } function mint(address _account, uint256 _amount) external override onlyMinter { _mint(_account, _amount); } function burn(address _account, uint256 _amount) external override onlyMinter { _burn(_account, _amount); } } contract EsGMX is MintableBaseToken { constructor() public MintableBaseToken("Escrowed MMY", "esMMY", 0) { } function id() external pure returns (string memory _name) { return "esMMY"; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"addAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"addNonStakingAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"admins","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gov","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"id","outputs":[{"internalType":"string","name":"_name","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"inPrivateTransferMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isHandler","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonStakingAccounts","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nonStakingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_receiver","type":"address"}],"name":"recoverClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"removeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"removeNonStakingAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_gov","type":"address"}],"name":"setGov","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_handler","type":"address"},{"internalType":"bool","name":"_isActive","type":"bool"}],"name":"setHandler","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_inPrivateTransferMode","type":"bool"}],"name":"setInPrivateTransferMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"name":"setInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"},{"internalType":"bool","name":"_isActive","type":"bool"}],"name":"setMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_yieldTrackers","type":"address[]"}],"name":"setYieldTrackers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"stakedBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"yieldTrackers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040518060400160405280600c81526020016b457363726f776564204d4d5960a01b8152506040518060400160405280600581526020016465734d4d5960d81b8152506000828282826000908051906020019062000072929190620002ed565b50815162000088906001906020850190620002ed565b50600480546001600160a01b03191633908117909155620000aa9082620000b6565b50505050505062000389565b6001600160a01b038216620000fd5760405162461bcd60e51b8152600401808060200182810382526023815260200180620025406023913960400191505060405180910390fd5b6200010882620001ec565b62000124816002546200028b60201b6200146f1790919060201c565b6002556001600160a01b038216600090815260056020908152604090912054620001599183906200146f6200028b821b17901c565b6001600160a01b03831660009081526005602090815260408083209390935560089052205460ff1615620001a757620001a3816003546200028b60201b6200146f1790919060201c565b6003555b6040805182815290516001600160a01b038416916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60005b60075481101562000287576000600782815481106200020a57fe5b600091825260208220015460408051635fd6196560e01b81526001600160a01b03878116600483015291519190921693508392635fd61965926024808201939182900301818387803b1580156200026057600080fd5b505af115801562000275573d6000803e3d6000fd5b505060019093019250620001ef915050565b5050565b600082820183811015620002e6576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200033057805160ff191683800117855562000360565b8280016001018555821562000360579182015b828111156200036057825182559160200191906001019062000343565b506200036e92915062000372565b5090565b5b808211156200036e576000815560010162000373565b6121a780620003996000396000f3fe608060405234801561001057600080fd5b50600436106101b75760003560e01c806301e33667146101bc57806306fdde03146101f4578063095ea7b31461027157806312d43a51146102b15780631785f53c146102d557806318160ddd146102fb5780631e83409a1461031557806323b872dd1461033b578063276eab4e1461037157806327e235e314610412578063313ce5671461043857806340c10f1914610456578063429b62e51461048257806346ea87af146104a857806352cd38d9146104ce57806355b6ed5c146104eb5780635a47a1a7146105195780636021726714610538578063622890771461055e578063704802751461058457806370a08231146105aa578063817b1cd2146105d05780639554381a146105d857806395d89b41146105fe578063996f11ee146106065780639cb7de4b146106345780639dc29fac14610662578063a9059cbb1461068e578063a923fc40146106ba578063aa271e1a146107e3578063af640d0f14610809578063c93be63614610811578063cf456ae714610819578063cfad57a214610847578063dd62ed3e1461086d578063dfbaefb11461089b578063fb30d916146108a3575b600080fd5b6101f2600480360360608110156101d257600080fd5b506001600160a01b038135811691602081013590911690604001356108c9565b005b6101fc61092f565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561023657818101518382015260200161021e565b50505050905090810190601f1680156102635780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61029d6004803603604081101561028757600080fd5b506001600160a01b0381351690602001356109bd565b604080519115158252519081900360200190f35b6102b96109d3565b604080516001600160a01b039092168252519081900360200190f35b6101f2600480360360208110156102eb57600080fd5b50356001600160a01b03166109e2565b610303610a50565b60408051918252519081900360200190f35b6101f26004803603602081101561032b57600080fd5b50356001600160a01b0316610a56565b61029d6004803603606081101561035157600080fd5b506001600160a01b03813581169160208101359091169060400135610b0d565b6101f26004803603602081101561038757600080fd5b810190602081018135600160201b8111156103a157600080fd5b8201836020820111156103b357600080fd5b803590602001918460208302840111600160201b831117156103d457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610ba7945050505050565b6103036004803603602081101561042857600080fd5b50356001600160a01b0316610c07565b610440610c19565b6040805160ff9092168252519081900360200190f35b6101f26004803603604081101561046c57600080fd5b506001600160a01b038135169060200135610c1e565b61029d6004803603602081101561049857600080fd5b50356001600160a01b0316610c8b565b61029d600480360360208110156104be57600080fd5b50356001600160a01b0316610ca0565b6102b9600480360360208110156104e457600080fd5b5035610cb5565b6103036004803603604081101561050157600080fd5b506001600160a01b0381358116916020013516610cdc565b6101f26004803603602081101561052f57600080fd5b50351515610cf9565b6103036004803603602081101561054e57600080fd5b50356001600160a01b0316610d59565b6101f26004803603602081101561057457600080fd5b50356001600160a01b0316610da2565b6101f26004803603602081101561059a57600080fd5b50356001600160a01b0316610e95565b610303600480360360208110156105c057600080fd5b50356001600160a01b0316610f06565b610303610f21565b61029d600480360360208110156105ee57600080fd5b50356001600160a01b0316610f3f565b6101fc610f54565b6101f26004803603604081101561061c57600080fd5b506001600160a01b0381358116916020013516610fae565b6101f26004803603604081101561064a57600080fd5b506001600160a01b03813516906020013515156110b5565b6101f26004803603604081101561067857600080fd5b506001600160a01b03813516906020013561112d565b61029d600480360360408110156106a457600080fd5b506001600160a01b03813516906020013561119a565b6101f2600480360360408110156106d057600080fd5b810190602081018135600160201b8111156106ea57600080fd5b8201836020820111156106fc57600080fd5b803590602001918460018302840111600160201b8311171561071d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561076f57600080fd5b82018360208201111561078157600080fd5b803590602001918460018302840111600160201b831117156107a257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506111a7945050505050565b61029d600480360360208110156107f957600080fd5b50356001600160a01b031661121b565b6101fc611230565b61030361124f565b6101f26004803603604081101561082f57600080fd5b506001600160a01b0381351690602001351515611255565b6101f26004803603602081101561085d57600080fd5b50356001600160a01b03166112cd565b6103036004803603604081101561088357600080fd5b506001600160a01b038135811691602001351661133c565b61029d611367565b6101f2600480360360208110156108b957600080fd5b50356001600160a01b0316611370565b6004546001600160a01b03163314610916576040805162461bcd60e51b81526020600482015260146024820152600080516020612020833981519152604482015290519081900360640190fd5b61092a6001600160a01b03841683836114c7565b505050565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156109b55780601f1061098a576101008083540402835291602001916109b5565b820191906000526020600020905b81548152906001019060200180831161099857829003601f168201915b505050505081565b60006109ca338484611519565b50600192915050565b6004546001600160a01b031681565b6004546001600160a01b03163314610a2f576040805162461bcd60e51b81526020600482015260146024820152600080516020612020833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600960205260409020805460ff19169055565b60025481565b60005b600754811015610b0957600060078281548110610a7257fe5b6000918252602080832090910154604080516310e059a160e11b81523360048201526001600160a01b038881166024830152915191909216945084936321c0b34293604480850194919392918390030190829087803b158015610ad457600080fd5b505af1158015610ae8573d6000803e3d6000fd5b505050506040513d6020811015610afe57600080fd5b505050600101610a59565b5050565b336000908152600b602052604081205460ff1615610b3857610b30848484611605565b506001610ba0565b6000610b82836040518060600160405280602c8152602001611fce602c91396001600160a01b0388166000908152600660209081526040808320338452909152902054919061181b565b9050610b8f853383611519565b610b9a858585611605565b60019150505b9392505050565b6004546001600160a01b03163314610bf4576040805162461bcd60e51b81526020600482015260146024820152600080516020612020833981519152604482015290519081900360640190fd5b8051610b09906007906020840190611e25565b60056020526000908152604090205481565b601281565b336000908152600c602052604090205460ff16610c81576040805162461bcd60e51b815260206004820152601c60248201527b26b4b73a30b13632a130b9b2aa37b5b2b71d103337b93134b23232b760211b604482015290519081900360640190fd5b610b0982826118b2565b60096020526000908152604090205460ff1681565b600b6020526000908152604090205460ff1681565b60078181548110610cc257fe5b6000918252602090912001546001600160a01b0316905081565b600660209081526000928352604080842090915290825290205481565b6004546001600160a01b03163314610d46576040805162461bcd60e51b81526020600482015260146024820152600080516020612020833981519152604482015290519081900360640190fd5b600a805460ff1916911515919091179055565b6001600160a01b03811660009081526008602052604081205460ff1615610d8257506000610d9d565b506001600160a01b0381166000908152600560205260409020545b919050565b3360009081526009602052604090205460ff16610df4576040805162461bcd60e51b81526020600482015260146024820152600080516020612020833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526008602052604090205460ff1615610e4c5760405162461bcd60e51b81526004018080602001828103825260228152602001806120b26022913960400191505060405180910390fd5b610e55816119a4565b6001600160a01b0381166000908152600860209081526040808320805460ff191660011790556005909152902054600354610e8f9161146f565b60035550565b6004546001600160a01b03163314610ee2576040805162461bcd60e51b81526020600482015260146024820152600080516020612020833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600960205260409020805460ff19166001179055565b6001600160a01b031660009081526005602052604090205490565b6000610f3a600354600254611a3a90919063ffffffff16565b905090565b60086020526000908152604090205460ff1681565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156109b55780601f1061098a576101008083540402835291602001916109b5565b3360009081526009602052604090205460ff16611000576040805162461bcd60e51b81526020600482015260146024820152600080516020612020833981519152604482015290519081900360640190fd5b60005b60075481101561092a5760006007828154811061101c57fe5b6000918252602080832090910154604080516310e059a160e11b81526001600160a01b0389811660048301528881166024830152915191909216945084936321c0b34293604480850194919392918390030190829087803b15801561108057600080fd5b505af1158015611094573d6000803e3d6000fd5b505050506040513d60208110156110aa57600080fd5b505050600101611003565b6004546001600160a01b03163314611102576040805162461bcd60e51b81526020600482015260146024820152600080516020612020833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b336000908152600c602052604090205460ff16611190576040805162461bcd60e51b815260206004820152601c60248201527b26b4b73a30b13632a130b9b2aa37b5b2b71d103337b93134b23232b760211b604482015290519081900360640190fd5b610b098282611a7c565b60006109ca338484611605565b6004546001600160a01b031633146111f4576040805162461bcd60e51b81526020600482015260146024820152600080516020612020833981519152604482015290519081900360640190fd5b8151611207906000906020850190611e8a565b50805161092a906001906020840190611e8a565b600c6020526000908152604090205460ff1681565b60408051808201909152600581526465734d4d5960d81b602082015290565b60035481565b6004546001600160a01b031633146112a2576040805162461bcd60e51b81526020600482015260146024820152600080516020612020833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6004546001600160a01b0316331461131a576040805162461bcd60e51b81526020600482015260146024820152600080516020612020833981519152604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b600a5460ff1681565b3360009081526009602052604090205460ff166113c2576040805162461bcd60e51b81526020600482015260146024820152600080516020612020833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526008602052604090205460ff1661142f576040805162461bcd60e51b815260206004820152601e60248201527f42617365546f6b656e3a205f6163636f756e74206e6f74206d61726b65640000604482015290519081900360640190fd5b611438816119a4565b6001600160a01b0381166000908152600860209081526040808320805460ff191690556005909152902054600354610e8f91611a3a565b600082820183811015610ba0576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261092a908490611b95565b6001600160a01b03831661155e5760405162461bcd60e51b81526004018080602001828103825260288152602001806120406028913960400191505060405180910390fd5b6001600160a01b0382166115a35760405162461bcd60e51b8152600401808060200182810382526026815260200180611fa86026913960400191505060405180910390fd5b6001600160a01b03808416600081815260066020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b03831661164a5760405162461bcd60e51b81526004018080602001828103825260298152602001806121496029913960400191505060405180910390fd5b6001600160a01b03821661168f5760405162461bcd60e51b8152600401808060200182810382526027815260200180611f5e6027913960400191505060405180910390fd5b600a5460ff16156116e857336000908152600b602052604090205460ff166116e85760405162461bcd60e51b8152600401808060200182810382526025815260200180611f396025913960400191505060405180910390fd5b6116f1836119a4565b6116fa826119a4565b611737816040518060600160405280602a8152602001612068602a91396001600160a01b038616600090815260056020526040902054919061181b565b6001600160a01b038085166000908152600560205260408082209390935590841681522054611766908261146f565b6001600160a01b0380841660009081526005602090815260408083209490945591861681526008909152205460ff16156117ab576003546117a79082611a3a565b6003555b6001600160a01b03821660009081526008602052604090205460ff16156117dd576003546117d9908261146f565b6003555b816001600160a01b0316836001600160a01b0316600080516020612092833981519152836040518082815260200191505060405180910390a3505050565b600081848411156118aa5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561186f578181015183820152602001611857565b50505050905090810190601f16801561189c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b0382166118f75760405162461bcd60e51b8152600401808060200182810382526023815260200180611f856023913960400191505060405180910390fd5b611900826119a4565b60025461190d908261146f565b6002556001600160a01b038216600090815260056020526040902054611933908261146f565b6001600160a01b03831660009081526005602090815260408083209390935560089052205460ff16156119715760035461196d908261146f565b6003555b6040805182815290516001600160a01b038416916000916000805160206120928339815191529181900360200190a35050565b60005b600754811015610b09576000600782815481106119c057fe5b600091825260208220015460408051635fd6196560e01b81526001600160a01b03878116600483015291519190921693508392635fd61965926024808201939182900301818387803b158015611a1557600080fd5b505af1158015611a29573d6000803e3d6000fd5b5050600190930192506119a7915050565b6000610ba083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061181b565b6001600160a01b038216611ac15760405162461bcd60e51b81526004018080602001828103825260258152602001806121246025913960400191505060405180910390fd5b611aca826119a4565b611b07816040518060600160405280602681526020016120d4602691396001600160a01b038516600090815260056020526040902054919061181b565b6001600160a01b038316600090815260056020526040902055600254611b2d9082611a3a565b6002556001600160a01b03821660009081526008602052604090205460ff1615611b6257600354611b5e9082611a3a565b6003555b6040805182815290516000916001600160a01b038516916000805160206120928339815191529181900360200190a35050565b6060611bea826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611c469092919063ffffffff16565b80519091501561092a57808060200190516020811015611c0957600080fd5b505161092a5760405162461bcd60e51b815260040180806020018281038252602a8152602001806120fa602a913960400191505060405180910390fd5b6060611c558484600085611c5d565b949350505050565b606082471015611c9e5760405162461bcd60e51b8152600401808060200182810382526026815260200180611ffa6026913960400191505060405180910390fd5b611ca785611db9565b611cf8576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b60208310611d375780518252601f199092019160209182019101611d18565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611d99576040519150601f19603f3d011682016040523d82523d6000602084013e611d9e565b606091505b5091509150611dae828286611dbf565b979650505050505050565b3b151590565b60608315611dce575081610ba0565b825115611dde5782518084602001fd5b60405162461bcd60e51b815260206004820181815284516024840152845185939192839260440191908501908083836000831561186f578181015183820152602001611857565b828054828255906000526020600020908101928215611e7a579160200282015b82811115611e7a57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190611e45565b50611e86929150611f04565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611ecb57805160ff1916838001178555611ef8565b82800160010185558215611ef8579182015b82811115611ef8578251825591602001919060010190611edd565b50611e86929150611f23565b5b80821115611e865780546001600160a01b0319168155600101611f05565b5b80821115611e865760008155600101611f2456fe42617365546f6b656e3a206d73672e73656e646572206e6f742077686974656c697374656442617365546f6b656e3a207472616e7366657220746f20746865207a65726f206164647265737342617365546f6b656e3a206d696e7420746f20746865207a65726f206164647265737342617365546f6b656e3a20617070726f766520746f20746865207a65726f206164647265737342617365546f6b656e3a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c42617365546f6b656e3a20666f7262696464656e00000000000000000000000042617365546f6b656e3a20617070726f76652066726f6d20746865207a65726f206164647265737342617365546f6b656e3a207472616e7366657220616d6f756e7420657863656564732062616c616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef42617365546f6b656e3a205f6163636f756e7420616c7265616479206d61726b656442617365546f6b656e3a206275726e20616d6f756e7420657863656564732062616c616e63655361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656442617365546f6b656e3a206275726e2066726f6d20746865207a65726f206164647265737342617365546f6b656e3a207472616e736665722066726f6d20746865207a65726f2061646472657373a264697066735822122065fce0bf0b6217f43095074557d9109f129d2149a018a5d2468cb99a973e0eb064736f6c634300060c003342617365546f6b656e3a206d696e7420746f20746865207a65726f2061646472657373
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101b75760003560e01c806301e33667146101bc57806306fdde03146101f4578063095ea7b31461027157806312d43a51146102b15780631785f53c146102d557806318160ddd146102fb5780631e83409a1461031557806323b872dd1461033b578063276eab4e1461037157806327e235e314610412578063313ce5671461043857806340c10f1914610456578063429b62e51461048257806346ea87af146104a857806352cd38d9146104ce57806355b6ed5c146104eb5780635a47a1a7146105195780636021726714610538578063622890771461055e578063704802751461058457806370a08231146105aa578063817b1cd2146105d05780639554381a146105d857806395d89b41146105fe578063996f11ee146106065780639cb7de4b146106345780639dc29fac14610662578063a9059cbb1461068e578063a923fc40146106ba578063aa271e1a146107e3578063af640d0f14610809578063c93be63614610811578063cf456ae714610819578063cfad57a214610847578063dd62ed3e1461086d578063dfbaefb11461089b578063fb30d916146108a3575b600080fd5b6101f2600480360360608110156101d257600080fd5b506001600160a01b038135811691602081013590911690604001356108c9565b005b6101fc61092f565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561023657818101518382015260200161021e565b50505050905090810190601f1680156102635780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61029d6004803603604081101561028757600080fd5b506001600160a01b0381351690602001356109bd565b604080519115158252519081900360200190f35b6102b96109d3565b604080516001600160a01b039092168252519081900360200190f35b6101f2600480360360208110156102eb57600080fd5b50356001600160a01b03166109e2565b610303610a50565b60408051918252519081900360200190f35b6101f26004803603602081101561032b57600080fd5b50356001600160a01b0316610a56565b61029d6004803603606081101561035157600080fd5b506001600160a01b03813581169160208101359091169060400135610b0d565b6101f26004803603602081101561038757600080fd5b810190602081018135600160201b8111156103a157600080fd5b8201836020820111156103b357600080fd5b803590602001918460208302840111600160201b831117156103d457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610ba7945050505050565b6103036004803603602081101561042857600080fd5b50356001600160a01b0316610c07565b610440610c19565b6040805160ff9092168252519081900360200190f35b6101f26004803603604081101561046c57600080fd5b506001600160a01b038135169060200135610c1e565b61029d6004803603602081101561049857600080fd5b50356001600160a01b0316610c8b565b61029d600480360360208110156104be57600080fd5b50356001600160a01b0316610ca0565b6102b9600480360360208110156104e457600080fd5b5035610cb5565b6103036004803603604081101561050157600080fd5b506001600160a01b0381358116916020013516610cdc565b6101f26004803603602081101561052f57600080fd5b50351515610cf9565b6103036004803603602081101561054e57600080fd5b50356001600160a01b0316610d59565b6101f26004803603602081101561057457600080fd5b50356001600160a01b0316610da2565b6101f26004803603602081101561059a57600080fd5b50356001600160a01b0316610e95565b610303600480360360208110156105c057600080fd5b50356001600160a01b0316610f06565b610303610f21565b61029d600480360360208110156105ee57600080fd5b50356001600160a01b0316610f3f565b6101fc610f54565b6101f26004803603604081101561061c57600080fd5b506001600160a01b0381358116916020013516610fae565b6101f26004803603604081101561064a57600080fd5b506001600160a01b03813516906020013515156110b5565b6101f26004803603604081101561067857600080fd5b506001600160a01b03813516906020013561112d565b61029d600480360360408110156106a457600080fd5b506001600160a01b03813516906020013561119a565b6101f2600480360360408110156106d057600080fd5b810190602081018135600160201b8111156106ea57600080fd5b8201836020820111156106fc57600080fd5b803590602001918460018302840111600160201b8311171561071d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561076f57600080fd5b82018360208201111561078157600080fd5b803590602001918460018302840111600160201b831117156107a257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506111a7945050505050565b61029d600480360360208110156107f957600080fd5b50356001600160a01b031661121b565b6101fc611230565b61030361124f565b6101f26004803603604081101561082f57600080fd5b506001600160a01b0381351690602001351515611255565b6101f26004803603602081101561085d57600080fd5b50356001600160a01b03166112cd565b6103036004803603604081101561088357600080fd5b506001600160a01b038135811691602001351661133c565b61029d611367565b6101f2600480360360208110156108b957600080fd5b50356001600160a01b0316611370565b6004546001600160a01b03163314610916576040805162461bcd60e51b81526020600482015260146024820152600080516020612020833981519152604482015290519081900360640190fd5b61092a6001600160a01b03841683836114c7565b505050565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156109b55780601f1061098a576101008083540402835291602001916109b5565b820191906000526020600020905b81548152906001019060200180831161099857829003601f168201915b505050505081565b60006109ca338484611519565b50600192915050565b6004546001600160a01b031681565b6004546001600160a01b03163314610a2f576040805162461bcd60e51b81526020600482015260146024820152600080516020612020833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600960205260409020805460ff19169055565b60025481565b60005b600754811015610b0957600060078281548110610a7257fe5b6000918252602080832090910154604080516310e059a160e11b81523360048201526001600160a01b038881166024830152915191909216945084936321c0b34293604480850194919392918390030190829087803b158015610ad457600080fd5b505af1158015610ae8573d6000803e3d6000fd5b505050506040513d6020811015610afe57600080fd5b505050600101610a59565b5050565b336000908152600b602052604081205460ff1615610b3857610b30848484611605565b506001610ba0565b6000610b82836040518060600160405280602c8152602001611fce602c91396001600160a01b0388166000908152600660209081526040808320338452909152902054919061181b565b9050610b8f853383611519565b610b9a858585611605565b60019150505b9392505050565b6004546001600160a01b03163314610bf4576040805162461bcd60e51b81526020600482015260146024820152600080516020612020833981519152604482015290519081900360640190fd5b8051610b09906007906020840190611e25565b60056020526000908152604090205481565b601281565b336000908152600c602052604090205460ff16610c81576040805162461bcd60e51b815260206004820152601c60248201527b26b4b73a30b13632a130b9b2aa37b5b2b71d103337b93134b23232b760211b604482015290519081900360640190fd5b610b0982826118b2565b60096020526000908152604090205460ff1681565b600b6020526000908152604090205460ff1681565b60078181548110610cc257fe5b6000918252602090912001546001600160a01b0316905081565b600660209081526000928352604080842090915290825290205481565b6004546001600160a01b03163314610d46576040805162461bcd60e51b81526020600482015260146024820152600080516020612020833981519152604482015290519081900360640190fd5b600a805460ff1916911515919091179055565b6001600160a01b03811660009081526008602052604081205460ff1615610d8257506000610d9d565b506001600160a01b0381166000908152600560205260409020545b919050565b3360009081526009602052604090205460ff16610df4576040805162461bcd60e51b81526020600482015260146024820152600080516020612020833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526008602052604090205460ff1615610e4c5760405162461bcd60e51b81526004018080602001828103825260228152602001806120b26022913960400191505060405180910390fd5b610e55816119a4565b6001600160a01b0381166000908152600860209081526040808320805460ff191660011790556005909152902054600354610e8f9161146f565b60035550565b6004546001600160a01b03163314610ee2576040805162461bcd60e51b81526020600482015260146024820152600080516020612020833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600960205260409020805460ff19166001179055565b6001600160a01b031660009081526005602052604090205490565b6000610f3a600354600254611a3a90919063ffffffff16565b905090565b60086020526000908152604090205460ff1681565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156109b55780601f1061098a576101008083540402835291602001916109b5565b3360009081526009602052604090205460ff16611000576040805162461bcd60e51b81526020600482015260146024820152600080516020612020833981519152604482015290519081900360640190fd5b60005b60075481101561092a5760006007828154811061101c57fe5b6000918252602080832090910154604080516310e059a160e11b81526001600160a01b0389811660048301528881166024830152915191909216945084936321c0b34293604480850194919392918390030190829087803b15801561108057600080fd5b505af1158015611094573d6000803e3d6000fd5b505050506040513d60208110156110aa57600080fd5b505050600101611003565b6004546001600160a01b03163314611102576040805162461bcd60e51b81526020600482015260146024820152600080516020612020833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b336000908152600c602052604090205460ff16611190576040805162461bcd60e51b815260206004820152601c60248201527b26b4b73a30b13632a130b9b2aa37b5b2b71d103337b93134b23232b760211b604482015290519081900360640190fd5b610b098282611a7c565b60006109ca338484611605565b6004546001600160a01b031633146111f4576040805162461bcd60e51b81526020600482015260146024820152600080516020612020833981519152604482015290519081900360640190fd5b8151611207906000906020850190611e8a565b50805161092a906001906020840190611e8a565b600c6020526000908152604090205460ff1681565b60408051808201909152600581526465734d4d5960d81b602082015290565b60035481565b6004546001600160a01b031633146112a2576040805162461bcd60e51b81526020600482015260146024820152600080516020612020833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6004546001600160a01b0316331461131a576040805162461bcd60e51b81526020600482015260146024820152600080516020612020833981519152604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b600a5460ff1681565b3360009081526009602052604090205460ff166113c2576040805162461bcd60e51b81526020600482015260146024820152600080516020612020833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526008602052604090205460ff1661142f576040805162461bcd60e51b815260206004820152601e60248201527f42617365546f6b656e3a205f6163636f756e74206e6f74206d61726b65640000604482015290519081900360640190fd5b611438816119a4565b6001600160a01b0381166000908152600860209081526040808320805460ff191690556005909152902054600354610e8f91611a3a565b600082820183811015610ba0576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261092a908490611b95565b6001600160a01b03831661155e5760405162461bcd60e51b81526004018080602001828103825260288152602001806120406028913960400191505060405180910390fd5b6001600160a01b0382166115a35760405162461bcd60e51b8152600401808060200182810382526026815260200180611fa86026913960400191505060405180910390fd5b6001600160a01b03808416600081815260066020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b03831661164a5760405162461bcd60e51b81526004018080602001828103825260298152602001806121496029913960400191505060405180910390fd5b6001600160a01b03821661168f5760405162461bcd60e51b8152600401808060200182810382526027815260200180611f5e6027913960400191505060405180910390fd5b600a5460ff16156116e857336000908152600b602052604090205460ff166116e85760405162461bcd60e51b8152600401808060200182810382526025815260200180611f396025913960400191505060405180910390fd5b6116f1836119a4565b6116fa826119a4565b611737816040518060600160405280602a8152602001612068602a91396001600160a01b038616600090815260056020526040902054919061181b565b6001600160a01b038085166000908152600560205260408082209390935590841681522054611766908261146f565b6001600160a01b0380841660009081526005602090815260408083209490945591861681526008909152205460ff16156117ab576003546117a79082611a3a565b6003555b6001600160a01b03821660009081526008602052604090205460ff16156117dd576003546117d9908261146f565b6003555b816001600160a01b0316836001600160a01b0316600080516020612092833981519152836040518082815260200191505060405180910390a3505050565b600081848411156118aa5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561186f578181015183820152602001611857565b50505050905090810190601f16801561189c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b0382166118f75760405162461bcd60e51b8152600401808060200182810382526023815260200180611f856023913960400191505060405180910390fd5b611900826119a4565b60025461190d908261146f565b6002556001600160a01b038216600090815260056020526040902054611933908261146f565b6001600160a01b03831660009081526005602090815260408083209390935560089052205460ff16156119715760035461196d908261146f565b6003555b6040805182815290516001600160a01b038416916000916000805160206120928339815191529181900360200190a35050565b60005b600754811015610b09576000600782815481106119c057fe5b600091825260208220015460408051635fd6196560e01b81526001600160a01b03878116600483015291519190921693508392635fd61965926024808201939182900301818387803b158015611a1557600080fd5b505af1158015611a29573d6000803e3d6000fd5b5050600190930192506119a7915050565b6000610ba083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061181b565b6001600160a01b038216611ac15760405162461bcd60e51b81526004018080602001828103825260258152602001806121246025913960400191505060405180910390fd5b611aca826119a4565b611b07816040518060600160405280602681526020016120d4602691396001600160a01b038516600090815260056020526040902054919061181b565b6001600160a01b038316600090815260056020526040902055600254611b2d9082611a3a565b6002556001600160a01b03821660009081526008602052604090205460ff1615611b6257600354611b5e9082611a3a565b6003555b6040805182815290516000916001600160a01b038516916000805160206120928339815191529181900360200190a35050565b6060611bea826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611c469092919063ffffffff16565b80519091501561092a57808060200190516020811015611c0957600080fd5b505161092a5760405162461bcd60e51b815260040180806020018281038252602a8152602001806120fa602a913960400191505060405180910390fd5b6060611c558484600085611c5d565b949350505050565b606082471015611c9e5760405162461bcd60e51b8152600401808060200182810382526026815260200180611ffa6026913960400191505060405180910390fd5b611ca785611db9565b611cf8576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b60208310611d375780518252601f199092019160209182019101611d18565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611d99576040519150601f19603f3d011682016040523d82523d6000602084013e611d9e565b606091505b5091509150611dae828286611dbf565b979650505050505050565b3b151590565b60608315611dce575081610ba0565b825115611dde5782518084602001fd5b60405162461bcd60e51b815260206004820181815284516024840152845185939192839260440191908501908083836000831561186f578181015183820152602001611857565b828054828255906000526020600020908101928215611e7a579160200282015b82811115611e7a57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190611e45565b50611e86929150611f04565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611ecb57805160ff1916838001178555611ef8565b82800160010185558215611ef8579182015b82811115611ef8578251825591602001919060010190611edd565b50611e86929150611f23565b5b80821115611e865780546001600160a01b0319168155600101611f05565b5b80821115611e865760008155600101611f2456fe42617365546f6b656e3a206d73672e73656e646572206e6f742077686974656c697374656442617365546f6b656e3a207472616e7366657220746f20746865207a65726f206164647265737342617365546f6b656e3a206d696e7420746f20746865207a65726f206164647265737342617365546f6b656e3a20617070726f766520746f20746865207a65726f206164647265737342617365546f6b656e3a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c42617365546f6b656e3a20666f7262696464656e00000000000000000000000042617365546f6b656e3a20617070726f76652066726f6d20746865207a65726f206164647265737342617365546f6b656e3a207472616e7366657220616d6f756e7420657863656564732062616c616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef42617365546f6b656e3a205f6163636f756e7420616c7265616479206d61726b656442617365546f6b656e3a206275726e20616d6f756e7420657863656564732062616c616e63655361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656442617365546f6b656e3a206275726e2066726f6d20746865207a65726f206164647265737342617365546f6b656e3a207472616e736665722066726f6d20746865207a65726f2061646472657373a264697066735822122065fce0bf0b6217f43095074557d9109f129d2149a018a5d2468cb99a973e0eb064736f6c634300060c0033
Deployed Bytecode Sourcemap
28918:220:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22115:165;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22115:165:0;;;;;;;;;;;;;;;;;:::i;:::-;;20452:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24576:165;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24576:165:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;20630:18;;;:::i;:::-;;;;-1:-1:-1;;;;;20630:18:0;;;;;;;;;;;;;;21925:108;;;;;;;;;;;;;;;;-1:-1:-1;21925:108:0;-1:-1:-1;;;;;21925:108:0;;:::i;20548:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;23510:249;;;;;;;;;;;;;;;;-1:-1:-1;23510:249:0;-1:-1:-1;;;;;23510:249:0;;:::i;24749:500::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24749:500:0;;;;;;;;;;;;;;;;;:::i;21689:125::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;21689:125:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;21689:125:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21689:125:0;;-1:-1:-1;21689:125:0;;-1:-1:-1;;;;;21689:125:0:i;20657:44::-;;;;;;;;;;;;;;;;-1:-1:-1;20657:44:0;-1:-1:-1;;;;;20657:44:0;;:::i;20504:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28659:121;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;28659:121:0;;;;;;;;:::i;20879:39::-;;;;;;;;;;;;;;;;-1:-1:-1;20879:39:0;-1:-1:-1;;;;;20879:39:0;;:::i;20967:42::-;;;;;;;;;;;;;;;;-1:-1:-1;20967:42:0;-1:-1:-1;;;;;20967:42:0;;:::i;20784:30::-;;;;;;;;;;;;;;;;-1:-1:-1;20784:30:0;;:::i;20708:67::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;20708:67:0;;;;;;;;;;:::i;22288:154::-;;;;;;;;;;;;;;;;-1:-1:-1;22288:154:0;;;;:::i;24028:205::-;;;;;;;;;;;;;;;;-1:-1:-1;24028:205:0;-1:-1:-1;;;;;24028:205:0;;:::i;22579:313::-;;;;;;;;;;;;;;;;-1:-1:-1;22579:313:0;-1:-1:-1;;;;;22579:313:0;;:::i;21822:95::-;;;;;;;;;;;;;;;;-1:-1:-1;21822:95:0;-1:-1:-1;;;;;21822:95:0;;:::i;23898:122::-;;;;;;;;;;;;;;;;-1:-1:-1;23898:122:0;-1:-1:-1;;;;;23898:122:0;;:::i;23767:123::-;;;:::i;20821:51::-;;;;;;;;;;;;;;;;-1:-1:-1;20821:51:0;-1:-1:-1;;;;;20821:51:0;;:::i;20477:20::-;;;:::i;23220:282::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;23220:282:0;;;;;;;;;;:::i;22450:121::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22450:121:0;;;;;;;;;;:::i;28788:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;28788:121:0;;;;;;;;:::i;24241:171::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24241:171:0;;;;;;;;:::i;21545:136::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;21545:136:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;21545:136:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21545:136:0;;;;;;;;-1:-1:-1;21545:136:0;;-1:-1:-1;;;;;21545:136:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;21545:136:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21545:136:0;;-1:-1:-1;21545:136:0;;-1:-1:-1;;;;;21545:136:0:i;28199:50::-;;;;;;;;;;;;;;;;-1:-1:-1;28199:50:0;-1:-1:-1;;;;;28199:50:0;;:::i;29044:91::-;;;:::i;20590:31::-;;;:::i;28525:126::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;28525:126:0;;;;;;;;;;:::i;21461:76::-;;;;;;;;;;;;;;;;-1:-1:-1;21461:76:0;-1:-1:-1;;;;;21461:76:0;;:::i;24420:148::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24420:148:0;;;;;;;;;;:::i;20927:33::-;;;:::i;22900:312::-;;;;;;;;;;;;;;;;-1:-1:-1;22900:312:0;-1:-1:-1;;;;;22900:312:0;;:::i;22115:165::-;21070:3;;-1:-1:-1;;;;;21070:3:0;21056:10;:17;21048:50;;;;;-1:-1:-1;;;21048:50:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;21048:50:0;;;;;;;;;;;;;;;22226:46:::1;-1:-1:-1::0;;;;;22226:27:0;::::1;22254:8:::0;22264:7;22226:27:::1;:46::i;:::-;22115:165:::0;;;:::o;20452:18::-;;;;;;;;;;;;;;;-1:-1:-1;;20452:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;24576:165::-;24655:4;24672:39;24681:10;24693:8;24703:7;24672:8;:39::i;:::-;-1:-1:-1;24729:4:0;24576:165;;;;:::o;20630:18::-;;;-1:-1:-1;;;;;20630:18:0;;:::o;21925:108::-;21070:3;;-1:-1:-1;;;;;21070:3:0;21056:10;:17;21048:50;;;;;-1:-1:-1;;;21048:50:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;21048:50:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;22001:16:0::1;22020:5;22001:16:::0;;;:6:::1;:16;::::0;;;;:24;;-1:-1:-1;;22001:24:0::1;::::0;;21925:108::o;20548:35::-;;;;:::o;23510:249::-;23569:9;23564:188;23588:13;:20;23584:24;;23564:188;;;23630:20;23653:13;23667:1;23653:16;;;;;;;;;;;;;;;;;;;;23684:56;;;-1:-1:-1;;;23684:56:0;;23718:10;23684:56;;;;-1:-1:-1;;;;;23684:56:0;;;;;;;;;23653:16;;;;;-1:-1:-1;23653:16:0;;23684:33;;:56;;;;;23653:16;;23684:56;;;;;;;;;23653:16;23684:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;23610:3:0;;23564:188;;;;23510:249;:::o;24749:500::-;24883:10;24852:4;24873:21;;;:9;:21;;;;;;;;24869:119;;;24911:39;24921:7;24930:10;24942:7;24911:9;:39::i;:::-;-1:-1:-1;24972:4:0;24965:11;;24869:119;24998:21;25022:92;25058:7;25022:92;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25022:19:0;;;;;;:10;:19;;;;;;;;25042:10;25022:31;;;;;;;;;:92;:35;:92::i;:::-;24998:116;;25125:44;25134:7;25143:10;25155:13;25125:8;:44::i;:::-;25180:39;25190:7;25199:10;25211:7;25180:9;:39::i;:::-;25237:4;25230:11;;;24749:500;;;;;;:::o;21689:125::-;21070:3;;-1:-1:-1;;;;;21070:3:0;21056:10;:17;21048:50;;;;;-1:-1:-1;;;21048:50:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;21048:50:0;;;;;;;;;;;;;;;21776:30;;::::1;::::0;:13:::1;::::0;:30:::1;::::0;::::1;::::0;::::1;:::i;20657:44::-:0;;;;;;;;;;;;;:::o;20504:35::-;20537:2;20504:35;:::o;28659:121::-;28453:10;28444:20;;;;:8;:20;;;;;;;;28436:61;;;;;-1:-1:-1;;;28436:61:0;;;;;;;;;;;;-1:-1:-1;;;28436:61:0;;;;;;;;;;;;;;;28748:24:::1;28754:8;28764:7;28748:5;:24::i;20879:39::-:0;;;;;;;;;;;;;;;:::o;20967:42::-;;;;;;;;;;;;;;;:::o;20784:30::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20784:30:0;;-1:-1:-1;20784:30:0;:::o;20708:67::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;22288:154::-;21070:3;;-1:-1:-1;;;;;21070:3:0;21056:10;:17;21048:50;;;;;-1:-1:-1;;;21048:50:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;21048:50:0;;;;;;;;;;;;;;;22388:21:::1;:46:::0;;-1:-1:-1;;22388:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22288:154::o;24028:205::-;-1:-1:-1;;;;;24125:28:0;;24101:7;24125:28;;;:18;:28;;;;;;;;24121:69;;;-1:-1:-1;24177:1:0;24170:8;;24121:69;-1:-1:-1;;;;;;24207:18:0;;;;;;:8;:18;;;;;;24028:205;;;;:::o;22579:313::-;21173:10;21166:18;;;;:6;:18;;;;;;;;21158:51;;;;;-1:-1:-1;;;21158:51:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;21158:51:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;22666:28:0;::::1;;::::0;;;:18:::1;:28;::::0;;;;;::::1;;22665:29;22657:76;;;;-1:-1:-1::0;;;22657:76:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22744:24;22759:8;22744:14;:24::i;:::-;-1:-1:-1::0;;;;;22779:28:0;::::1;;::::0;;;:18:::1;:28;::::0;;;;;;;:35;;-1:-1:-1;;22779:35:0::1;22810:4;22779:35;::::0;;22865:8:::1;:18:::0;;;;;;22844:16:::1;::::0;:40:::1;::::0;:20:::1;:40::i;:::-;22825:16;:59:::0;-1:-1:-1;22579:313:0:o;21822:95::-;21070:3;;-1:-1:-1;;;;;21070:3:0;21056:10;:17;21048:50;;;;;-1:-1:-1;;;21048:50:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;21048:50:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;21886:16:0::1;;::::0;;;:6:::1;:16;::::0;;;;:23;;-1:-1:-1;;21886:23:0::1;21905:4;21886:23;::::0;;21822:95::o;23898:122::-;-1:-1:-1;;;;;23994:18:0;23967:7;23994:18;;;:8;:18;;;;;;;23898:122::o;23767:123::-;23822:7;23849:33;23865:16;;23849:11;;:15;;:33;;;;:::i;:::-;23842:40;;23767:123;:::o;20821:51::-;;;;;;;;;;;;;;;:::o;20477:20::-;;;;;;;;;;;;;;;-1:-1:-1;;20477:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23220:282;21173:10;21166:18;;;;:6;:18;;;;;;;;21158:51;;;;;-1:-1:-1;;;21158:51:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;21158:51:0;;;;;;;;;;;;;;;23314:9:::1;23309:186;23333:13;:20:::0;23329:24;::::1;23309:186;;;23375:20;23398:13;23412:1;23398:16;;;;;;;;;::::0;;;::::1;::::0;;;;;::::1;::::0;23429:54:::1;::::0;;-1:-1:-1;;;23429:54:0;;-1:-1:-1;;;;;23429:54:0;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;;;23398:16;;;::::1;::::0;-1:-1:-1;23398:16:0;;23429:33:::1;::::0;:54;;;;;23398:16;;23429:54;;;;;;;;;23398:16;23429:54;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;;23355:3:0::1;;23309:186;;22450:121:::0;21070:3;;-1:-1:-1;;;;;21070:3:0;21056:10;:17;21048:50;;;;;-1:-1:-1;;;21048:50:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;21048:50:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;22532:19:0;;;::::1;;::::0;;;:9:::1;:19;::::0;;;;:31;;-1:-1:-1;;22532:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22450:121::o;28788:::-;28453:10;28444:20;;;;:8;:20;;;;;;;;28436:61;;;;;-1:-1:-1;;;28436:61:0;;;;;;;;;;;;-1:-1:-1;;;28436:61:0;;;;;;;;;;;;;;;28877:24:::1;28883:8;28893:7;28877:5;:24::i;24241:171::-:0;24323:4;24340:42;24350:10;24362;24374:7;24340:9;:42::i;21545:136::-;21070:3;;-1:-1:-1;;;;;21070:3:0;21056:10;:17;21048:50;;;;;-1:-1:-1;;;21048:50:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;21048:50:0;;;;;;;;;;;;;;;21634:12;;::::1;::::0;:4:::1;::::0;:12:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;21657:16:0;;::::1;::::0;:6:::1;::::0;:16:::1;::::0;::::1;::::0;::::1;:::i;28199:50::-:0;;;;;;;;;;;;;;;:::o;29044:91::-;29113:14;;;;;;;;;;;;-1:-1:-1;;;29113:14:0;;;;29044:91;:::o;20590:31::-;;;;:::o;28525:126::-;21070:3;;-1:-1:-1;;;;;21070:3:0;21056:10;:17;21048:50;;;;;-1:-1:-1;;;21048:50:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;21048:50:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;28614:17:0;;;::::1;;::::0;;;:8:::1;:17;::::0;;;;:29;;-1:-1:-1;;28614:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;28525:126::o;21461:76::-;21070:3;;-1:-1:-1;;;;;21070:3:0;21056:10;:17;21048:50;;;;;-1:-1:-1;;;21048:50:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;21048:50:0;;;;;;;;;;;;;;;21519:3:::1;:10:::0;;-1:-1:-1;;;;;;21519:10:0::1;-1:-1:-1::0;;;;;21519:10:0;;;::::1;::::0;;;::::1;::::0;;21461:76::o;24420:148::-;-1:-1:-1;;;;;24532:18:0;;;24505:7;24532:18;;;:10;:18;;;;;;;;:28;;;;;;;;;;;;;24420:148::o;20927:33::-;;;;;;:::o;22900:312::-;21173:10;21166:18;;;;:6;:18;;;;;;;;21158:51;;;;;-1:-1:-1;;;21158:51:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;21158:51:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;22989:28:0;::::1;;::::0;;;:18:::1;:28;::::0;;;;;::::1;;22981:71;;;::::0;;-1:-1:-1;;;22981:71:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;23063:24;23078:8;23063:14;:24::i;:::-;-1:-1:-1::0;;;;;23098:28:0;::::1;23129:5;23098:28:::0;;;:18:::1;:28;::::0;;;;;;;:36;;-1:-1:-1;;23098:36:0::1;::::0;;23185:8:::1;:18:::0;;;;;;23164:16:::1;::::0;:40:::1;::::0;:20:::1;:40::i;871:181::-:0;929:7;961:5;;;985:6;;;;977:46;;;;;-1:-1:-1;;;977:46:0;;;;;;;;;;;;-1:-1:-1;;;977:46:0;;;;;;;;;;;;;;16549:177;16659:58;;;-1:-1:-1;;;;;16659:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16659:58:0;-1:-1:-1;;;16659:58:0;;;16632:86;;16652:5;;16632:19;:86::i;27223:357::-;-1:-1:-1;;;;;27319:20:0;;27311:73;;;;-1:-1:-1;;;27311:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27403:22:0;;27395:73;;;;-1:-1:-1;;;27395:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27481:18:0;;;;;;;:10;:18;;;;;;;;:28;;;;;;;;;;;;;:38;;;27537:35;;;;;;;;;;;;;;;;;27223:357;;;:::o;26271:944::-;-1:-1:-1;;;;;26371:21:0;;26363:75;;;;-1:-1:-1;;;26363:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26457:24:0;;26449:76;;;;-1:-1:-1;;;26449:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26542:21;;;;26538:125;;;26598:10;26588:21;;;;:9;:21;;;;;;;;26580:71;;;;-1:-1:-1;;;26580:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26675:23;26690:7;26675:14;:23::i;:::-;26709:26;26724:10;26709:14;:26::i;:::-;26768:76;26790:7;26768:76;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26768:17:0;;;;;;:8;:17;;;;;;;:76;:21;:76::i;:::-;-1:-1:-1;;;;;26748:17:0;;;;;;;:8;:17;;;;;;:96;;;;26878:20;;;;;;;:33;;26903:7;26878:24;:33::i;:::-;-1:-1:-1;;;;;26855:20:0;;;;;;;:8;:20;;;;;;;;:56;;;;26928:27;;;;;:18;:27;;;;;;;26924:108;;;26991:16;;:29;;27012:7;26991:20;:29::i;:::-;26972:16;:48;26924:108;-1:-1:-1;;;;;27046:30:0;;;;;;:18;:30;;;;;;;;27042:111;;;27112:16;;:29;;27133:7;27112:20;:29::i;:::-;27093:16;:48;27042:111;27188:10;-1:-1:-1;;;;;27170:37:0;27179:7;-1:-1:-1;;;;;27170:37:0;-1:-1:-1;;;;;;;;;;;27199:7:0;27170:37;;;;;;;;;;;;;;;;;;26271:944;;;:::o;1774:192::-;1860:7;1896:12;1888:6;;;;1880:29;;;;-1:-1:-1;;;1880:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1932:5:0;;;1774:192::o;25257:477::-;-1:-1:-1;;;;;25335:22:0;;25327:70;;;;-1:-1:-1;;;25327:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25410:24;25425:8;25410:14;:24::i;:::-;25461:11;;:24;;25477:7;25461:15;:24::i;:::-;25447:11;:38;-1:-1:-1;;;;;25517:18:0;;;;;;:8;:18;;;;;;:31;;25540:7;25517:22;:31::i;:::-;-1:-1:-1;;;;;25496:18:0;;;;;;:8;:18;;;;;;;;:52;;;;25565:18;:28;;;;;;25561:109;;;25629:16;;:29;;25650:7;25629:20;:29::i;:::-;25610:16;:48;25561:109;25687:39;;;;;;;;-1:-1:-1;;;;;25687:39:0;;;25704:1;;-1:-1:-1;;;;;;;;;;;25687:39:0;;;;;;;;25257:477;;:::o;27588:251::-;27654:9;27649:183;27673:13;:20;27669:24;;27649:183;;;27715:20;27738:13;27752:1;27738:16;;;;;;;;;;;;;;;;;27769:51;;;-1:-1:-1;;;27769:51:0;;-1:-1:-1;;;;;27769:51:0;;;;;;;;;27738:16;;;;;-1:-1:-1;27738:16:0;;27769:41;;:51;;;;;;;;;;;27738:16;;27769:51;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;27695:3:0;;;;;-1:-1:-1;27649:183:0;;-1:-1:-1;;27649:183:0;1335:136;1393:7;1420:43;1424:1;1427;1420:43;;;;;;;;;;;;;;;;;:3;:43::i;25742:521::-;-1:-1:-1;;;;;25820:22:0;;25812:72;;;;-1:-1:-1;;;25812:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25897:24;25912:8;25897:14;:24::i;:::-;25955:73;25978:7;25955:73;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25955:18:0;;;;;;:8;:18;;;;;;;:73;:22;:73::i;:::-;-1:-1:-1;;;;;25934:18:0;;;;;;:8;:18;;;;;:94;26053:11;;:24;;26069:7;26053:15;:24::i;:::-;26039:11;:38;-1:-1:-1;;;;;26094:28:0;;;;;;:18;:28;;;;;;;;26090:109;;;26158:16;;:29;;26179:7;26158:20;:29::i;:::-;26139:16;:48;26090:109;26216:39;;;;;;;;26243:1;;-1:-1:-1;;;;;26216:39:0;;;-1:-1:-1;;;;;;;;;;;26216:39:0;;;;;;;;25742:521;;:::o;18854:761::-;19278:23;19304:69;19332:4;19304:69;;;;;;;;;;;;;;;;;19312:5;-1:-1:-1;;;;;19304:27:0;;;:69;;;;;:::i;:::-;19388:17;;19278:95;;-1:-1:-1;19388:21:0;19384:224;;19530:10;19519:30;;;;;;;;;;;;;;;-1:-1:-1;19519:30:0;19511:85;;;;-1:-1:-1;;;19511:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11647:195;11750:12;11782:52;11804:6;11812:4;11818:1;11821:12;11782:21;:52::i;:::-;11775:59;11647:195;-1:-1:-1;;;;11647:195:0:o;12699:530::-;12826:12;12884:5;12859:21;:30;;12851:81;;;;-1:-1:-1;;;12851:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12951:18;12962:6;12951:10;:18::i;:::-;12943:60;;;;;-1:-1:-1;;;12943:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13077:12;13091:23;13118:6;-1:-1:-1;;;;;13118:11:0;13138:5;13146:4;13118:33;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13118:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13076:75;;;;13169:52;13187:7;13196:10;13208:12;13169:17;:52::i;:::-;13162:59;12699:530;-1:-1:-1;;;;;;;12699:530:0:o;8729:422::-;9096:20;9135:8;;;8729:422::o;15239:742::-;15354:12;15383:7;15379:595;;;-1:-1:-1;15414:10:0;15407:17;;15379:595;15528:17;;:21;15524:439;;15791:10;15785:17;15852:15;15839:10;15835:2;15831:19;15824:44;15739:148;15927:20;;-1:-1:-1;;;15927:20:0;;;;;;;;;;;;;;;;;15934:12;;15927:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Swarm Source
ipfs://65fce0bf0b6217f43095074557d9109f129d2149a018a5d2468cb99a973e0eb0
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.