Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 25 from a total of 157 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Remove Liquidity | 11282420 | 1929 days ago | IN | 0 ETH | 0.00558387 | ||||
| Add Liquidity | 11280072 | 1930 days ago | IN | 3 ETH | 0.0136471 | ||||
| Remove Liquidity | 11280018 | 1930 days ago | IN | 0 ETH | 0.01278603 | ||||
| Remove Liquidity | 11279852 | 1930 days ago | IN | 0 ETH | 0.01193362 | ||||
| Remove Liquidity | 11278306 | 1930 days ago | IN | 0 ETH | 0.00863868 | ||||
| Remove Liquidity | 11277433 | 1930 days ago | IN | 0 ETH | 0.00172538 | ||||
| Remove Liquidity | 11277432 | 1930 days ago | IN | 0 ETH | 0.00172538 | ||||
| Remove Liquidity | 11277431 | 1930 days ago | IN | 0 ETH | 0.01051295 | ||||
| Add Liquidity | 11277237 | 1930 days ago | IN | 1 ETH | 0.00728952 | ||||
| Remove Liquidity | 11276947 | 1930 days ago | IN | 0 ETH | 0.01710328 | ||||
| Add Liquidity | 11276069 | 1930 days ago | IN | 4 ETH | 0.01175543 | ||||
| Add Liquidity | 11274795 | 1930 days ago | IN | 1 ETH | 0.00754946 | ||||
| Remove Liquidity | 11274234 | 1931 days ago | IN | 0 ETH | 0.00753864 | ||||
| Add Liquidity | 11274003 | 1931 days ago | IN | 4 ETH | 0.00609764 | ||||
| Add Liquidity | 11273656 | 1931 days ago | IN | 5 ETH | 0.00696873 | ||||
| Remove Liquidity | 11273024 | 1931 days ago | IN | 0 ETH | 0.00909152 | ||||
| Add Liquidity | 11272054 | 1931 days ago | IN | 1 ETH | 0.00463199 | ||||
| Add Liquidity | 11271857 | 1931 days ago | IN | 3 ETH | 0.00421027 | ||||
| Add Liquidity | 11271369 | 1931 days ago | IN | 3.27 ETH | 0.00493763 | ||||
| Remove Liquidity | 11270927 | 1931 days ago | IN | 0 ETH | 0.0012118 | ||||
| Remove Liquidity | 11270927 | 1931 days ago | IN | 0 ETH | 0.00049171 | ||||
| Remove Liquidity | 11270921 | 1931 days ago | IN | 0 ETH | 0.00497192 | ||||
| Remove Liquidity | 11270882 | 1931 days ago | IN | 0 ETH | 0.00511398 | ||||
| Add Liquidity | 11270821 | 1931 days ago | IN | 0.25 ETH | 0.00667837 | ||||
| Add Liquidity | 11270605 | 1931 days ago | IN | 2.025 ETH | 0.00566209 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| - | 11282420 | 1929 days ago | 541.27888068 ETH | ||||
| - | 11280018 | 1930 days ago | 45 ETH | ||||
| - | 11279852 | 1930 days ago | 49 ETH | ||||
| - | 11278306 | 1930 days ago | 33 ETH | ||||
| - | 11277431 | 1930 days ago | 2.025 ETH | ||||
| - | 11276947 | 1930 days ago | 1 ETH | ||||
| - | 11274234 | 1931 days ago | 5 ETH | ||||
| - | 11273024 | 1931 days ago | 2 ETH | ||||
| - | 11270921 | 1931 days ago | 0.25 ETH | ||||
| - | 11270882 | 1931 days ago | 1 ETH | ||||
| - | 11270595 | 1931 days ago | 4.00239999 ETH | ||||
| - | 11268984 | 1931 days ago | 25 ETH | ||||
| - | 11268374 | 1931 days ago | 1 ETH | ||||
| - | 11267924 | 1931 days ago | 1 ETH | ||||
| - | 11267586 | 1932 days ago | 0.01943334 ETH | ||||
| - | 11267578 | 1932 days ago | 0.1 ETH | ||||
| - | 11266845 | 1932 days ago | 0.1 ETH | ||||
| - | 11260698 | 1933 days ago | 65 ETH | ||||
| - | 11254844 | 1933 days ago | 3.6 ETH | ||||
| - | 11232614 | 1937 days ago | 2 ETH | ||||
| - | 11225618 | 1938 days ago | 1 ETH | ||||
| - | 11216223 | 1939 days ago | 30.0451435 ETH | ||||
| - | 11215610 | 1940 days ago | 29 ETH | ||||
| - | 11212397 | 1940 days ago | 1.01 ETH | ||||
| - | 11212048 | 1940 days ago | 10 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
vault
Compiler Version
v0.6.6+commit.6c089d02
Contract Source Code (Solidity Multiple files format)
//////////////////////////////////////////////////
//SYNLEV VAULT CONTRACT V 1.0.0
//////////////////////////
pragma solidity >= 0.6.6;
import './ownable.sol';
import './SafeMath.sol';
import './IERC20.sol';
import './priceCalculatorInterface.sol';
import './vaultHelperInterface.sol';
import './priceAggregatorInterface.sol';
/*
* @title SynLev vault contract.
* @author Icarus
*/
contract vault is Owned {
using SafeMath for uint256;
constructor() public {
priceAggregatorInterface(0x7196545d854D03D9c87B7588F6D9e1e42D876E95).registerVaultAggregator(0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419);
priceAggregator = priceAggregatorInterface(0x73f27200093b74B3d21ff4df63E14a9E3fB85cd8);
priceCalculator = priceCalculatorInterface(0xf4c56485A09388DbdcB01056E76A7B5bf7f5F574);
vaultHelper = vaultHelperInterface(0xE0d6b68403D32Dd659E452DB880393Df15fA00F2);
synStakingProxy = 0x0070F3e1147c03a1Bb0caF80035B7c362D312119;
buyFee = 4 * 10**6;
sellFee = 4 * 10**6;
}
/////////////////////
//EVENTS/////////////
/////////////////////
event PriceUpdate(
uint256 bullPrice,
uint256 bearPrice,
uint256 bullLiqEquity,
uint256 bearLiqEquity,
uint256 bullEquity,
uint256 bearEquity,
uint256 roundId,
bool updated
);
event TokenBuy(
address account,
address token,
uint256 tokensMinted,
uint256 ethin,
uint256 fees,
uint256 bonus
);
event TokenSell(
address account,
address token,
uint256 tokensBurned,
uint256 ethout,
uint256 fees,
uint256 penalty
);
event LiquidityAdd(
address account,
uint256 eth,
uint256 shares,
uint256 shareprice
);
event LiquidityRemove(
address account,
uint256 eth,
uint256 shares,
uint256 shareprice
);
modifier isActive() {
require(active == true);
if(active == true && !priceAggregator.roundIdCheck(address(this))) {
updatePrice();
}
_;
}
modifier updateIfActive() {
if(active == true && !priceAggregator.roundIdCheck(address(this))) {
updatePrice();
}
_;
}
/////////////////////
//GLOBAL VARIBLES
/////////////////////
bool private active;
uint256 constant private multiplier = 3;
address private bull;
address private bear;
uint256 private latestRoundId;
mapping(address => uint256) private price;
mapping(address => uint256) private equity;
uint256 private buyFee;
uint256 private sellFee;
uint256 private totalLiqShares;
uint256 private liqFees;
uint256 private balanceEquity;
mapping(address => uint256) private liqTokens;
mapping(address => uint256) private liqEquity;
mapping(address => uint256) private userShares;
priceAggregatorInterface public priceAggregator;
priceCalculatorInterface public priceCalculator;
vaultHelperInterface public vaultHelper;
address payable public synStakingProxy;
//Fallback function
receive() external payable {}
////////////////////////////////////
//LOW LEVEL BUY AND SELL FUNCTIONS//
// NO SAFETY CHECK //
//SHOULD ONLY BE CALLED BY OTHER //
// CONTRACTS //
////////////////////////////////////
/*
* @notice Buys bull or bear token and updates price before token buy.
* @param token bull or bear token address
* @param account Recipient of newly minted tokens
* @dev Should only be called by a router contract. Checks the excess ETH in
* contract by calling getDepositEquity(). Can't 0 ETH buy. Calculates
* resulting tokens and fees. Sends fees and mints tokens.
*
*/
function tokenBuy(address token, address account)
public
virtual
isActive()
{
uint256 ethin = getDepositEquity();
require(ethin > 0);
require(token == bull || token == bear);
IERC20 itkn = IERC20(token);
uint256 fees = ethin.mul(buyFee).div(10**9);
uint256 buyeth = ethin.sub(fees);
uint256 bonus = vaultHelper.getBonus(address(this), token, buyeth);
uint256 tokensToMint = buyeth.add(bonus).mul(10**18).div(price[token]);
equity[token] = equity[token].add(buyeth).add(bonus);
if(bonus != 0) balanceEquity = balanceEquity.sub(bonus);
payFees(fees);
itkn.mint(account, tokensToMint);
emit TokenBuy(account, token, tokensToMint, ethin, fees, bonus);
}
/*
* @notice Sells bull or bear token and updates price before token sell.
* @param token bull or bear token address
* @param account Recipient of resulting eth from burned tokens
* @dev Should only be called by a router contract that simultaneously sends
* tokens using transferFrom() and calls this function. Looks at the current
* balance of the contract of the selected token. Can't 0 token sell.
* Calculates resulting ETH from burned tokens. Pays fees, burns tokens, and
* sends ETH.
*/
function tokenSell(address token, address payable account)
public
virtual
isActive()
{
IERC20 itkn = IERC20(token);
uint256 tokensToBurn = itkn.balanceOf(address(this));
require(tokensToBurn > 0);
require(token == bull || token == bear);
uint256 selleth = tokensToBurn.mul(price[token]).div(10**18);
uint256 penalty = vaultHelper.getPenalty(address(this), token, selleth);
uint256 fees = sellFee.mul(selleth.sub(penalty)).div(10**9);
uint256 ethout = selleth.sub(penalty).sub(fees);
equity[token] = equity[token].sub(selleth);
if(penalty != 0) balanceEquity = balanceEquity.add(penalty);
payFees(fees);
itkn.burn(tokensToBurn);
account.transfer(ethout);
emit TokenSell(account, token, tokensToBurn, ethout, fees, penalty);
}
/*
* @notice Adds liquidty to the contract and gives LP shares. Minimum LP add
* is 1 wei. Virtually mints bear/bull tokens to be held in the vault.
* @param account Recipient of LP shares
* @dev Can be called by router but there is benefit to doing so. All
* calculations are done with respect to equity and supply. Doing by price
* creates rounding error. Calls updatePrice() then calls getLiqAddTokens()
* to determine how many bull/bear to create.
*/
function addLiquidity(address account)
public
payable
virtual
updateIfActive()
{
uint256 ethin = getDepositEquity();
(
uint256 bullEquity,
uint256 bearEquity,
uint256 bullTokens,
uint256 bearTokens
) = vaultHelper.getLiqAddTokens(address(this), ethin);
uint256 sharePrice = vaultHelper.getSharePrice(address(this));
uint256 resultingShares = ethin.mul(10**18).div(sharePrice);
liqEquity[bull] = liqEquity[bull].add(bullEquity);
liqEquity[bear] = liqEquity[bear].add(bearEquity);
liqTokens[bull] = liqTokens[bull].add(bullTokens);
liqTokens[bear] = liqTokens[bear].add(bearTokens);
userShares[account] = userShares[account].add(resultingShares);
totalLiqShares = totalLiqShares.add(resultingShares);
emit LiquidityAdd(account, ethin, resultingShares, sharePrice);
}
/*
* @notice Removes liquidty to the contract and gives LP shares. Virtually
* burns bear/bull tokens to be held in the vault. Cannot be called if user
* has 0 shares
* @param _shares How many shares to burn
* @dev Cannot be called by a router as LP shares are not currently tokenized.
* Calls updatePrice() then calls getLiqRemoveTokens() to determine how many
* bull/bear tokens to remove.
*/
function removeLiquidity(uint256 shares)
public
virtual
updateIfActive()
{
require(shares <= userShares[msg.sender]);
(
uint256 bullEquity,
uint256 bearEquity,
uint256 bullTokens,
uint256 bearTokens,
uint256 feesPaid
) = vaultHelper.getLiqRemoveTokens(address(this), shares);
uint256 sharePrice = vaultHelper.getSharePrice(address(this));
uint256 resultingEth = bullEquity.add(bearEquity).add(feesPaid);
liqEquity[bull] = liqEquity[bull].sub(bullEquity);
liqEquity[bear] = liqEquity[bear].sub(bearEquity);
liqTokens[bull] = liqTokens[bull].sub(bullTokens);
liqTokens[bear] = liqTokens[bear].sub(bearTokens);
userShares[msg.sender] = userShares[msg.sender].sub(shares);
totalLiqShares = totalLiqShares.sub(shares);
liqFees = liqFees.sub(feesPaid);
msg.sender.transfer(resultingEth);
emit LiquidityRemove(msg.sender, resultingEth, shares, sharePrice);
}
/*
* @notice Updates price from chainlink oracles.
* @param _shares How many shares to burn
* @dev Calls getUpdatedPrice() function and sets new price, equity, liquidity
* equity, and latestRoundId; only if there is new price data
* @return bool if price was updated
*/
function updatePrice()
public
{
require(active == true);
(
uint256[6] memory priceArray,
uint256 roundId,
bool updated
) = priceCalculator.getUpdatedPrice(address(this), latestRoundId);
if(updated == true) {
(
price[bull],
price[bear],
liqEquity[bull],
liqEquity[bear],
equity[bull],
equity[bear],
latestRoundId
) =
(
priceArray[0],
priceArray[1],
priceArray[2],
priceArray[3],
priceArray[4],
priceArray[5],
roundId
);
}
emit PriceUpdate(
price[bull],
price[bear],
liqEquity[bull],
liqEquity[bear],
equity[bull],
equity[bear],
latestRoundId,
updated
);
}
///////////////////////
//INTERNAL FUNCTIONS///
///////////////////////
/*
* @notice Pays half fees to SYN stakers and half to LP
* @param _amount Fees to be paid in ETH
* @dev Only called by tokenBuy() and tokenSell()
*/
function payFees(uint256 amount) internal {
synStakingProxy.transfer(amount.div(2));
liqFees += amount.sub(amount.div(2));
}
///////////////////
///VIEW FUNCTIONS//
///////////////////
function getActive() public view returns(bool) {return(active);}
function getMultiplier() public pure returns(uint256) {return(multiplier);}
function getBullToken() public view returns(address) {return(bull);}
function getBearToken() public view returns(address) {return(bear);}
function getLatestRoundId() public view returns(uint256) {return(latestRoundId);}
function getPrice(address token) public view returns(uint256) {return(price[token]);}
function getEquity(address token) public view returns(uint256) {return(equity[token]);}
function getBuyFee() public view returns(uint256) {return(buyFee);}
function getSellFee() public view returns(uint256) {return(sellFee);}
function getTotalLiqShares() public view returns(uint256) {return(totalLiqShares);}
function getLiqFees() public view returns(uint256) {return(liqFees);}
function getBalanceEquity() public view returns(uint256) {return(balanceEquity);}
function getLiqTokens(address token) public view returns(uint256) {return(liqTokens[token]);}
function getLiqEquity(address token) public view returns(uint256) {return(liqEquity[token]);}
function getUserShares(address account) public view returns(uint256) {return(userShares[account]);}
function getTotalEquity() public view returns(uint256) {
return(getTokenEquity(bear).add(getTokenEquity(bull)));
}
function getTokenEquity(address token) public view returns(uint256) {
return(equity[token].add(liqEquity[token]));
}
function getTokenLiqEquity(address token) public view returns(uint256) {
return(liqTokens[token].mul(price[token]).div(10**18));
}
function getDepositEquity() public view returns(uint256) {
return(address(this).balance.sub(liqFees.add(balanceEquity).add(getTotalEquity())));
}
///////////////////
//ADMIN FUNCTIONS//
///////////////////
//One time use function to set token addresses. this can never be changed once set.
//Cannot be included in constructor as vault must be deployed before tokens.
function setTokens(address bearAddress, address bullAddress) public onlyOwner() {
require(bear == address(0) || bull == address(0));
(bull, bear) = (bullAddress, bearAddress);
//Set initial price to .01 eth
(price[bull], price[bear]) = (10**16, 10**16);
}
function setActive(bool state, uint256 roundId) public onlyOwner() {
active = state;
if(roundId == 0) {
( , latestRoundId) = priceAggregator.priceRequest(address(this), latestRoundId);
}
else {
latestRoundId == roundId;
}
}
//Fees in the form of 1 / 10^8
function setBuyFee(uint256 amount) public onlyOwner() {
require(amount <= 10**9);
buyFee = amount;
}
//Sell fees limited to a maximum of 1%
function setSellFee(uint256 amount) public onlyOwner() {
require(amount <= 10**7);
sellFee = amount;
}
}
pragma solidity >= 0.6.4;
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
function mint(address account, uint256 amount) external;
function burn(uint256 amount) external;
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
pragma solidity ^0.6.0;
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;
}
}
contract Owned is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor () internal {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
function owner() public view returns (address) {
return _owner;
}
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
pragma solidity >= 0.6.6;
interface priceAggregatorInterface {
function registerVaultAggregator(address oracle) external;
function priceRequest(
address vault,
uint256 lastUpdated
)
external
view
returns(int256[] memory, uint256);
function roundIdCheck(address vault) external view returns(bool);
}
pragma solidity >= 0.6.6;
interface priceCalculatorInterface {
function getUpdatedPrice(
address vault,
uint256 latestRoundId
)
external
view
returns(
uint256[6] memory latestPrice,
uint256 rRoundId,
bool updated
);
function getKFactor(
uint256 targetEquity,
uint256 bullEquity,
uint256 bearEquity,
uint256 totalEquity
)
external
view
returns(uint256 kFactor);
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.6.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, 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;
}
}
pragma solidity >= 0.6.6;
interface vaultHelperInterface {
function getBonus(address vault, address token, uint256 eth)
external
view
returns(uint256 bonus);
function getPenalty(address vault, address token, uint256 eth)
external
view
returns(uint256 penalty);
function getSharePrice(address vault)
external
view
returns(uint256 sharePrice);
function getLiqAddTokens(address vault, uint256 eth)
external
view
returns(
uint256 bullEquity,
uint256 bearEquity,
uint256 bullTokens,
uint256 bearTokens
);
function getLiqRemoveTokens(address vault, uint256 eth)
external
view
returns(
uint256 bullEquity,
uint256 bearEquity,
uint256 bullTokens,
uint256 bearTokens,
uint256 feesPaid
);
}
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"eth","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shareprice","type":"uint256"}],"name":"LiquidityAdd","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"eth","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shareprice","type":"uint256"}],"name":"LiquidityRemove","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":"uint256","name":"bullPrice","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bearPrice","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bullLiqEquity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bearLiqEquity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bullEquity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bearEquity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"roundId","type":"uint256"},{"indexed":false,"internalType":"bool","name":"updated","type":"bool"}],"name":"PriceUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokensMinted","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethin","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fees","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bonus","type":"uint256"}],"name":"TokenBuy","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokensBurned","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethout","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fees","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"penalty","type":"uint256"}],"name":"TokenSell","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalanceEquity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBearToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBullToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDepositEquity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getEquity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLatestRoundId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getLiqEquity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLiqFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getLiqTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getTokenEquity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getTokenLiqEquity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalEquity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalLiqShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getUserShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceAggregator","outputs":[{"internalType":"contract priceAggregatorInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceCalculator","outputs":[{"internalType":"contract priceCalculatorInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"removeLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"},{"internalType":"uint256","name":"roundId","type":"uint256"}],"name":"setActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"bearAddress","type":"address"},{"internalType":"address","name":"bullAddress","type":"address"}],"name":"setTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"synStakingProxy","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"tokenBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address payable","name":"account","type":"address"}],"name":"tokenSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updatePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vaultHelper","outputs":[{"internalType":"contract vaultHelperInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
608060405234801561001057600080fd5b5060006100246001600160e01b0361018016565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506040805163446bc45360e01b8152735f4ec3df9cbd43714fe2740f5e3616155c5b841960048201529051737196545d854d03d9c87b7588f6d9e1e42d876e959163446bc45391602480830192600092919082900301818387803b1580156100d457600080fd5b505af11580156100e8573d6000803e3d6000fd5b5050600e80546001600160a01b03199081167373f27200093b74b3d21ff4df63e14a9e3fb85cd817909155600f8054821673f4c56485a09388dbdcb01056e76a7b5bf7f5f57417905560108054821673e0d6b68403d32dd659e452db880393df15fa00f2179055601180549091167270f3e1147c03a1bb0caf80035b7c362d3121191790555050623d09006006819055600755610184565b3390565b61225980620001946000396000f3fe6080604052600436106102075760003560e01c8063715018a611610118578063b5a71d14116100a0578063cbc7854e1161006f578063cbc7854e1461060c578063d344d49914610647578063daa22f7a1461067a578063e3412e3d146106ac578063f2fde38b146106d25761020e565b8063b5a71d141461055e578063ba0cb22b14610591578063c4056493146105c4578063cad29e9c146105f75761020e565b80638da5cb5b116100e75780638da5cb5b146104c25780638f818b90146104d75780639c8f9f23146104ec578063a4d7a6cc14610516578063ac86ea0c1461052b5761020e565b8063715018a6146104595780638b4cee081461046e5780638b95e335146104985780638c3b990b146104ad5761020e565b80633b252e151161019b57806347f958a71161016a57806347f958a7146103ca57806356aef98c146104055780635db214da1461041a578063673a7e281461042f5780636c4ea929146104445761020e565b80633b252e15146103325780633ba5d96d1461036d57806340490a901461038257806341976e09146103975761020e565b806321172e5d116101d757806321172e5d146102de578063289af0d8146102f35780633078fff514610308578063331637731461031d5761020e565b80629ebb10146102135780630cc835a31461023c57806316eb3814146102685780631ee60337146102ad5761020e565b3661020e57005b600080fd5b34801561021f57600080fd5b50610228610705565b604080519115158252519081900360200190f35b34801561024857600080fd5b506102666004803603602081101561025f57600080fd5b5035610715565b005b34801561027457600080fd5b5061029b6004803603602081101561028b57600080fd5b50356001600160a01b0316610783565b60408051918252519081900360200190f35b3480156102b957600080fd5b506102c261079e565b604080516001600160a01b039092168252519081900360200190f35b3480156102ea57600080fd5b506102c26107ad565b3480156102ff57600080fd5b5061029b6107bc565b34801561031457600080fd5b506102c26107c2565b34801561032957600080fd5b5061029b6107d1565b34801561033e57600080fd5b506102666004803603604081101561035557600080fd5b506001600160a01b03813581169160200135166107d7565b34801561037957600080fd5b506102c2610bd1565b34801561038e57600080fd5b5061029b610be0565b3480156103a357600080fd5b5061029b600480360360208110156103ba57600080fd5b50356001600160a01b0316610be5565b3480156103d657600080fd5b50610266600480360360408110156103ed57600080fd5b506001600160a01b0381358116916020013516610c00565b34801561041157600080fd5b5061029b610f71565b34801561042657600080fd5b506102c2610fa7565b34801561043b57600080fd5b50610266610fb6565b34801561045057600080fd5b5061029b6111c3565b34801561046557600080fd5b506102666111f5565b34801561047a57600080fd5b506102666004803603602081101561049157600080fd5b5035611297565b3480156104a457600080fd5b506102c2611304565b3480156104b957600080fd5b5061029b611313565b3480156104ce57600080fd5b506102c2611319565b3480156104e357600080fd5b5061029b611328565b3480156104f857600080fd5b506102666004803603602081101561050f57600080fd5b503561132e565b34801561052257600080fd5b5061029b611701565b34801561053757600080fd5b5061029b6004803603602081101561054e57600080fd5b50356001600160a01b0316611707565b34801561056a57600080fd5b5061029b6004803603602081101561058157600080fd5b50356001600160a01b0316611740565b34801561059d57600080fd5b5061029b600480360360208110156105b457600080fd5b50356001600160a01b0316611781565b3480156105d057600080fd5b5061029b600480360360208110156105e757600080fd5b50356001600160a01b031661179c565b34801561060357600080fd5b5061029b6117b7565b34801561061857600080fd5b506102666004803603604081101561062f57600080fd5b506001600160a01b03813581169160200135166117bd565b34801561065357600080fd5b5061029b6004803603602081101561066a57600080fd5b50356001600160a01b031661189d565b34801561068657600080fd5b506102666004803603604081101561069d57600080fd5b508035151590602001356118b8565b610266600480360360208110156106c257600080fd5b50356001600160a01b0316611a5d565b3480156106de57600080fd5b50610266600480360360208110156106f557600080fd5b50356001600160a01b0316611df2565b600054600160a01b900460ff1690565b61071d611eea565b6000546001600160a01b0390811691161461076d576040805162461bcd60e51b81526020600482018190526024820152600080516020612204833981519152604482015290519081900360640190fd5b633b9aca0081111561077e57600080fd5b600655565b6001600160a01b03166000908152600b602052604090205490565b6010546001600160a01b031681565b6011546001600160a01b031681565b60075490565b600e546001600160a01b031681565b60085490565b600054600160a01b900460ff1615156001146107f257600080fd5b600054600160a01b900460ff16151560011480156108845750600e5460408051632c84088960e11b815230600482015290516001600160a01b0390921691635908111291602480820192602092909190829003018186803b15801561085657600080fd5b505afa15801561086a573d6000803e3d6000fd5b505050506040513d602081101561088057600080fd5b5051155b1561089157610891610fb6565b604080516370a0823160e01b8152306004820152905183916000916001600160a01b038416916370a08231916024808301926020929190829003018186803b1580156108dc57600080fd5b505afa1580156108f0573d6000803e3d6000fd5b505050506040513d602081101561090657600080fd5b505190508061091457600080fd5b6001546001600160a01b038581169116148061093d57506002546001600160a01b038581169116145b61094657600080fd5b6001600160a01b03841660009081526004602052604081205461098a90670de0b6b3a76400009061097e90859063ffffffff611eee16565b9063ffffffff611f4e16565b60105460408051637c83ffd160e01b81523060048201526001600160a01b0389811660248301526044820185905291519394506000939190921691637c83ffd1916064808301926020929190829003018186803b1580156109ea57600080fd5b505afa1580156109fe573d6000803e3d6000fd5b505050506040513d6020811015610a1457600080fd5b505190506000610a44633b9aca0061097e610a35868663ffffffff611f9016565b6007549063ffffffff611eee16565b90506000610a6882610a5c868663ffffffff611f9016565b9063ffffffff611f9016565b6001600160a01b038916600090815260056020526040902054909150610a94908563ffffffff611f9016565b6001600160a01b0389166000908152600560205260409020558215610aca57600a54610ac6908463ffffffff611fd216565b600a555b610ad38261202c565b856001600160a01b03166342966c68866040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610b1957600080fd5b505af1158015610b2d573d6000803e3d6000fd5b50506040516001600160a01b038a16925083156108fc02915083906000818181858888f19350505050158015610b67573d6000803e3d6000fd5b50604080516001600160a01b03808a1682528a166020820152808201879052606081018390526080810184905260a0810185905290517fe540b6cc73989eeec2f777710efa155b6cc71a931d80862d5bf911c6109972c39181900360c00190a15050505050505050565b6001546001600160a01b031690565b600390565b6001600160a01b031660009081526004602052604090205490565b600054600160a01b900460ff161515600114610c1b57600080fd5b600054600160a01b900460ff1615156001148015610cad5750600e5460408051632c84088960e11b815230600482015290516001600160a01b0390921691635908111291602480820192602092909190829003018186803b158015610c7f57600080fd5b505afa158015610c93573d6000803e3d6000fd5b505050506040513d6020811015610ca957600080fd5b5051155b15610cba57610cba610fb6565b6000610cc46111c3565b905060008111610cd357600080fd5b6001546001600160a01b0384811691161480610cfc57506002546001600160a01b038481169116145b610d0557600080fd5b60008390506000610d29633b9aca0061097e60065486611eee90919063ffffffff16565b90506000610d3d848363ffffffff611f9016565b6010546040805163f8956a6760e01b81523060048201526001600160a01b038a81166024830152604482018590529151939450600093919092169163f8956a67916064808301926020929190829003018186803b158015610d9d57600080fd5b505afa158015610db1573d6000803e3d6000fd5b505050506040513d6020811015610dc757600080fd5b50516001600160a01b03881660009081526004602052604081205491925090610e129061097e670de0b6b3a7640000610e06878763ffffffff611fd216565b9063ffffffff611eee16565b6001600160a01b038916600090815260056020526040902054909150610e50908390610e44908663ffffffff611fd216565b9063ffffffff611fd216565b6001600160a01b0389166000908152600560205260409020558115610e8657600a54610e82908363ffffffff611f9016565b600a555b610e8f8461202c565b846001600160a01b03166340c10f1988836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015610eef57600080fd5b505af1158015610f03573d6000803e3d6000fd5b5050604080516001600160a01b03808c1682528c166020820152808201859052606081018a90526080810188905260a0810186905290517f73cfafc06c41aefbe585fd047208a7776b2334d2329decfb3d1b1f6ec8c3c41693509081900360c0019150a15050505050505050565b600154600090610fa290610f8d906001600160a01b0316611707565b600254610e44906001600160a01b0316611707565b905090565b6002546001600160a01b031690565b600054600160a01b900460ff161515600114610fd157600080fd5b610fd961219e565b600f546003546040805163416bd10760e11b815230600482015260248101929092525160009283926001600160a01b03909116916382d7a20e9160448082019261010092909190829003018186803b15801561103457600080fd5b505afa158015611048573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061010081101561106e57600080fd5b5060c081015160e082015191945092509050600181151514156111055782516020808501516040808701516060880151608089015160a08a01516001546001600160a01b03908116600081815260048a52878120600254909316808252888220838352600c8c528983208284528a84209484526005909c528983209183529890912060038e90559390935592909155919055935555555b6001546001600160a01b0390811660008181526004602090815260408083205460025490951680845281842054858552600c8452828520548286528386205496865260058552838620549286529483902054600354845198895294880191909152868301949094526060860194909452608085019390935260a084019190915260c083015282151560e0830152517fe7d4328bcca588827789f132837dde7289420fb8512d5c0a706059194fe1dfd1918190036101000190a1505050565b6000610fa26111e86111d3610f71565b600a54600954610e449163ffffffff611fd216565b479063ffffffff611f9016565b6111fd611eea565b6000546001600160a01b0390811691161461124d576040805162461bcd60e51b81526020600482018190526024820152600080516020612204833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b61129f611eea565b6000546001600160a01b039081169116146112ef576040805162461bcd60e51b81526020600482018190526024820152600080516020612204833981519152604482015290519081900360640190fd5b629896808111156112ff57600080fd5b600755565b600f546001600160a01b031681565b60035490565b6000546001600160a01b031690565b60065490565b600054600160a01b900460ff16151560011480156113c05750600e5460408051632c84088960e11b815230600482015290516001600160a01b0390921691635908111291602480820192602092909190829003018186803b15801561139257600080fd5b505afa1580156113a6573d6000803e3d6000fd5b505050506040513d60208110156113bc57600080fd5b5051155b156113cd576113cd610fb6565b336000908152600d60205260409020548111156113e957600080fd5b60105460408051639486909f60e01b815230600482015260248101849052905160009283928392839283926001600160a01b0390911691639486909f9160448082019260a092909190829003018186803b15801561144657600080fd5b505afa15801561145a573d6000803e3d6000fd5b505050506040513d60a081101561147057600080fd5b5080516020808301516040808501516060860151608090960151601054835163b9c7840b60e01b81523060048201529351969c50939a509098509496509394506000936001600160a01b039091169263b9c7840b92602480840193919291829003018186803b1580156114e257600080fd5b505afa1580156114f6573d6000803e3d6000fd5b505050506040513d602081101561150c57600080fd5b50519050600061152683610e44898963ffffffff611fd216565b6001546001600160a01b03166000908152600c6020526040902054909150611554908863ffffffff611f9016565b6001546001600160a01b039081166000908152600c6020526040808220939093556002549091168152205461158f908763ffffffff611f9016565b6002546001600160a01b039081166000908152600c60209081526040808320949094556001549092168152600b90915220546115d1908663ffffffff611f9016565b6001546001600160a01b039081166000908152600b6020526040808220939093556002549091168152205461160c908563ffffffff611f9016565b6002546001600160a01b03166000908152600b6020908152604080832093909355338252600d90522054611646908963ffffffff611f9016565b336000908152600d6020526040902055600854611669908963ffffffff611f9016565b60085560095461167f908463ffffffff611f9016565b600955604051339082156108fc029083906000818181858888f193505050501580156116af573d6000803e3d6000fd5b5060408051338152602081018390528082018a90526060810184905290517f11c75623de2058a663854f734fb8083a261970290f564abc9aa2ac01bfcbe81f9181900360800190a15050505050505050565b60095490565b6001600160a01b0381166000908152600c6020908152604080832054600590925282205461173a9163ffffffff611fd216565b92915050565b6001600160a01b038116600090815260046020908152604080832054600b90925282205461173a91670de0b6b3a76400009161097e9163ffffffff611eee16565b6001600160a01b03166000908152600d602052604090205490565b6001600160a01b03166000908152600c602052604090205490565b600a5490565b6117c5611eea565b6000546001600160a01b03908116911614611815576040805162461bcd60e51b81526020600482018190526024820152600080516020612204833981519152604482015290519081900360640190fd5b6002546001600160a01b0316158061183657506001546001600160a01b0316155b61183f57600080fd5b600280546001600160a01b03199081166001600160a01b03948516179182905560018054909116928416929092179182905590821660009081526004602052604080822092909316815291909120662386f26fc10000908190559055565b6001600160a01b031660009081526005602052604090205490565b6118c0611eea565b6000546001600160a01b03908116911614611910576040805162461bcd60e51b81526020600482018190526024820152600080516020612204833981519152604482015290519081900360640190fd5b6000805460ff60a01b1916600160a01b8415150217905580611a5957600e5460035460408051631760164960e31b81523060048201526024810192909252516001600160a01b039092169163bb00b24891604480820192600092909190829003018186803b15801561198157600080fd5b505afa158015611995573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160409081528110156119be57600080fd5b81019080805160405193929190846401000000008211156119de57600080fd5b9083019060208201858111156119f357600080fd5b8251866020820283011164010000000082111715611a1057600080fd5b82525081516020918201928201910280838360005b83811015611a3d578181015183820152602001611a25565b5050505091909101604052506020015160035550611a59915050565b5050565b600054600160a01b900460ff1615156001148015611aef5750600e5460408051632c84088960e11b815230600482015290516001600160a01b0390921691635908111291602480820192602092909190829003018186803b158015611ac157600080fd5b505afa158015611ad5573d6000803e3d6000fd5b505050506040513d6020811015611aeb57600080fd5b5051155b15611afc57611afc610fb6565b6000611b066111c3565b60105460408051630bdc478960e01b81523060048201526024810184905290519293506000928392839283926001600160a01b0390921691630bdc478991604480820192608092909190829003018186803b158015611b6457600080fd5b505afa158015611b78573d6000803e3d6000fd5b505050506040513d6080811015611b8e57600080fd5b508051602080830151604080850151606090950151601054825163b9c7840b60e01b81523060048201529251959a509298509496509394506000936001600160a01b039091169263b9c7840b92602480840193919291829003018186803b158015611bf857600080fd5b505afa158015611c0c573d6000803e3d6000fd5b505050506040513d6020811015611c2257600080fd5b505190506000611c448261097e89670de0b6b3a764000063ffffffff611eee16565b6001546001600160a01b03166000908152600c6020526040902054909150611c72908763ffffffff611fd216565b6001546001600160a01b039081166000908152600c60205260408082209390935560025490911681522054611cad908663ffffffff611fd216565b6002546001600160a01b039081166000908152600c60209081526040808320949094556001549092168152600b9091522054611cef908563ffffffff611fd216565b6001546001600160a01b039081166000908152600b60205260408082209390935560025490911681522054611d2a908463ffffffff611fd216565b6002546001600160a01b039081166000908152600b6020908152604080832094909455918b168152600d9091522054611d69908263ffffffff611fd216565b6001600160a01b0389166000908152600d6020526040902055600854611d95908263ffffffff611fd216565b600855604080516001600160a01b038a168152602081018990528082018390526060810184905290517fe1d1934c742278e3794231612340f57d39d41877f0106ef92422f2f86ce07bf49181900360800190a15050505050505050565b611dfa611eea565b6000546001600160a01b03908116911614611e4a576040805162461bcd60e51b81526020600482018190526024820152600080516020612204833981519152604482015290519081900360640190fd5b6001600160a01b038116611e8f5760405162461bcd60e51b81526004018080602001828103825260268152602001806121bd6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b600082611efd5750600061173a565b82820282848281611f0a57fe5b0414611f475760405162461bcd60e51b81526004018080602001828103825260218152602001806121e36021913960400191505060405180910390fd5b9392505050565b6000611f4783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120a2565b6000611f4783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612144565b600082820183811015611f47576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6011546001600160a01b03166108fc61204c83600263ffffffff611f4e16565b6040518115909202916000818181858888f19350505050158015612074573d6000803e3d6000fd5b5061209661208982600263ffffffff611f4e16565b829063ffffffff611f9016565b60098054909101905550565b6000818361212e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156120f35781810151838201526020016120db565b50505050905090810190601f1680156121205780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161213a57fe5b0495945050505050565b600081848411156121965760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156120f35781810151838201526020016120db565b505050900390565b6040518060c00160405280600690602082028036833750919291505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220fb60cc37e50db57b971c82f504c47f2b825744041c647692b8ff7f2e5b92b05b64736f6c63430006060033
Deployed Bytecode
0x6080604052600436106102075760003560e01c8063715018a611610118578063b5a71d14116100a0578063cbc7854e1161006f578063cbc7854e1461060c578063d344d49914610647578063daa22f7a1461067a578063e3412e3d146106ac578063f2fde38b146106d25761020e565b8063b5a71d141461055e578063ba0cb22b14610591578063c4056493146105c4578063cad29e9c146105f75761020e565b80638da5cb5b116100e75780638da5cb5b146104c25780638f818b90146104d75780639c8f9f23146104ec578063a4d7a6cc14610516578063ac86ea0c1461052b5761020e565b8063715018a6146104595780638b4cee081461046e5780638b95e335146104985780638c3b990b146104ad5761020e565b80633b252e151161019b57806347f958a71161016a57806347f958a7146103ca57806356aef98c146104055780635db214da1461041a578063673a7e281461042f5780636c4ea929146104445761020e565b80633b252e15146103325780633ba5d96d1461036d57806340490a901461038257806341976e09146103975761020e565b806321172e5d116101d757806321172e5d146102de578063289af0d8146102f35780633078fff514610308578063331637731461031d5761020e565b80629ebb10146102135780630cc835a31461023c57806316eb3814146102685780631ee60337146102ad5761020e565b3661020e57005b600080fd5b34801561021f57600080fd5b50610228610705565b604080519115158252519081900360200190f35b34801561024857600080fd5b506102666004803603602081101561025f57600080fd5b5035610715565b005b34801561027457600080fd5b5061029b6004803603602081101561028b57600080fd5b50356001600160a01b0316610783565b60408051918252519081900360200190f35b3480156102b957600080fd5b506102c261079e565b604080516001600160a01b039092168252519081900360200190f35b3480156102ea57600080fd5b506102c26107ad565b3480156102ff57600080fd5b5061029b6107bc565b34801561031457600080fd5b506102c26107c2565b34801561032957600080fd5b5061029b6107d1565b34801561033e57600080fd5b506102666004803603604081101561035557600080fd5b506001600160a01b03813581169160200135166107d7565b34801561037957600080fd5b506102c2610bd1565b34801561038e57600080fd5b5061029b610be0565b3480156103a357600080fd5b5061029b600480360360208110156103ba57600080fd5b50356001600160a01b0316610be5565b3480156103d657600080fd5b50610266600480360360408110156103ed57600080fd5b506001600160a01b0381358116916020013516610c00565b34801561041157600080fd5b5061029b610f71565b34801561042657600080fd5b506102c2610fa7565b34801561043b57600080fd5b50610266610fb6565b34801561045057600080fd5b5061029b6111c3565b34801561046557600080fd5b506102666111f5565b34801561047a57600080fd5b506102666004803603602081101561049157600080fd5b5035611297565b3480156104a457600080fd5b506102c2611304565b3480156104b957600080fd5b5061029b611313565b3480156104ce57600080fd5b506102c2611319565b3480156104e357600080fd5b5061029b611328565b3480156104f857600080fd5b506102666004803603602081101561050f57600080fd5b503561132e565b34801561052257600080fd5b5061029b611701565b34801561053757600080fd5b5061029b6004803603602081101561054e57600080fd5b50356001600160a01b0316611707565b34801561056a57600080fd5b5061029b6004803603602081101561058157600080fd5b50356001600160a01b0316611740565b34801561059d57600080fd5b5061029b600480360360208110156105b457600080fd5b50356001600160a01b0316611781565b3480156105d057600080fd5b5061029b600480360360208110156105e757600080fd5b50356001600160a01b031661179c565b34801561060357600080fd5b5061029b6117b7565b34801561061857600080fd5b506102666004803603604081101561062f57600080fd5b506001600160a01b03813581169160200135166117bd565b34801561065357600080fd5b5061029b6004803603602081101561066a57600080fd5b50356001600160a01b031661189d565b34801561068657600080fd5b506102666004803603604081101561069d57600080fd5b508035151590602001356118b8565b610266600480360360208110156106c257600080fd5b50356001600160a01b0316611a5d565b3480156106de57600080fd5b50610266600480360360208110156106f557600080fd5b50356001600160a01b0316611df2565b600054600160a01b900460ff1690565b61071d611eea565b6000546001600160a01b0390811691161461076d576040805162461bcd60e51b81526020600482018190526024820152600080516020612204833981519152604482015290519081900360640190fd5b633b9aca0081111561077e57600080fd5b600655565b6001600160a01b03166000908152600b602052604090205490565b6010546001600160a01b031681565b6011546001600160a01b031681565b60075490565b600e546001600160a01b031681565b60085490565b600054600160a01b900460ff1615156001146107f257600080fd5b600054600160a01b900460ff16151560011480156108845750600e5460408051632c84088960e11b815230600482015290516001600160a01b0390921691635908111291602480820192602092909190829003018186803b15801561085657600080fd5b505afa15801561086a573d6000803e3d6000fd5b505050506040513d602081101561088057600080fd5b5051155b1561089157610891610fb6565b604080516370a0823160e01b8152306004820152905183916000916001600160a01b038416916370a08231916024808301926020929190829003018186803b1580156108dc57600080fd5b505afa1580156108f0573d6000803e3d6000fd5b505050506040513d602081101561090657600080fd5b505190508061091457600080fd5b6001546001600160a01b038581169116148061093d57506002546001600160a01b038581169116145b61094657600080fd5b6001600160a01b03841660009081526004602052604081205461098a90670de0b6b3a76400009061097e90859063ffffffff611eee16565b9063ffffffff611f4e16565b60105460408051637c83ffd160e01b81523060048201526001600160a01b0389811660248301526044820185905291519394506000939190921691637c83ffd1916064808301926020929190829003018186803b1580156109ea57600080fd5b505afa1580156109fe573d6000803e3d6000fd5b505050506040513d6020811015610a1457600080fd5b505190506000610a44633b9aca0061097e610a35868663ffffffff611f9016565b6007549063ffffffff611eee16565b90506000610a6882610a5c868663ffffffff611f9016565b9063ffffffff611f9016565b6001600160a01b038916600090815260056020526040902054909150610a94908563ffffffff611f9016565b6001600160a01b0389166000908152600560205260409020558215610aca57600a54610ac6908463ffffffff611fd216565b600a555b610ad38261202c565b856001600160a01b03166342966c68866040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610b1957600080fd5b505af1158015610b2d573d6000803e3d6000fd5b50506040516001600160a01b038a16925083156108fc02915083906000818181858888f19350505050158015610b67573d6000803e3d6000fd5b50604080516001600160a01b03808a1682528a166020820152808201879052606081018390526080810184905260a0810185905290517fe540b6cc73989eeec2f777710efa155b6cc71a931d80862d5bf911c6109972c39181900360c00190a15050505050505050565b6001546001600160a01b031690565b600390565b6001600160a01b031660009081526004602052604090205490565b600054600160a01b900460ff161515600114610c1b57600080fd5b600054600160a01b900460ff1615156001148015610cad5750600e5460408051632c84088960e11b815230600482015290516001600160a01b0390921691635908111291602480820192602092909190829003018186803b158015610c7f57600080fd5b505afa158015610c93573d6000803e3d6000fd5b505050506040513d6020811015610ca957600080fd5b5051155b15610cba57610cba610fb6565b6000610cc46111c3565b905060008111610cd357600080fd5b6001546001600160a01b0384811691161480610cfc57506002546001600160a01b038481169116145b610d0557600080fd5b60008390506000610d29633b9aca0061097e60065486611eee90919063ffffffff16565b90506000610d3d848363ffffffff611f9016565b6010546040805163f8956a6760e01b81523060048201526001600160a01b038a81166024830152604482018590529151939450600093919092169163f8956a67916064808301926020929190829003018186803b158015610d9d57600080fd5b505afa158015610db1573d6000803e3d6000fd5b505050506040513d6020811015610dc757600080fd5b50516001600160a01b03881660009081526004602052604081205491925090610e129061097e670de0b6b3a7640000610e06878763ffffffff611fd216565b9063ffffffff611eee16565b6001600160a01b038916600090815260056020526040902054909150610e50908390610e44908663ffffffff611fd216565b9063ffffffff611fd216565b6001600160a01b0389166000908152600560205260409020558115610e8657600a54610e82908363ffffffff611f9016565b600a555b610e8f8461202c565b846001600160a01b03166340c10f1988836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015610eef57600080fd5b505af1158015610f03573d6000803e3d6000fd5b5050604080516001600160a01b03808c1682528c166020820152808201859052606081018a90526080810188905260a0810186905290517f73cfafc06c41aefbe585fd047208a7776b2334d2329decfb3d1b1f6ec8c3c41693509081900360c0019150a15050505050505050565b600154600090610fa290610f8d906001600160a01b0316611707565b600254610e44906001600160a01b0316611707565b905090565b6002546001600160a01b031690565b600054600160a01b900460ff161515600114610fd157600080fd5b610fd961219e565b600f546003546040805163416bd10760e11b815230600482015260248101929092525160009283926001600160a01b03909116916382d7a20e9160448082019261010092909190829003018186803b15801561103457600080fd5b505afa158015611048573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061010081101561106e57600080fd5b5060c081015160e082015191945092509050600181151514156111055782516020808501516040808701516060880151608089015160a08a01516001546001600160a01b03908116600081815260048a52878120600254909316808252888220838352600c8c528983208284528a84209484526005909c528983209183529890912060038e90559390935592909155919055935555555b6001546001600160a01b0390811660008181526004602090815260408083205460025490951680845281842054858552600c8452828520548286528386205496865260058552838620549286529483902054600354845198895294880191909152868301949094526060860194909452608085019390935260a084019190915260c083015282151560e0830152517fe7d4328bcca588827789f132837dde7289420fb8512d5c0a706059194fe1dfd1918190036101000190a1505050565b6000610fa26111e86111d3610f71565b600a54600954610e449163ffffffff611fd216565b479063ffffffff611f9016565b6111fd611eea565b6000546001600160a01b0390811691161461124d576040805162461bcd60e51b81526020600482018190526024820152600080516020612204833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b61129f611eea565b6000546001600160a01b039081169116146112ef576040805162461bcd60e51b81526020600482018190526024820152600080516020612204833981519152604482015290519081900360640190fd5b629896808111156112ff57600080fd5b600755565b600f546001600160a01b031681565b60035490565b6000546001600160a01b031690565b60065490565b600054600160a01b900460ff16151560011480156113c05750600e5460408051632c84088960e11b815230600482015290516001600160a01b0390921691635908111291602480820192602092909190829003018186803b15801561139257600080fd5b505afa1580156113a6573d6000803e3d6000fd5b505050506040513d60208110156113bc57600080fd5b5051155b156113cd576113cd610fb6565b336000908152600d60205260409020548111156113e957600080fd5b60105460408051639486909f60e01b815230600482015260248101849052905160009283928392839283926001600160a01b0390911691639486909f9160448082019260a092909190829003018186803b15801561144657600080fd5b505afa15801561145a573d6000803e3d6000fd5b505050506040513d60a081101561147057600080fd5b5080516020808301516040808501516060860151608090960151601054835163b9c7840b60e01b81523060048201529351969c50939a509098509496509394506000936001600160a01b039091169263b9c7840b92602480840193919291829003018186803b1580156114e257600080fd5b505afa1580156114f6573d6000803e3d6000fd5b505050506040513d602081101561150c57600080fd5b50519050600061152683610e44898963ffffffff611fd216565b6001546001600160a01b03166000908152600c6020526040902054909150611554908863ffffffff611f9016565b6001546001600160a01b039081166000908152600c6020526040808220939093556002549091168152205461158f908763ffffffff611f9016565b6002546001600160a01b039081166000908152600c60209081526040808320949094556001549092168152600b90915220546115d1908663ffffffff611f9016565b6001546001600160a01b039081166000908152600b6020526040808220939093556002549091168152205461160c908563ffffffff611f9016565b6002546001600160a01b03166000908152600b6020908152604080832093909355338252600d90522054611646908963ffffffff611f9016565b336000908152600d6020526040902055600854611669908963ffffffff611f9016565b60085560095461167f908463ffffffff611f9016565b600955604051339082156108fc029083906000818181858888f193505050501580156116af573d6000803e3d6000fd5b5060408051338152602081018390528082018a90526060810184905290517f11c75623de2058a663854f734fb8083a261970290f564abc9aa2ac01bfcbe81f9181900360800190a15050505050505050565b60095490565b6001600160a01b0381166000908152600c6020908152604080832054600590925282205461173a9163ffffffff611fd216565b92915050565b6001600160a01b038116600090815260046020908152604080832054600b90925282205461173a91670de0b6b3a76400009161097e9163ffffffff611eee16565b6001600160a01b03166000908152600d602052604090205490565b6001600160a01b03166000908152600c602052604090205490565b600a5490565b6117c5611eea565b6000546001600160a01b03908116911614611815576040805162461bcd60e51b81526020600482018190526024820152600080516020612204833981519152604482015290519081900360640190fd5b6002546001600160a01b0316158061183657506001546001600160a01b0316155b61183f57600080fd5b600280546001600160a01b03199081166001600160a01b03948516179182905560018054909116928416929092179182905590821660009081526004602052604080822092909316815291909120662386f26fc10000908190559055565b6001600160a01b031660009081526005602052604090205490565b6118c0611eea565b6000546001600160a01b03908116911614611910576040805162461bcd60e51b81526020600482018190526024820152600080516020612204833981519152604482015290519081900360640190fd5b6000805460ff60a01b1916600160a01b8415150217905580611a5957600e5460035460408051631760164960e31b81523060048201526024810192909252516001600160a01b039092169163bb00b24891604480820192600092909190829003018186803b15801561198157600080fd5b505afa158015611995573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160409081528110156119be57600080fd5b81019080805160405193929190846401000000008211156119de57600080fd5b9083019060208201858111156119f357600080fd5b8251866020820283011164010000000082111715611a1057600080fd5b82525081516020918201928201910280838360005b83811015611a3d578181015183820152602001611a25565b5050505091909101604052506020015160035550611a59915050565b5050565b600054600160a01b900460ff1615156001148015611aef5750600e5460408051632c84088960e11b815230600482015290516001600160a01b0390921691635908111291602480820192602092909190829003018186803b158015611ac157600080fd5b505afa158015611ad5573d6000803e3d6000fd5b505050506040513d6020811015611aeb57600080fd5b5051155b15611afc57611afc610fb6565b6000611b066111c3565b60105460408051630bdc478960e01b81523060048201526024810184905290519293506000928392839283926001600160a01b0390921691630bdc478991604480820192608092909190829003018186803b158015611b6457600080fd5b505afa158015611b78573d6000803e3d6000fd5b505050506040513d6080811015611b8e57600080fd5b508051602080830151604080850151606090950151601054825163b9c7840b60e01b81523060048201529251959a509298509496509394506000936001600160a01b039091169263b9c7840b92602480840193919291829003018186803b158015611bf857600080fd5b505afa158015611c0c573d6000803e3d6000fd5b505050506040513d6020811015611c2257600080fd5b505190506000611c448261097e89670de0b6b3a764000063ffffffff611eee16565b6001546001600160a01b03166000908152600c6020526040902054909150611c72908763ffffffff611fd216565b6001546001600160a01b039081166000908152600c60205260408082209390935560025490911681522054611cad908663ffffffff611fd216565b6002546001600160a01b039081166000908152600c60209081526040808320949094556001549092168152600b9091522054611cef908563ffffffff611fd216565b6001546001600160a01b039081166000908152600b60205260408082209390935560025490911681522054611d2a908463ffffffff611fd216565b6002546001600160a01b039081166000908152600b6020908152604080832094909455918b168152600d9091522054611d69908263ffffffff611fd216565b6001600160a01b0389166000908152600d6020526040902055600854611d95908263ffffffff611fd216565b600855604080516001600160a01b038a168152602081018990528082018390526060810184905290517fe1d1934c742278e3794231612340f57d39d41877f0106ef92422f2f86ce07bf49181900360800190a15050505050505050565b611dfa611eea565b6000546001600160a01b03908116911614611e4a576040805162461bcd60e51b81526020600482018190526024820152600080516020612204833981519152604482015290519081900360640190fd5b6001600160a01b038116611e8f5760405162461bcd60e51b81526004018080602001828103825260268152602001806121bd6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b600082611efd5750600061173a565b82820282848281611f0a57fe5b0414611f475760405162461bcd60e51b81526004018080602001828103825260218152602001806121e36021913960400191505060405180910390fd5b9392505050565b6000611f4783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120a2565b6000611f4783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612144565b600082820183811015611f47576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6011546001600160a01b03166108fc61204c83600263ffffffff611f4e16565b6040518115909202916000818181858888f19350505050158015612074573d6000803e3d6000fd5b5061209661208982600263ffffffff611f4e16565b829063ffffffff611f9016565b60098054909101905550565b6000818361212e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156120f35781810151838201526020016120db565b50505050905090810190601f1680156121205780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161213a57fe5b0495945050505050565b600081848411156121965760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156120f35781810151838201526020016120db565b505050900390565b6040518060c00160405280600690602082028036833750919291505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220fb60cc37e50db57b971c82f504c47f2b825744041c647692b8ff7f2e5b92b05b64736f6c63430006060033
Deployed Bytecode Sourcemap
388:12310:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;9858:64:5;;5:9:-1;2:2;;;27:1;24;17:12;2:2;9858:64:5;;;:::i;:::-;;;;;;;;;;;;;;;;;;12429:110;;5:9:-1;2:2;;;27:1;24;17:12;2:2;12429:110:5;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;12429:110:5;;:::i;:::-;;10791:93;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10791:93:5;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;10791:93:5;-1:-1:-1;;;;;10791:93:5;;:::i;:::-;;;;;;;;;;;;;;;;2811:39;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2811:39:5;;;:::i;:::-;;;;-1:-1:-1;;;;;2811:39:5;;;;;;;;;;;;;;2854:38;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2854:38:5;;;:::i;10477:69::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10477:69:5;;;:::i;2708:48::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2708:48:5;;;:::i;10549:83::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10549:83:5;;;:::i;4825:791::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4825:791:5;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;4825:791:5;;;;;;;;;;:::i;10003:68::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10003:68:5;;;:::i;9925:75::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;9925:75:5;;;:::i;10229:85::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10229:85:5;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;10229:85:5;-1:-1:-1;;;;;10229:85:5;;:::i;3587:712::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3587:712:5;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;3587:712:5;;;;;;;;;;:::i;11086:120::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;11086:120:5;;;:::i;10074:68::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10074:68:5;;;:::i;8617:790::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;8617:790:5;;;:::i;11474:151::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;11474:151:5;;;:::i;922:145:2:-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;922:145:2;;;:::i;12583:112:5:-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;12583:112:5;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;12583:112:5;;:::i;2760:47::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2760:47:5;;;:::i;10145:81::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10145:81:5;;;:::i;717:77:2:-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;717:77:2;;;:::i;10407:67:5:-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10407:67:5;;;:::i;7375:948::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7375:948:5;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;7375:948:5;;:::i;10635:69::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10635:69:5;;;:::i;11210:122::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;11210:122:5;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;11210:122:5;-1:-1:-1;;;;;11210:122:5;;:::i;11335:136::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;11335:136:5;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;11335:136:5;-1:-1:-1;;;;;11335:136:5;;:::i;10983:99::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10983:99:5;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;10983:99:5;-1:-1:-1;;;;;10983:99:5;;:::i;10887:93::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10887:93:5;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;10887:93:5;-1:-1:-1;;;;;10887:93:5;;:::i;10707:81::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10707:81:5;;;:::i;11860:273::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;11860:273:5;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;11860:273:5;;;;;;;;;;:::i;10317:87::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10317:87:5;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;10317:87:5;-1:-1:-1;;;;;10317:87:5;;:::i;12136:257::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;12136:257:5;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;12136:257:5;;;;;;;;;:::i;6101:849::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;6101:849:5;-1:-1:-1;;;;;6101:849:5;;:::i;1073:240:2:-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1073:240:2;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1073:240:2;-1:-1:-1;;;;;1073:240:2;;:::i;9858:64:5:-;9899:4;9913:6;-1:-1:-1;;;9913:6:5;;;;;9858:64::o;12429:110::-;849:12:2;:10;:12::i;:::-;839:6;;-1:-1:-1;;;;;839:6:2;;;:22;;;831:67;;;;;-1:-1:-1;;;831:67:2;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;831:67:2;;;;;;;;;;;;;;;12507:5:5::1;12497:6;:15;;12489:24;;12:1:-1;9::::0;2:12:::1;12489:24:5;12519:6;:15:::0;12429:110::o;10791:93::-;-1:-1:-1;;;;;10865:16:5;10848:7;10865:16;;;:9;:16;;;;;;;10791:93::o;2811:39::-;;;-1:-1:-1;;;;;2811:39:5;;:::o;2854:38::-;;;-1:-1:-1;;;;;2854:38:5;;:::o;10477:69::-;10536:7;;10477:69;:::o;2708:48::-;;;-1:-1:-1;;;;;2708:48:5;;:::o;10549:83::-;10615:14;;10549:83;:::o;4825:791::-;1832:6;;-1:-1:-1;;;1832:6:5;;;;:14;;1842:4;1832:14;1824:23;;12:1:-1;9;2:12;1824:23:5;1856:6;;-1:-1:-1;;;1856:6:5;;;;:14;;1866:4;1856:14;:62;;;;-1:-1:-1;1875:15:5;;:43;;;-1:-1:-1;;;1875:43:5;;1912:4;1875:43;;;;;;-1:-1:-1;;;;;1875:15:5;;;;:28;;:43;;;;;;;;;;;;;;;:15;:43;;;2:2:-1;;;;27:1;24;17:12;2:2;1875:43:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1875:43:5;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1875:43:5;1874:44;1856:62;1853:95;;;1928:13;:11;:13::i;:::-;4980:29:::1;::::0;;-1:-1:-1;;;4980:29:5;;5003:4:::1;4980:29;::::0;::::1;::::0;;;4945:5;;4924:11:::1;::::0;-1:-1:-1;;;;;4980:14:5;::::1;::::0;::::1;::::0;:29;;;;;::::1;::::0;;;;;;;;:14;:29;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;4980:29:5;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;4980:29:5;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;4980:29:5;;-1:-1:-1;5023:16:5;5015:25:::1;;12:1:-1;9::::0;2:12:::1;5015:25:5;5063:4;::::0;-1:-1:-1;;;;;5054:13:5;;::::1;5063:4:::0;::::1;5054:13;::::0;:30:::1;;-1:-1:-1::0;5080:4:5::1;::::0;-1:-1:-1;;;;;5071:13:5;;::::1;5080:4:::0;::::1;5071:13;5054:30;5046:39;;12:1:-1;9::::0;2:12:::1;5046:39:5;-1:-1:-1::0;;;;;5126:12:5;::::1;5091:15;5126:12:::0;;;:5:::1;:12;::::0;;;;;5109:42:::1;::::0;5144:6:::1;::::0;5109:30:::1;::::0;:12;;:30:::1;:16;:30;:::i;:::-;:34:::0;:42:::1;:34;:42;:::i;:::-;5175:11;::::0;:53:::1;::::0;;-1:-1:-1;;;5175:53:5;;5206:4:::1;5175:53;::::0;::::1;::::0;-1:-1:-1;;;;;5175:53:5;;::::1;::::0;;;;;;;;;;;;5091:60;;-1:-1:-1;5157:15:5::1;::::0;5175:11;;;::::1;::::0;:22:::1;::::0;:53;;;;;::::1;::::0;;;;;;;;:11;:53;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;5175:53:5;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;5175:53:5;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;5175:53:5;;-1:-1:-1;5234:12:5::1;5249:44;5287:5;5249:33;5261:20;:7:::0;5175:53;5261:20:::1;:11;:20;:::i;:::-;5249:7;::::0;;:33:::1;:11;:33;:::i;:44::-;5234:59:::0;-1:-1:-1;5299:14:5::1;5316:30;5234:59:::0;5316:20:::1;:7:::0;5328;5316:20:::1;:11;:20;:::i;:::-;:24:::0;:30:::1;:24;:30;:::i;:::-;-1:-1:-1::0;;;;;5368:13:5;::::1;;::::0;;;:6:::1;:13;::::0;;;;;5299:47;;-1:-1:-1;5368:26:5::1;::::0;5386:7;5368:26:::1;:17;:26;:::i;:::-;-1:-1:-1::0;;;;;5352:13:5;::::1;;::::0;;;:6:::1;:13;::::0;;;;:42;5403:12;;5400:59:::1;;5433:13;::::0;:26:::1;::::0;5451:7;5433:26:::1;:17;:26;:::i;:::-;5417:13;:42:::0;5400:59:::1;5465:13;5473:4;5465:7;:13::i;:::-;5484:4;-1:-1:-1::0;;;;;5484:9:5::1;;5494:12;5484:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;5484:23:5;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;-1:-1:::0;;5513:24:5::1;::::0;-1:-1:-1;;;;;5513:16:5;::::1;::::0;-1:-1:-1;5513:24:5;::::1;;;::::0;-1:-1:-1;5530:6:5;;5513:24:::1;::::0;;;5530:6;5513:16;:24;::::1;;;;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;-1:-1:::0;5549:62:5::1;::::0;;-1:-1:-1;;;;;5549:62:5;;::::1;::::0;;;::::1;;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;;;;;;::::1;::::0;;;;;;;::::1;1953:1;;;;;;4825:791:::0;;:::o;10003:68::-;10064:4;;-1:-1:-1;;;;;10064:4:5;10003:68;:::o;9925:75::-;2235:1;9925:75;:::o;10229:85::-;-1:-1:-1;;;;;10299:12:5;10282:7;10299:12;;;:5;:12;;;;;;;10229:85::o;3587:712::-;1832:6;;-1:-1:-1;;;1832:6:5;;;;:14;;1842:4;1832:14;1824:23;;12:1:-1;9;2:12;1824:23:5;1856:6;;-1:-1:-1;;;1856:6:5;;;;:14;;1866:4;1856:14;:62;;;;-1:-1:-1;1875:15:5;;:43;;;-1:-1:-1;;;1875:43:5;;1912:4;1875:43;;;;;;-1:-1:-1;;;;;1875:15:5;;;;:28;;:43;;;;;;;;;;;;;;;:15;:43;;;2:2:-1;;;;27:1;24;17:12;2:2;1875:43:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1875:43:5;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1875:43:5;1874:44;1856:62;1853:95;;;1928:13;:11;:13::i;:::-;3677::::1;3693:18;:16;:18::i;:::-;3677:34;;3733:1;3725:5;:9;3717:18;;12:1:-1;9::::0;2:12:::1;3717:18:5;3758:4;::::0;-1:-1:-1;;;;;3749:13:5;;::::1;3758:4:::0;::::1;3749:13;::::0;:30:::1;;-1:-1:-1::0;3775:4:5::1;::::0;-1:-1:-1;;;;;3766:13:5;;::::1;3775:4:::0;::::1;3766:13;3749:30;3741:39;;12:1:-1;9::::0;2:12:::1;3741:39:5;3786:11;3807:5;3786:27;;3819:12;3834:28;3856:5;3834:17;3844:6;;3834:5;:9;;:17;;;;:::i;:28::-;3819:43:::0;-1:-1:-1;3868:14:5::1;3885:15;:5:::0;3819:43;3885:15:::1;:9;:15;:::i;:::-;3922:11;::::0;:50:::1;::::0;;-1:-1:-1;;;3922:50:5;;3951:4:::1;3922:50;::::0;::::1;::::0;-1:-1:-1;;;;;3922:50:5;;::::1;::::0;;;;;;;;;;;;3868:32;;-1:-1:-1;3906:13:5::1;::::0;3922:11;;;::::1;::::0;:20:::1;::::0;:50;;;;;::::1;::::0;;;;;;;;:11;:50;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;3922:50:5;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;3922:50:5;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;3922:50:5;-1:-1:-1;;;;;4035:12:5;::::1;3978:20;4035:12:::0;;;:5:::1;3922:50;4035:12:::0;;;;;3922:50;;-1:-1:-1;3978:20:5;4001:47:::1;::::0;:29:::1;4023:6;4001:17;:6:::0;3922:50;4001:17:::1;:10;:17;:::i;:::-;:21:::0;:29:::1;:21;:29;:::i;:47::-;-1:-1:-1::0;;;;;4070:13:5;::::1;;::::0;;;:6:::1;:13;::::0;;;;;3978:70;;-1:-1:-1;4070:36:5::1;::::0;4100:5;;4070:25:::1;::::0;4088:6;4070:25:::1;:17;:25;:::i;:::-;:29:::0;:36:::1;:29;:36;:::i;:::-;-1:-1:-1::0;;;;;4054:13:5;::::1;;::::0;;;:6:::1;:13;::::0;;;;:52;4115:10;;4112:55:::1;;4143:13;::::0;:24:::1;::::0;4161:5;4143:24:::1;:17;:24;:::i;:::-;4127:13;:40:::0;4112:55:::1;4173:13;4181:4;4173:7;:13::i;:::-;4192:4;-1:-1:-1::0;;;;;4192:9:5::1;;4202:7;4211:12;4192:32;;;;;;;;;;;;;-1:-1:-1::0;;;;;4192:32:5::1;-1:-1:-1::0;;;;;4192:32:5::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;4192:32:5;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;-1:-1:::0;;4236:58:5::1;::::0;;-1:-1:-1;;;;;4236:58:5;;::::1;::::0;;;::::1;;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;;;;;;::::1;::::0;-1:-1:-1;4236:58:5;;;;;;;-1:-1:-1;4236:58:5::1;1953:1;;;;;;3587:712:::0;;:::o;11086:120::-;11194:4;;11132:7;;11154:46;;11179:20;;-1:-1:-1;;;;;11194:4:5;11179:14;:20::i;:::-;11169:4;;11154:20;;-1:-1:-1;;;;;11169:4:5;11154:14;:20::i;:46::-;11147:54;;11086:120;:::o;10074:68::-;10135:4;;-1:-1:-1;;;;;10135:4:5;10074:68;:::o;8617:790::-;8665:6;;-1:-1:-1;;;8665:6:5;;;;:14;;8675:4;8665:14;8657:23;;12:1:-1;9;2:12;8657:23:5;8694:28;;:::i;:::-;8774:15;;8821:13;;8774:61;;;-1:-1:-1;;;8774:61:5;;8814:4;8774:61;;;;;;;;;;;;8730:15;;;;-1:-1:-1;;;;;8774:15:5;;;;:31;;:61;;;;;:15;;:61;;;;;;;;:15;:61;;;2:2:-1;;;;27:1;24;17:12;2:2;8774:61:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8774:61:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;15:3;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;8774:61:5;;;;;;;;;;-1:-1:-1;8774:61:5;-1:-1:-1;8774:61:5;-1:-1:-1;8855:4:5;8844:15;;;;8841:374;;;9055:13;;;9078;;;;9101;;;;;9124;;;;9147;;;;9170;;;;9089:1;8885:4;-1:-1:-1;;;;;8885:4:5;;;9066:1;8879:11;;;9158:1;8879:11;;;;;9112:1;8906:4;;;;8900:11;;;;;;8921:15;;;:9;:15;;;;;8946;;;;;;8971:12;;;9181:1;8971:12;;;;;;8993;;;;;;;9135:1;8869:339;;;;;;;;;;;;;;;;;;8841:374;9250:4;;-1:-1:-1;;;;;9250:4:5;;;9244:11;;;;:5;:11;;;;;;;;;9269:4;;;;;9263:11;;;;;;;9282:15;;;:9;:15;;;;;;9305;;;;;;;9328:12;;;:6;:12;;;;;;9348;;;;;;;;9368:13;;9225:177;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9250:4;9225:177;;;8617:790;;;:::o;11474:151::-;11522:7;11544:75;11570:48;11601:16;:14;:16::i;:::-;11582:13;;11570:7;;:26;;;:11;:26;:::i;:48::-;11544:21;;:75;:25;:75;:::i;922:145:2:-;849:12;:10;:12::i;:::-;839:6;;-1:-1:-1;;;;;839:6:2;;;:22;;;831:67;;;;;-1:-1:-1;;;831:67:2;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;831:67:2;;;;;;;;;;;;;;;1028:1:::1;1012:6:::0;;991:40:::1;::::0;-1:-1:-1;;;;;1012:6:2;;::::1;::::0;991:40:::1;::::0;1028:1;;991:40:::1;1058:1;1041:19:::0;;-1:-1:-1;;;;;;1041:19:2::1;::::0;;922:145::o;12583:112:5:-;849:12:2;:10;:12::i;:::-;839:6;;-1:-1:-1;;;;;839:6:2;;;:22;;;831:67;;;;;-1:-1:-1;;;831:67:2;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;831:67:2;;;;;;;;;;;;;;;12662:5:5::1;12652:6;:15;;12644:24;;12:1:-1;9::::0;2:12:::1;12644:24:5;12674:7;:16:::0;12583:112::o;2760:47::-;;;-1:-1:-1;;;;;2760:47:5;;:::o;10145:81::-;10210:13;;10145:81;:::o;717:77:2:-;755:7;781:6;-1:-1:-1;;;;;781:6:2;717:77;:::o;10407:67:5:-;10465:6;;10407:67;:::o;7375:948::-;1998:6;;-1:-1:-1;;;1998:6:5;;;;:14;;2008:4;1998:14;:62;;;;-1:-1:-1;2017:15:5;;:43;;;-1:-1:-1;;;2017:43:5;;2054:4;2017:43;;;;;;-1:-1:-1;;;;;2017:15:5;;;;:28;;:43;;;;;;;;;;;;;;;:15;:43;;;2:2:-1;;;;27:1;24;17:12;2:2;2017:43:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2017:43:5;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2017:43:5;2016:44;1998:62;1995:95;;;2070:13;:11;:13::i;:::-;7491:10:::1;7480:22;::::0;;;:10:::1;:22;::::0;;;;;7470:32;::::1;;7462:41;;12:1:-1;9::::0;2:12:::1;7462:41:5;7646:11;::::0;:53:::1;::::0;;-1:-1:-1;;;7646:53:5;;7685:4:::1;7646:53;::::0;::::1;::::0;;;;;;;;;7517:18:::1;::::0;;;;;;;;;-1:-1:-1;;;;;7646:11:5;;::::1;::::0;:30:::1;::::0;:53;;;;;::::1;::::0;;;;;;;;;:11;:53;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;7646:53:5;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;7646:53:5;;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29::::0;22:12:::1;4:2;-1:-1:::0;7646:53:5;;::::1;::::0;;::::1;::::0;;;;;;;;;;;;;;;7726:11:::1;::::0;:40;;-1:-1:-1;;;7726:40:5;;7760:4:::1;7726:40;::::0;::::1;::::0;;;7646:53;;-1:-1:-1;7646:53:5;;-1:-1:-1;7646:53:5;;-1:-1:-1;7646:53:5;;-1:-1:-1;7646:53:5;;-1:-1:-1;7705:18:5::1;::::0;-1:-1:-1;;;;;7726:11:5;;::::1;::::0;:25:::1;::::0;:40;;;;;7646:53;;7726:40;;;;;;:11;:40;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;7726:40:5;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;7726:40:5;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;7726:40:5;;-1:-1:-1;7772:20:5::1;7795:40;7826:8:::0;7795:26:::1;:10:::0;7810;7795:26:::1;:14;:26;:::i;:40::-;7869:4;::::0;-1:-1:-1;;;;;7869:4:5::1;7859:15;::::0;;;:9:::1;:15;::::0;;;;;7772:63;;-1:-1:-1;7859:31:5::1;::::0;7879:10;7859:31:::1;:19;:31;:::i;:::-;7851:4;::::0;-1:-1:-1;;;;;7851:4:5;;::::1;7841:15;::::0;;;:9:::1;:15;::::0;;;;;:49;;;;7924:4:::1;::::0;;;::::1;7914:15:::0;;;;:31:::1;::::0;7934:10;7914:31:::1;:19;:31;:::i;:::-;7906:4;::::0;-1:-1:-1;;;;;7906:4:5;;::::1;7896:15;::::0;;;:9:::1;:15;::::0;;;;;;;:49;;;;7906:4;7979;;;::::1;7969:15:::0;;:9:::1;:15:::0;;;;;:31:::1;::::0;7989:10;7969:31:::1;:19;:31;:::i;:::-;7961:4;::::0;-1:-1:-1;;;;;7961:4:5;;::::1;7951:15;::::0;;;:9:::1;:15;::::0;;;;;:49;;;;8034:4:::1;::::0;;;::::1;8024:15:::0;;;;:31:::1;::::0;8044:10;8024:31:::1;:19;:31;:::i;:::-;8016:4;::::0;-1:-1:-1;;;;;8016:4:5::1;8006:15;::::0;;;:9:::1;:15;::::0;;;;;;;:49;;;;8097:10:::1;8086:22:::0;;:10:::1;:22:::0;;;;:34:::1;::::0;8113:6;8086:34:::1;:26;:34;:::i;:::-;8072:10;8061:22;::::0;;;:10:::1;:22;::::0;;;;:59;8143:14:::1;::::0;:26:::1;::::0;8162:6;8143:26:::1;:18;:26;:::i;:::-;8126:14;:43:::0;8185:7:::1;::::0;:21:::1;::::0;8197:8;8185:21:::1;:11;:21;:::i;:::-;8175:7;:31:::0;8212:33:::1;::::0;:10:::1;::::0;:33;::::1;;;::::0;8232:12;;8212:33:::1;::::0;;;8232:12;8212:10;:33;::::1;;;;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;-1:-1:::0;8257:61:5::1;::::0;;8273:10:::1;8257:61:::0;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;::::1;::::0;;;;;;;::::1;2095:1;;;;;;;7375:948:::0;:::o;10635:69::-;10694:7;;10635:69;:::o;11210:122::-;-1:-1:-1;;;;;11309:16:5;;11269:7;11309:16;;;:9;:16;;;;;;;;;11291:6;:13;;;;;;:35;;;:17;:35;:::i;:::-;11284:43;11210:122;-1:-1:-1;;11210:122:5:o;11335:136::-;-1:-1:-1;;;;;11440:12:5;;11397:7;11440:12;;;:5;:12;;;;;;;;;11419:9;:16;;;;;;:46;;11458:6;;11419:34;;;:20;:34;:::i;10983:99::-;-1:-1:-1;;;;;11060:19:5;11043:7;11060:19;;;:10;:19;;;;;;;10983:99::o;10887:93::-;-1:-1:-1;;;;;10961:16:5;10944:7;10961:16;;;:9;:16;;;;;;;10887:93::o;10707:81::-;10772:13;;10707:81;:::o;11860:273::-;849:12:2;:10;:12::i;:::-;839:6;;-1:-1:-1;;;;;839:6:2;;;:22;;;831:67;;;;;-1:-1:-1;;;831:67:2;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;831:67:2;;;;;;;;;;;;;;;11954:4:5::1;::::0;-1:-1:-1;;;;;11954:4:5::1;:18:::0;;:40:::1;;-1:-1:-1::0;11976:4:5::1;::::0;-1:-1:-1;;;;;11976:4:5::1;:18:::0;11954:40:::1;11946:49;;12:1:-1;9::::0;2:12:::1;11946:49:5;12008:4;12001:41:::0;;-1:-1:-1;;;;;;12001:41:5;;::::1;-1:-1:-1::0;;;;;12001:41:5;;::::1;;::::0;;;;-1:-1:-1;12001:41:5;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;;12090:4;;::::1;-1:-1:-1::0;12084:11:5;;;:5:::1;:11;::::0;;;;;12103:4;;;::::1;12097:11:::0;;;;;;12113:6:::1;12083:45:::0;;;;;;11860:273::o;10317:87::-;-1:-1:-1;;;;;10388:13:5;10371:7;10388:13;;;:6;:13;;;;;;;10317:87::o;12136:257::-;849:12:2;:10;:12::i;:::-;839:6;;-1:-1:-1;;;;;839:6:2;;;:22;;;831:67;;;;;-1:-1:-1;;;831:67:2;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;831:67:2;;;;;;;;;;;;;;;12209:6:5::1;:14:::0;;-1:-1:-1;;;;12209:14:5::1;-1:-1:-1::0;;;12209:14:5;::::1;;;;::::0;;12232:12;12229:160:::1;;12275:15;::::0;12319:13:::1;::::0;12275:58:::1;::::0;;-1:-1:-1;;;12275:58:5;;12312:4:::1;12275:58;::::0;::::1;::::0;;;;;;;;;-1:-1:-1;;;;;12275:15:5;;::::1;::::0;:28:::1;::::0;:58;;;;;:15:::1;::::0;:58;;;;;;;;:15;:58;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;12275:58:5;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;12275:58:5;;;;;;39:16:-1;36:1;17:17;2:54;101:4;12275:58:5;80:15:-1::0;;::::1;-1:-1:::0;;76:31:::1;65:43:::0;::::1;120:4;113:20:::0;;;7:11;::::1;4:2;;;31:1;28::::0;21:12:::1;4:2;12275:58:5;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41::::0;34:12:::1;8:2;62:21:::0;;::::1;::::0;123:4:::1;114:14:::0;::::1;138:31:::0;;::::1;135:2;;;182:1;179::::0;172:12:::1;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359::::0;352:12:::1;230:2;373:25:::0;;-1:-1;12275:58:5;;421:4:-1::1;412:14:::0;;::::1;::::0;12275:58:5;::::1;::::0;::::1;::::0;412:14:-1;12275:58:5;23:1:-1::1;8:100;33:3;30:1;27:10;8:100;;;90:11:::0;;::::1;84:18:::0;71:11;;::::1;64:39:::0;52:2:::1;45:10;8:100;;;-1:-1:::0;;;;12275:58:5;;;::::1;;::::0;-1:-1:-1;12275:58:5::1;;::::0;12258:13:::1;12254:79:::0;-1:-1:-1;12229:160:5::1;::::0;-1:-1:-1;;12229:160:5::1;;12136:257:::0;;:::o;6101:849::-;1998:6;;-1:-1:-1;;;1998:6:5;;;;:14;;2008:4;1998:14;:62;;;;-1:-1:-1;2017:15:5;;:43;;;-1:-1:-1;;;2017:43:5;;2054:4;2017:43;;;;;;-1:-1:-1;;;;;2017:15:5;;;;:28;;:43;;;;;;;;;;;;;;;:15;:43;;;2:2:-1;;;;27:1;24;17:12;2:2;2017:43:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2017:43:5;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2017:43:5;2016:44;1998:62;1995:95;;;2070:13;:11;:13::i;:::-;6196::::1;6212:18;:16;:18::i;:::-;6349:11;::::0;:49:::1;::::0;;-1:-1:-1;;;6349:49:5;;6385:4:::1;6349:49;::::0;::::1;::::0;;;;;;;;;6196:34;;-1:-1:-1;6244:18:5::1;::::0;;;;;;;-1:-1:-1;;;;;6349:11:5;;::::1;::::0;:27:::1;::::0;:49;;;;;::::1;::::0;;;;;;;;;:11;:49;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;6349:49:5;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;6349:49:5;;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29::::0;22:12:::1;4:2;-1:-1:::0;6349:49:5;;::::1;::::0;;::::1;::::0;;;;;;;;;;;6425:11:::1;::::0;:40;;-1:-1:-1;;;6425:40:5;;6459:4:::1;6425:40;::::0;::::1;::::0;;;6349:49;;-1:-1:-1;6349:49:5;;-1:-1:-1;6349:49:5;;-1:-1:-1;6349:49:5;;-1:-1:-1;6404:18:5::1;::::0;-1:-1:-1;;;;;6425:11:5;;::::1;::::0;:25:::1;::::0;:40;;;;;6349:49;;6425:40;;;;;;:11;:40;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;6425:40:5;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;6425:40:5;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;6425:40:5;;-1:-1:-1;6471:23:5::1;6497:33;6425:40:::0;6497:17:::1;:5:::0;6507:6:::1;6497:17;:9;:17;:::i;:33::-;6564:4;::::0;-1:-1:-1;;;;;6564:4:5::1;6554:15;::::0;;;:9:::1;:15;::::0;;;;;6471:59;;-1:-1:-1;6554:31:5::1;::::0;6574:10;6554:31:::1;:19;:31;:::i;:::-;6546:4;::::0;-1:-1:-1;;;;;6546:4:5;;::::1;6536:15;::::0;;;:9:::1;:15;::::0;;;;;:49;;;;6619:4:::1;::::0;;;::::1;6609:15:::0;;;;:31:::1;::::0;6629:10;6609:31:::1;:19;:31;:::i;:::-;6601:4;::::0;-1:-1:-1;;;;;6601:4:5;;::::1;6591:15;::::0;;;:9:::1;:15;::::0;;;;;;;:49;;;;6601:4;6674;;;::::1;6664:15:::0;;:9:::1;:15:::0;;;;;:31:::1;::::0;6684:10;6664:31:::1;:19;:31;:::i;:::-;6656:4;::::0;-1:-1:-1;;;;;6656:4:5;;::::1;6646:15;::::0;;;:9:::1;:15;::::0;;;;;:49;;;;6729:4:::1;::::0;;;::::1;6719:15:::0;;;;:31:::1;::::0;6739:10;6719:31:::1;:19;:31;:::i;:::-;6711:4;::::0;-1:-1:-1;;;;;6711:4:5;;::::1;6701:15;::::0;;;:9:::1;:15;::::0;;;;;;;:49;;;;6778:19;;::::1;::::0;;:10:::1;:19:::0;;;;;:40:::1;::::0;6802:15;6778:40:::1;:23;:40;:::i;:::-;-1:-1:-1::0;;;;;6756:19:5;::::1;;::::0;;;:10:::1;:19;::::0;;;;:62;6841:14:::1;::::0;:35:::1;::::0;6860:15;6841:35:::1;:18;:35;:::i;:::-;6824:14;:52:::0;6888:57:::1;::::0;;-1:-1:-1;;;;;6888:57:5;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;::::1;::::0;;;;;;;::::1;2095:1;;;;;;;6101:849:::0;:::o;1073:240:2:-;849:12;:10;:12::i;:::-;839:6;;-1:-1:-1;;;;;839:6:2;;;:22;;;831:67;;;;;-1:-1:-1;;;831:67:2;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;831:67:2;;;;;;;;;;;;;;;-1:-1:-1;;;;;1161:22:2;::::1;1153:73;;;;-1:-1:-1::0;;;1153:73:2::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1262:6;::::0;;1241:38:::1;::::0;-1:-1:-1;;;;;1241:38:2;;::::1;::::0;1262:6;::::1;::::0;1241:38:::1;::::0;::::1;1289:6;:17:::0;;-1:-1:-1;;;;;;1289:17:2::1;-1:-1:-1::0;;;;;1289:17:2;;;::::1;::::0;;;::::1;::::0;;1073:240::o;57:104::-;144:10;57:104;:::o;2180:459:1:-;2238:7;2479:6;2475:45;;-1:-1:-1;2508:1:1;2501:8;;2475:45;2542:5;;;2546:1;2542;:5;:1;2565:5;;;;;:10;2557:56;;;;-1:-1:-1;;;2557:56:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2631:1;2180:459;-1:-1:-1;;;2180:459:1:o;3101:130::-;3159:7;3185:39;3189:1;3192;3185:39;;;;;;;;;;;;;;;;;:3;:39::i;1321:134::-;1379:7;1405:43;1409:1;1412;1405:43;;;;;;;;;;;;;;;;;:3;:43::i;874:176::-;932:7;963:5;;;986:6;;;;978:46;;;;;-1:-1:-1;;;978:46:1;;;;;;;;;;;;;;;;;;;;;;;;;;;9654:134:5;9702:15;;-1:-1:-1;;;;;9702:15:5;:39;9727:13;:6;9738:1;9727:13;:10;:13;:::i;:::-;9702:39;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;9758:25:5;9769:13;:6;9780:1;9769:13;:10;:13;:::i;:::-;9758:6;;:25;:10;:25;:::i;:::-;9747:7;:36;;;;;;;-1:-1:-1;9654:134:5:o;3713:272:1:-;3799:7;3833:12;3826:5;3818:28;;;;-1:-1:-1;;;3818:28:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3818:28:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3856:9;3872:1;3868;:5;;;;;;;3713:272;-1:-1:-1;;;;;3713:272:1:o;1746:187::-;1832:7;1867:12;1859:6;;;;1851:29;;;;-1:-1:-1;;;1851:29:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1851:29:1;-1:-1:-1;;;1902:5:1;;;1746:187::o;388:12310:5:-;;;;;;;;;;;29:2:-1;21:6;17:15;125:4;109:14;101:6;88:42;-1:-1;388:12310:5;;;-1:-1:-1;;388:12310:5:o
Swarm Source
ipfs://fb60cc37e50db57b971c82f504c47f2b825744041c647692b8ff7f2e5b92b05b
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.