Latest 25 from a total of 1,615 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Expire Cover | 16568893 | 1134 days ago | IN | 0 ETH | 0.00197506 | ||||
| Expire Cover | 16566754 | 1134 days ago | IN | 0 ETH | 0.00199224 | ||||
| Expire Cover | 16565561 | 1134 days ago | IN | 0 ETH | 0.00224137 | ||||
| Expire Cover | 16564220 | 1134 days ago | IN | 0 ETH | 0.003099 | ||||
| Expire Cover | 16564219 | 1134 days ago | IN | 0 ETH | 0.00277911 | ||||
| Expire Cover | 16563075 | 1134 days ago | IN | 0 ETH | 0.00255743 | ||||
| Expire Cover | 16560539 | 1135 days ago | IN | 0 ETH | 0.00191386 | ||||
| Buy Cover With M... | 16559884 | 1135 days ago | IN | 0.13453798 ETH | 0.01006428 | ||||
| Buy Cover With M... | 16558955 | 1135 days ago | IN | 0 ETH | 0.00972956 | ||||
| Expire Cover | 16557749 | 1135 days ago | IN | 0 ETH | 0.00291939 | ||||
| Expire Cover | 16556154 | 1135 days ago | IN | 0 ETH | 0.00238349 | ||||
| Expire Cover | 16555212 | 1136 days ago | IN | 0 ETH | 0.00278071 | ||||
| Expire Cover | 16555162 | 1136 days ago | IN | 0 ETH | 0.00197765 | ||||
| Expire Cover | 16553577 | 1136 days ago | IN | 0 ETH | 0.00233111 | ||||
| Expire Cover | 16553033 | 1136 days ago | IN | 0 ETH | 0.00209044 | ||||
| Expire Cover | 16552884 | 1136 days ago | IN | 0 ETH | 0.00259506 | ||||
| Expire Cover | 16552235 | 1136 days ago | IN | 0 ETH | 0.00233449 | ||||
| Buy Cover With M... | 16550959 | 1136 days ago | IN | 0 ETH | 0.02483607 | ||||
| Expire Cover | 16550390 | 1136 days ago | IN | 0 ETH | 0.00427694 | ||||
| Buy Cover With M... | 16549659 | 1136 days ago | IN | 0 ETH | 0.0166501 | ||||
| Buy Cover With M... | 16549519 | 1136 days ago | IN | 0 ETH | 0.02073435 | ||||
| Expire Cover | 16549047 | 1136 days ago | IN | 0 ETH | 0.00400131 | ||||
| Expire Cover | 16549046 | 1136 days ago | IN | 0 ETH | 0.00406614 | ||||
| Expire Cover | 16548546 | 1136 days ago | IN | 0 ETH | 0.00275479 | ||||
| Expire Cover | 16548397 | 1136 days ago | IN | 0 ETH | 0.00246965 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 16559884 | 1135 days ago | 0.13453798 ETH | ||||
| Transfer | 16465360 | 1148 days ago | 0.16016427 ETH | ||||
| Transfer | 16415294 | 1155 days ago | 0.25199178 ETH | ||||
| Transfer | 16367824 | 1162 days ago | 0.98732375 ETH | ||||
| Transfer | 16330561 | 1167 days ago | 0.80544832 ETH | ||||
| Transfer | 16330548 | 1167 days ago | 1.53295003 ETH | ||||
| Transfer | 16241563 | 1179 days ago | 0.16016427 ETH | ||||
| Transfer | 16213855 | 1183 days ago | 0.0640657 ETH | ||||
| Transfer | 16189265 | 1187 days ago | 0.00640657 ETH | ||||
| Transfer | 16170091 | 1189 days ago | 0.13667351 ETH | ||||
| Transfer | 15976353 | 1216 days ago | 0.02135523 ETH | ||||
| Transfer | 15938947 | 1222 days ago | 0.00854209 ETH | ||||
| Transfer | 15908091 | 1226 days ago | 0.19219712 ETH | ||||
| Transfer | 15879828 | 1230 days ago | 0.16016427 ETH | ||||
| Transfer | 15730780 | 1251 days ago | 0.00213552 ETH | ||||
| Transfer | 15618859 | 1266 days ago | 3.20328542 ETH | ||||
| Transfer | 15618856 | 1266 days ago | 3.20328542 ETH | ||||
| Transfer | 15539685 | 1277 days ago | 6.08624229 ETH | ||||
| Transfer | 15519375 | 1281 days ago | 0.20501026 ETH | ||||
| Transfer | 15358655 | 1307 days ago | 0.00213552 ETH | ||||
| Transfer | 15346391 | 1308 days ago | 0.64065708 ETH | ||||
| Transfer | 15346175 | 1308 days ago | 0.00213552 ETH | ||||
| Transfer | 15321315 | 1312 days ago | 0.64065708 ETH | ||||
| Transfer | 15321295 | 1312 days ago | 1.24928131 ETH | ||||
| Transfer | 15321202 | 1312 days ago | 3.89733059 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
Quotation
Compiler Version
v0.5.17+commit.d19bba13
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-3.0-only
pragma solidity ^0.5.0;
import "@openzeppelin/contracts/math/SafeMath.sol";
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/utils/ReentrancyGuard.sol";
import "../../abstract/MasterAware.sol";
import "../../interfaces/IClaimsReward.sol";
import "../../interfaces/IIncidents.sol";
import "../../interfaces/IPool.sol";
import "../../interfaces/IPooledStaking.sol";
import "../../interfaces/IQuotation.sol";
import "../../interfaces/IQuotationData.sol";
import "../../interfaces/ITokenController.sol";
import "../../interfaces/ITokenData.sol";
contract Quotation is IQuotation, MasterAware, ReentrancyGuard {
using SafeMath for uint;
IClaimsReward public cr;
IPool public pool;
IPooledStaking public pooledStaking;
IQuotationData public qd;
ITokenController public tc;
ITokenData public td;
IIncidents public incidents;
mapping(uint => string) public coverMetadata;
/**
* @dev Iupgradable Interface to update dependent contract address
*/
function changeDependentContractAddress() public onlyInternal {
cr = IClaimsReward(master.getLatestAddress("CR"));
pool = IPool(master.getLatestAddress("P1"));
pooledStaking = IPooledStaking(master.getLatestAddress("PS"));
qd = IQuotationData(master.getLatestAddress("QD"));
tc = ITokenController(master.getLatestAddress("TC"));
td = ITokenData(master.getLatestAddress("TD"));
incidents = IIncidents(master.getLatestAddress("IC"));
}
// solhint-disable-next-line no-empty-blocks
function sendEther() public payable {}
/**
* @dev Expires a cover after a set period of time and changes the status of the cover
* @dev Reduces the total and contract sum assured
* @param coverId Cover Id.
*/
function expireCover(uint coverId) external {
uint expirationDate = qd.getValidityOfCover(coverId);
require(expirationDate < now, "Quotation: cover is not due to expire");
uint coverStatus = qd.getCoverStatusNo(coverId);
require(coverStatus != uint(IQuotationData.CoverStatus.CoverExpired), "Quotation: cover already expired");
(/* claim count */, bool hasOpenClaim, /* accepted */) = tc.coverInfo(coverId);
require(!hasOpenClaim, "Quotation: cover has an open claim");
if (coverStatus != uint(IQuotationData.CoverStatus.ClaimAccepted)) {
(,, address contractAddress, bytes4 currency, uint amount,) = qd.getCoverDetailsByCoverID1(coverId);
qd.subFromTotalSumAssured(currency, amount);
qd.subFromTotalSumAssuredSC(contractAddress, currency, amount);
}
qd.changeCoverStatusNo(coverId, uint8(IQuotationData.CoverStatus.CoverExpired));
}
function withdrawCoverNote(address coverOwner, uint[] calldata coverIds, uint[] calldata reasonIndexes) external {
uint gracePeriod = tc.claimSubmissionGracePeriod();
for (uint i = 0; i < coverIds.length; i++) {
uint expirationDate = qd.getValidityOfCover(coverIds[i]);
require(expirationDate.add(gracePeriod) < now, "Quotation: cannot withdraw before grace period expiration");
}
tc.withdrawCoverNote(coverOwner, coverIds, reasonIndexes);
}
function getWithdrawableCoverNoteCoverIds(
address coverOwner
) public view returns (
uint[] memory expiredCoverIds,
bytes32[] memory lockReasons
) {
uint[] memory coverIds = qd.getAllCoversOfUser(coverOwner);
uint[] memory expiredIdsQueue = new uint[](coverIds.length);
uint gracePeriod = tc.claimSubmissionGracePeriod();
uint expiredQueueLength = 0;
for (uint i = 0; i < coverIds.length; i++) {
uint coverExpirationDate = qd.getValidityOfCover(coverIds[i]);
uint gracePeriodExpirationDate = coverExpirationDate.add(gracePeriod);
(/* claimCount */, bool hasOpenClaim, /* hasAcceptedClaim */) = tc.coverInfo(coverIds[i]);
if (!hasOpenClaim && gracePeriodExpirationDate < now) {
expiredIdsQueue[expiredQueueLength] = coverIds[i];
expiredQueueLength++;
}
}
expiredCoverIds = new uint[](expiredQueueLength);
lockReasons = new bytes32[](expiredQueueLength);
for (uint i = 0; i < expiredQueueLength; i++) {
expiredCoverIds[i] = expiredIdsQueue[i];
lockReasons[i] = keccak256(abi.encodePacked("CN", coverOwner, expiredIdsQueue[i]));
}
}
function getWithdrawableCoverNotesAmount(address coverOwner) external view returns (uint) {
uint withdrawableAmount;
bytes32[] memory lockReasons;
(/*expiredCoverIds*/, lockReasons) = getWithdrawableCoverNoteCoverIds(coverOwner);
for (uint i = 0; i < lockReasons.length; i++) {
uint coverNoteAmount = tc.tokensLocked(coverOwner, lockReasons[i]);
withdrawableAmount = withdrawableAmount.add(coverNoteAmount);
}
return withdrawableAmount;
}
/**
* @dev Makes Cover funded via NXM tokens.
* @param smartCAdd Smart Contract Address
*/
function makeCoverUsingNXMTokens(
uint[] calldata coverDetails,
uint16 coverPeriod,
bytes4 coverCurr,
address smartCAdd,
uint8 _v,
bytes32 _r,
bytes32 _s
) external onlyMember whenNotPaused {
tc.burnFrom(msg.sender, coverDetails[2]); // needs allowance
_verifyCoverDetails(
msg.sender,
smartCAdd,
coverCurr,
coverDetails,
coverPeriod,
_v,
_r,
_s,
true
);
}
/// Creates cover with offchain metadata that can be used as a commitment when claiming.
function buyCoverWithMetadata(
uint[] calldata coverDetails,
uint16 coverPeriod,
bytes4 coverCurr,
address smartCAdd,
uint8 _v,
bytes32 _r,
bytes32 _s,
bool payWithNXM,
string calldata ipfsMetadata
) external payable onlyMember whenNotPaused {
if (payWithNXM) {
tc.burnFrom(msg.sender, coverDetails[2]);
} else if (coverCurr == "ETH") {
require(msg.value == coverDetails[1], "Quotation: ETH amount does not match premium");
// solhint-disable-next-line avoid-low-level-calls, avoid-call-value
(bool ok, /* data */) = address(pool).call.value(msg.value)("");
require(ok, "Quotation: Transfer to Pool failed");
}
_verifyCoverDetails(
msg.sender,
smartCAdd,
coverCurr,
coverDetails,
coverPeriod,
_v,
_r,
_s,
payWithNXM
);
uint coverId = qd.getCoverLength().sub(1);
coverMetadata[coverId] = ipfsMetadata;
}
/**
* @dev Verifies cover details signed off chain.
* @param from address of funder.
* @param scAddress Smart Contract Address
*/
function verifyCoverDetails(
address payable from,
address scAddress,
bytes4 coverCurr,
uint[] memory coverDetails,
uint16 coverPeriod,
uint8 _v,
bytes32 _r,
bytes32 _s
) public onlyInternal {
_verifyCoverDetails(
from,
scAddress,
coverCurr,
coverDetails,
coverPeriod,
_v,
_r,
_s,
false
);
}
/**
* @dev Verifies signature.
* @param coverDetails details related to cover.
* @param coverPeriod validity of cover.
* @param contractAddress smart contract address.
* @param _v argument from vrs hash.
* @param _r argument from vrs hash.
* @param _s argument from vrs hash.
*/
function verifySignature(
uint[] memory coverDetails,
uint16 coverPeriod,
bytes4 currency,
address contractAddress,
uint8 _v,
bytes32 _r,
bytes32 _s
) public view returns (bool) {
require(contractAddress != address(0));
bytes32 hash = getOrderHash(coverDetails, coverPeriod, currency, contractAddress);
return isValidSignature(hash, _v, _r, _s);
}
/**
* @dev Gets order hash for given cover details.
* @param coverDetails details realted to cover.
* @param coverPeriod validity of cover.
* @param contractAddress smart contract address.
*/
function getOrderHash(
uint[] memory coverDetails,
uint16 coverPeriod,
bytes4 currency,
address contractAddress
) public view returns (bytes32) {
return keccak256(
abi.encodePacked(
coverDetails[0],
currency,
coverPeriod,
contractAddress,
coverDetails[1],
coverDetails[2],
coverDetails[3],
coverDetails[4],
address(this)
)
);
}
/**
* @dev Verifies signature.
* @param hash order hash
* @param v argument from vrs hash.
* @param r argument from vrs hash.
* @param s argument from vrs hash.
*/
function isValidSignature(bytes32 hash, uint8 v, bytes32 r, bytes32 s) public view returns (bool) {
bytes memory prefix = "\x19Ethereum Signed Message:\n32";
bytes32 prefixedHash = keccak256(abi.encodePacked(prefix, hash));
address a = ecrecover(prefixedHash, v, r, s);
return (a == qd.getAuthQuoteEngine());
}
/**
* @dev Creates cover of the quotation, changes the status of the quotation ,
* updates the total sum assured and locks the tokens of the cover against a quote.
* @param from Quote member Ethereum address.
*/
function _makeCover(//solhint-disable-line
address payable from,
address contractAddress,
bytes4 coverCurrency,
uint[] memory coverDetails,
uint16 coverPeriod
) internal {
address underlyingToken = incidents.underlyingToken(contractAddress);
if (underlyingToken != address(0)) {
address coverAsset = cr.getCurrencyAssetAddress(coverCurrency);
require(coverAsset == underlyingToken, "Quotation: Unsupported cover asset for this product");
}
uint cid = qd.getCoverLength();
qd.addCover(
coverPeriod,
coverDetails[0],
from,
coverCurrency,
contractAddress,
coverDetails[1],
coverDetails[2]
);
uint coverNoteAmount = coverDetails[2].mul(qd.tokensRetained()).div(100);
uint gracePeriod = tc.claimSubmissionGracePeriod();
uint claimSubmissionPeriod = uint(coverPeriod).mul(1 days).add(gracePeriod);
bytes32 reason = keccak256(abi.encodePacked("CN", from, cid));
// mint and lock cover note
td.setDepositCNAmount(cid, coverNoteAmount);
tc.mintCoverNote(from, reason, coverNoteAmount, claimSubmissionPeriod);
qd.addInTotalSumAssured(coverCurrency, coverDetails[0]);
qd.addInTotalSumAssuredSC(contractAddress, coverCurrency, coverDetails[0]);
uint coverPremiumInNXM = coverDetails[2];
uint stakersRewardPercentage = td.stakerCommissionPer();
uint rewardValue = coverPremiumInNXM.mul(stakersRewardPercentage).div(100);
pooledStaking.accumulateReward(contractAddress, rewardValue);
}
/**
* @dev Makes a cover.
* @param from address of funder.
* @param scAddress Smart Contract Address
*/
function _verifyCoverDetails(
address payable from,
address scAddress,
bytes4 coverCurr,
uint[] memory coverDetails,
uint16 coverPeriod,
uint8 _v,
bytes32 _r,
bytes32 _s,
bool isNXM
) internal {
require(coverDetails[3] > now, "Quotation: Quote has expired");
require(coverPeriod >= 30 && coverPeriod <= 365, "Quotation: Cover period out of bounds");
require(!qd.timestampRepeated(coverDetails[4]), "Quotation: Quote already used");
qd.setTimestampRepeated(coverDetails[4]);
address asset = cr.getCurrencyAssetAddress(coverCurr);
if (coverCurr != "ETH" && !isNXM) {
pool.transferAssetFrom(asset, from, coverDetails[1]);
}
require(verifySignature(coverDetails, coverPeriod, coverCurr, scAddress, _v, _r, _s), "Quotation: signature mismatch");
_makeCover(from, scAddress, coverCurr, coverDetails, coverPeriod);
}
function createCover(
address payable from,
address scAddress,
bytes4 currency,
uint[] calldata coverDetails,
uint16 coverPeriod,
uint8 _v,
bytes32 _r,
bytes32 _s
) external onlyInternal {
require(coverDetails[3] > now, "Quotation: Quote has expired");
require(coverPeriod >= 30 && coverPeriod <= 365, "Quotation: Cover period out of bounds");
require(!qd.timestampRepeated(coverDetails[4]), "Quotation: Quote already used");
qd.setTimestampRepeated(coverDetails[4]);
require(verifySignature(coverDetails, coverPeriod, currency, scAddress, _v, _r, _s), "Quotation: signature mismatch");
_makeCover(from, scAddress, currency, coverDetails, coverPeriod);
}
// referenced in master, keeping for now
// solhint-disable-next-line no-empty-blocks
function transferAssetsToNewContract(address) external pure {}
}pragma solidity ^0.5.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.
*
* _Available since v2.4.0._
*/
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.
*
* _Available since v2.4.0._
*/
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
// Solidity only automatically asserts when dividing by 0
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.
*
* _Available since v2.4.0._
*/
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}pragma solidity ^0.5.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP. Does not include
* the optional functions; to access them see {ERC20Detailed}.
*/
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);
}pragma solidity ^0.5.0;
/**
* @dev Contract module that helps prevent reentrant calls to a function.
*
* Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
* available, which can be applied to functions to make sure there are no nested
* (reentrant) calls to them.
*
* Note that because there is a single `nonReentrant` guard, functions marked as
* `nonReentrant` may not call one another. This can be worked around by making
* those functions `private`, and then adding `external` `nonReentrant` entry
* points to them.
*
* TIP: If you would like to learn more about reentrancy and alternative ways
* to protect against it, check out our blog post
* https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
*
* _Since v2.5.0:_ this module is now much more gas efficient, given net gas
* metering changes introduced in the Istanbul hardfork.
*/
contract ReentrancyGuard {
bool private _notEntered;
constructor () internal {
// Storing an initial non-zero value makes deployment a bit more
// expensive, but in exchange the refund on every call to nonReentrant
// will be lower in amount. Since refunds are capped to a percetange of
// the total transaction's gas, it is best to keep them low in cases
// like this one, to increase the likelihood of the full refund coming
// into effect.
_notEntered = true;
}
/**
* @dev Prevents a contract from calling itself, directly or indirectly.
* Calling a `nonReentrant` function from another `nonReentrant`
* function is not supported. It is possible to prevent this from happening
* by making the `nonReentrant` function external, and make it call a
* `private` function that does the actual work.
*/
modifier nonReentrant() {
// On the first call to nonReentrant, _notEntered will be true
require(_notEntered, "ReentrancyGuard: reentrant call");
// Any calls to nonReentrant after this point will fail
_notEntered = false;
_;
// By storing the original value once again, a refund is triggered (see
// https://eips.ethereum.org/EIPS/eip-2200)
_notEntered = true;
}
}// SPDX-License-Identifier: GPL-3.0-only
pragma solidity ^0.5.0;
import "../interfaces/INXMMaster.sol";
contract MasterAware {
INXMMaster public master;
modifier onlyMember {
require(master.isMember(msg.sender), "Caller is not a member");
_;
}
modifier onlyInternal {
require(master.isInternal(msg.sender), "Caller is not an internal contract");
_;
}
modifier onlyMaster {
if (address(master) != address(0)) {
require(address(master) == msg.sender, "Not master");
}
_;
}
modifier onlyGovernance {
require(
master.checkIsAuthToGoverned(msg.sender),
"Caller is not authorized to govern"
);
_;
}
modifier whenPaused {
require(master.isPause(), "System is not paused");
_;
}
modifier whenNotPaused {
require(!master.isPause(), "System is paused");
_;
}
function changeDependentContractAddress() external;
function changeMasterAddress(address masterAddress) public onlyMaster {
master = INXMMaster(masterAddress);
}
}// SPDX-License-Identifier: GPL-3.0-only
pragma solidity >=0.5.0;
interface IClaimsReward {
/// @dev Decides the next course of action for a given claim.
function changeClaimStatus(uint claimid) external;
function getCurrencyAssetAddress(bytes4 currency) external view returns (address);
function getRewardToBeGiven(
uint check,
uint voteid,
uint flag
)
external
view
returns (
uint tokenCalculated,
bool lastClaimedCheck,
uint tokens,
uint perc
);
function upgrade(address _newAdd) external;
function getRewardToBeDistributedByUser(address _add) external view returns (uint total);
function getRewardAndClaimedStatus(uint check, uint claimId) external view returns (uint reward, bool claimed);
function claimAllPendingReward(uint records) external;
function getAllPendingRewardOfUser(address _add) external view returns (uint);
function unlockCoverNote(uint coverId) external;
}// SPDX-License-Identifier: GPL-3.0-only
pragma solidity >=0.5.0;
interface IIncidents {
function underlyingToken(address) external view returns (address);
function coveredToken(address) external view returns (address);
function claimPayout(uint) external view returns (uint);
function incidentCount() external view returns (uint);
function addIncident(
address productId,
uint incidentDate,
uint priceBefore
) external;
function redeemPayoutForMember(
uint coverId,
uint incidentId,
uint coveredTokenAmount,
address member
) external returns (uint claimId, uint payoutAmount, address payoutToken);
function redeemPayout(
uint coverId,
uint incidentId,
uint coveredTokenAmount
) external returns (uint claimId, uint payoutAmount, address payoutToken);
function pushBurns(address productId, uint maxIterations) external;
function withdrawAsset(address asset, address destination, uint amount) external;
}// SPDX-License-Identifier: GPL-3.0-only
pragma solidity >=0.5.0;
import "./IPriceFeedOracle.sol";
interface IPool {
function sellNXM(uint tokenAmount, uint minEthOut) external;
function sellNXMTokens(uint tokenAmount) external returns (bool);
function minPoolEth() external returns (uint);
function transferAssetToSwapOperator(address asset, uint amount) external;
function setAssetDataLastSwapTime(address asset, uint32 lastSwapTime) external;
function getAssetDetails(address _asset) external view returns (
uint112 min,
uint112 max,
uint32 lastAssetSwapTime,
uint maxSlippageRatio
);
function sendClaimPayout (
address asset,
address payable payoutAddress,
uint amount
) external returns (bool success);
function transferAsset(
address asset,
address payable destination,
uint amount
) external;
function upgradeCapitalPool(address payable newPoolAddress) external;
function priceFeedOracle() external view returns (IPriceFeedOracle);
function getPoolValueInEth() external view returns (uint);
function transferAssetFrom(address asset, address from, uint amount) external;
function getEthForNXM(uint nxmAmount) external view returns (uint ethAmount);
function calculateEthForNXM(
uint nxmAmount,
uint currentTotalAssetValue,
uint mcrEth
) external pure returns (uint);
function calculateMCRRatio(uint totalAssetValue, uint mcrEth) external pure returns (uint);
function calculateTokenSpotPrice(uint totalAssetValue, uint mcrEth) external pure returns (uint tokenPrice);
function getTokenPrice(address asset) external view returns (uint tokenPrice);
function getMCRRatio() external view returns (uint);
}// SPDX-License-Identifier: GPL-3.0-only
pragma solidity >=0.5.0;
interface IPooledStaking {
function accumulateReward(address contractAddress, uint amount) external;
function pushBurn(address contractAddress, uint amount) external;
function hasPendingActions() external view returns (bool);
function processPendingActions(uint maxIterations) external returns (bool finished);
function contractStake(address contractAddress) external view returns (uint);
function stakerReward(address staker) external view returns (uint);
function stakerDeposit(address staker) external view returns (uint);
function stakerContractStake(address staker, address contractAddress) external view returns (uint);
function withdraw(uint amount) external;
function stakerMaxWithdrawable(address stakerAddress) external view returns (uint);
function withdrawReward(address stakerAddress) external;
}// SPDX-License-Identifier: GPL-3.0-only
pragma solidity >=0.5.0;
interface IQuotation {
function verifyCoverDetails(
address payable from,
address scAddress,
bytes4 coverCurr,
uint[] calldata coverDetails,
uint16 coverPeriod,
uint8 _v,
bytes32 _r,
bytes32 _s
) external;
function createCover(
address payable from,
address scAddress,
bytes4 currency,
uint[] calldata coverDetails,
uint16 coverPeriod,
uint8 _v,
bytes32 _r,
bytes32 _s
) external;
}// SPDX-License-Identifier: GPL-3.0-only
pragma solidity >=0.5.0;
interface IQuotationData {
function authQuoteEngine() external view returns (address);
function stlp() external view returns (uint);
function stl() external view returns (uint);
function pm() external view returns (uint);
function minDays() external view returns (uint);
function tokensRetained() external view returns (uint);
function kycAuthAddress() external view returns (address);
function refundEligible(address) external view returns (bool);
function holdedCoverIDStatus(uint) external view returns (uint);
function timestampRepeated(uint) external view returns (bool);
enum HCIDStatus {NA, kycPending, kycPass, kycFailedOrRefunded, kycPassNoCover}
enum CoverStatus {Active, ClaimAccepted, ClaimDenied, CoverExpired, ClaimSubmitted, Requested}
function addInTotalSumAssuredSC(address _add, bytes4 _curr, uint _amount) external;
function subFromTotalSumAssuredSC(address _add, bytes4 _curr, uint _amount) external;
function subFromTotalSumAssured(bytes4 _curr, uint _amount) external;
function addInTotalSumAssured(bytes4 _curr, uint _amount) external;
function setTimestampRepeated(uint _timestamp) external;
/// @dev Creates a blank new cover.
function addCover(
uint16 _coverPeriod,
uint _sumAssured,
address payable _userAddress,
bytes4 _currencyCode,
address _scAddress,
uint premium,
uint premiumNXM
) external;
function addHoldCover(
address payable from,
address scAddress,
bytes4 coverCurr,
uint[] calldata coverDetails,
uint16 coverPeriod
) external;
function setRefundEligible(address _add, bool status) external;
function setHoldedCoverIDStatus(uint holdedCoverID, uint status) external;
function setKycAuthAddress(address _add) external;
function changeAuthQuoteEngine(address _add) external;
function getUintParameters(bytes8 code) external view returns (bytes8 codeVal, uint val);
function getProductDetails()
external
view
returns (
uint _minDays,
uint _pm,
uint _stl,
uint _stlp
);
function getCoverLength() external view returns (uint len);
function getAuthQuoteEngine() external view returns (address _add);
function getTotalSumAssured(bytes4 _curr) external view returns (uint amount);
function getAllCoversOfUser(address _add) external view returns (uint[] memory allCover);
function getUserCoverLength(address _add) external view returns (uint len);
function getCoverStatusNo(uint _cid) external view returns (uint8);
function getCoverPeriod(uint _cid) external view returns (uint32 cp);
function getCoverSumAssured(uint _cid) external view returns (uint sa);
function getCurrencyOfCover(uint _cid) external view returns (bytes4 curr);
function getValidityOfCover(uint _cid) external view returns (uint date);
function getscAddressOfCover(uint _cid) external view returns (uint, address);
function getCoverMemberAddress(uint _cid) external view returns (address payable _add);
function getCoverPremiumNXM(uint _cid) external view returns (uint _premiumNXM);
function getCoverDetailsByCoverID1(
uint _cid
)
external
view
returns (
uint cid,
address _memberAddress,
address _scAddress,
bytes4 _currencyCode,
uint _sumAssured,
uint premiumNXM
);
function getCoverDetailsByCoverID2(
uint _cid
)
external
view
returns (
uint cid,
uint8 status,
uint sumAssured,
uint16 coverPeriod,
uint validUntil
);
function getHoldedCoverDetailsByID1(
uint _hcid
)
external
view
returns (
uint hcid,
address scAddress,
bytes4 coverCurr,
uint16 coverPeriod
);
function getUserHoldedCoverLength(address _add) external view returns (uint);
function getUserHoldedCoverByIndex(address _add, uint index) external view returns (uint);
function getHoldedCoverDetailsByID2(
uint _hcid
)
external
view
returns (
uint hcid,
address payable memberAddress,
uint[] memory coverDetails
);
function getTotalSumAssuredSC(address _add, bytes4 _curr) external view returns (uint amount);
function changeCoverStatusNo(uint _cid, uint8 _stat) external;
}// SPDX-License-Identifier: GPL-3.0-only
pragma solidity >=0.5.0;
interface ITokenController {
function coverInfo(uint id) external view returns (uint16 claimCount, bool hasOpenClaim, bool hasAcceptedClaim);
function claimSubmissionGracePeriod() external view returns (uint);
function withdrawCoverNote(
address _of,
uint[] calldata _coverIds,
uint[] calldata _indexes
) external;
function markCoverClaimOpen(uint coverId) external;
function markCoverClaimClosed(uint coverId, bool isAccepted) external;
function changeOperator(address _newOperator) external;
function operatorTransfer(address _from, address _to, uint _value) external returns (bool);
function lockClaimAssessmentTokens(uint256 _amount, uint256 _time) external;
function lockOf(address _of, bytes32 _reason, uint256 _amount, uint256 _time) external returns (bool);
function mintCoverNote(
address _of,
bytes32 _reason,
uint256 _amount,
uint256 _time
) external;
function extendClaimAssessmentLock(uint256 _time) external;
function extendLockOf(address _of, bytes32 _reason, uint256 _time) external returns (bool);
function increaseClaimAssessmentLock(uint256 _amount) external;
function burnFrom(address _of, uint amount) external returns (bool);
function burnLockedTokens(address _of, bytes32 _reason, uint256 _amount) external;
function reduceLock(address _of, bytes32 _reason, uint256 _time) external;
function releaseLockedTokens(address _of, bytes32 _reason, uint256 _amount) external;
function addToWhitelist(address _member) external;
function removeFromWhitelist(address _member) external;
function mint(address _member, uint _amount) external;
function lockForMemberVote(address _of, uint _days) external;
function withdrawClaimAssessmentTokens(address _of) external;
function getLockReasons(address _of) external view returns (bytes32[] memory reasons);
function getLockedTokensValidity(address _of, bytes32 reason) external view returns (uint256 validity);
function getUnlockableTokens(address _of) external view returns (uint256 unlockableTokens);
function tokensLocked(address _of, bytes32 _reason) external view returns (uint256 amount);
function tokensLockedWithValidity(address _of, bytes32 _reason)
external
view
returns (uint256 amount, uint256 validity);
function tokensUnlockable(address _of, bytes32 _reason) external view returns (uint256 amount);
function totalSupply() external view returns (uint256);
function tokensLockedAtTime(address _of, bytes32 _reason, uint256 _time) external view returns (uint256 amount);
function totalBalanceOf(address _of) external view returns (uint256 amount);
function totalLockedBalance(address _of) external view returns (uint256 amount);
}// SPDX-License-Identifier: GPL-3.0-only
pragma solidity >=0.5.0;
interface ITokenData {
function walletAddress() external view returns (address payable);
function lockTokenTimeAfterCoverExp() external view returns (uint);
function bookTime() external view returns (uint);
function lockCADays() external view returns (uint);
function lockMVDays() external view returns (uint);
function scValidDays() external view returns (uint);
function joiningFee() external view returns (uint);
function stakerCommissionPer() external view returns (uint);
function stakerMaxCommissionPer() external view returns (uint);
function tokenExponent() external view returns (uint);
function priceStep() external view returns (uint);
function depositedCN(uint) external view returns (uint amount, bool isDeposited);
function lastCompletedStakeCommission(address) external view returns (uint);
function changeWalletAddress(address payable _address) external;
function getStakerStakedContractByIndex(
address _stakerAddress,
uint _stakerIndex
)
external
view
returns (address stakedContractAddress);
function getStakerStakedBurnedByIndex(
address _stakerAddress,
uint _stakerIndex
)
external
view
returns (uint burnedAmount);
function getStakerStakedUnlockableBeforeLastBurnByIndex(
address _stakerAddress,
uint _stakerIndex
)
external
view
returns (uint unlockable);
function getStakerStakedContractIndex(
address _stakerAddress,
uint _stakerIndex
)
external
view
returns (uint scIndex);
function getStakedContractStakerIndex(
address _stakedContractAddress,
uint _stakedContractIndex
)
external
view
returns (uint sIndex);
function getStakerInitialStakedAmountOnContract(
address _stakerAddress,
uint _stakerIndex
)
external
view
returns (uint amount);
function getStakerStakedContractLength(
address _stakerAddress
)
external
view
returns (uint length);
function getStakerUnlockedStakedTokens(
address _stakerAddress,
uint _stakerIndex
)
external
view
returns (uint amount);
function pushUnlockedStakedTokens(
address _stakerAddress,
uint _stakerIndex,
uint _amount
) external;
function pushBurnedTokens(
address _stakerAddress,
uint _stakerIndex,
uint _amount
) external;
function pushUnlockableBeforeLastBurnTokens(
address _stakerAddress,
uint _stakerIndex,
uint _amount
) external;
function setUnlockableBeforeLastBurnTokens(
address _stakerAddress,
uint _stakerIndex,
uint _amount
) external;
function pushEarnedStakeCommissions(
address _stakerAddress,
address _stakedContractAddress,
uint _stakedContractIndex,
uint _commissionAmount
) external;
function pushRedeemedStakeCommissions(
address _stakerAddress,
uint _stakerIndex,
uint _amount
) external;
function getStakerEarnedStakeCommission(
address _stakerAddress,
uint _stakerIndex
)
external
view
returns (uint);
function getStakerRedeemedStakeCommission(
address _stakerAddress,
uint _stakerIndex
)
external
view
returns (uint);
function getStakerTotalEarnedStakeCommission(
address _stakerAddress
)
external
view
returns (uint totalCommissionEarned);
function getStakerTotalReedmedStakeCommission(
address _stakerAddress
)
external
view
returns (uint totalCommissionRedeemed);
function setDepositCN(uint coverId, bool flag) external;
function getStakedContractStakerByIndex(
address _stakedContractAddress,
uint _stakedContractIndex
)
external
view
returns (address stakerAddress);
function getStakedContractStakersLength(
address _stakedContractAddress
) external view returns (uint length);
function addStake(
address _stakerAddress,
address _stakedContractAddress,
uint _amount
) external returns (uint scIndex);
function bookCATokens(address _of) external;
function isCATokensBooked(address _of) external view returns (bool res);
function setStakedContractCurrentCommissionIndex(
address _stakedContractAddress,
uint _index
) external;
function setLastCompletedStakeCommissionIndex(
address _stakerAddress,
uint _index
) external;
function setStakedContractCurrentBurnIndex(
address _stakedContractAddress,
uint _index
) external;
function setDepositCNAmount(uint coverId, uint amount) external;
}// SPDX-License-Identifier: GPL-3.0-only
pragma solidity >=0.5.0;
interface INXMMaster {
function tokenAddress() external view returns (address);
function owner() external view returns (address);
function masterInitialized() external view returns (bool);
function isInternal(address _add) external view returns (bool);
function isPause() external view returns (bool check);
function isOwner(address _add) external view returns (bool);
function isMember(address _add) external view returns (bool);
function checkIsAuthToGoverned(address _add) external view returns (bool);
function dAppLocker() external view returns (address _add);
function getLatestAddress(bytes2 _contractName) external view returns (address payable contractAddress);
function upgradeMultipleContracts(
bytes2[] calldata _contractCodes,
address payable[] calldata newAddresses
) external;
function removeContracts(bytes2[] calldata contractCodesToRemove) external;
function addNewInternalContracts(
bytes2[] calldata _contractCodes,
address payable[] calldata newAddresses,
uint[] calldata _types
) external;
function updateOwnerParameters(bytes8 code, address payable val) external;
}// SPDX-License-Identifier: GPL-3.0-only
pragma solidity >=0.5.0;
interface IPriceFeedOracle {
function daiAddress() external view returns (address);
function stETH() external view returns (address);
function ETH() external view returns (address);
function getAssetToEthRate(address asset) external view returns (uint);
function getAssetForEth(address asset, uint ethIn) external view returns (uint);
}{
"optimizer": {
"enabled": true,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":false,"inputs":[{"internalType":"uint256[]","name":"coverDetails","type":"uint256[]"},{"internalType":"uint16","name":"coverPeriod","type":"uint16"},{"internalType":"bytes4","name":"coverCurr","type":"bytes4"},{"internalType":"address","name":"smartCAdd","type":"address"},{"internalType":"uint8","name":"_v","type":"uint8"},{"internalType":"bytes32","name":"_r","type":"bytes32"},{"internalType":"bytes32","name":"_s","type":"bytes32"},{"internalType":"bool","name":"payWithNXM","type":"bool"},{"internalType":"string","name":"ipfsMetadata","type":"string"}],"name":"buyCoverWithMetadata","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"changeDependentContractAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"masterAddress","type":"address"}],"name":"changeMasterAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"coverMetadata","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cr","outputs":[{"internalType":"contract IClaimsReward","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address payable","name":"from","type":"address"},{"internalType":"address","name":"scAddress","type":"address"},{"internalType":"bytes4","name":"currency","type":"bytes4"},{"internalType":"uint256[]","name":"coverDetails","type":"uint256[]"},{"internalType":"uint16","name":"coverPeriod","type":"uint16"},{"internalType":"uint8","name":"_v","type":"uint8"},{"internalType":"bytes32","name":"_r","type":"bytes32"},{"internalType":"bytes32","name":"_s","type":"bytes32"}],"name":"createCover","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"coverId","type":"uint256"}],"name":"expireCover","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256[]","name":"coverDetails","type":"uint256[]"},{"internalType":"uint16","name":"coverPeriod","type":"uint16"},{"internalType":"bytes4","name":"currency","type":"bytes4"},{"internalType":"address","name":"contractAddress","type":"address"}],"name":"getOrderHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"coverOwner","type":"address"}],"name":"getWithdrawableCoverNoteCoverIds","outputs":[{"internalType":"uint256[]","name":"expiredCoverIds","type":"uint256[]"},{"internalType":"bytes32[]","name":"lockReasons","type":"bytes32[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"coverOwner","type":"address"}],"name":"getWithdrawableCoverNotesAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"incidents","outputs":[{"internalType":"contract IIncidents","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"isValidSignature","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256[]","name":"coverDetails","type":"uint256[]"},{"internalType":"uint16","name":"coverPeriod","type":"uint16"},{"internalType":"bytes4","name":"coverCurr","type":"bytes4"},{"internalType":"address","name":"smartCAdd","type":"address"},{"internalType":"uint8","name":"_v","type":"uint8"},{"internalType":"bytes32","name":"_r","type":"bytes32"},{"internalType":"bytes32","name":"_s","type":"bytes32"}],"name":"makeCoverUsingNXMTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"master","outputs":[{"internalType":"contract INXMMaster","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pool","outputs":[{"internalType":"contract IPool","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pooledStaking","outputs":[{"internalType":"contract IPooledStaking","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"qd","outputs":[{"internalType":"contract IQuotationData","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"sendEther","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"tc","outputs":[{"internalType":"contract ITokenController","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"td","outputs":[{"internalType":"contract ITokenData","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"transferAssetsToNewContract","outputs":[],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"internalType":"address payable","name":"from","type":"address"},{"internalType":"address","name":"scAddress","type":"address"},{"internalType":"bytes4","name":"coverCurr","type":"bytes4"},{"internalType":"uint256[]","name":"coverDetails","type":"uint256[]"},{"internalType":"uint16","name":"coverPeriod","type":"uint16"},{"internalType":"uint8","name":"_v","type":"uint8"},{"internalType":"bytes32","name":"_r","type":"bytes32"},{"internalType":"bytes32","name":"_s","type":"bytes32"}],"name":"verifyCoverDetails","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256[]","name":"coverDetails","type":"uint256[]"},{"internalType":"uint16","name":"coverPeriod","type":"uint16"},{"internalType":"bytes4","name":"currency","type":"bytes4"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint8","name":"_v","type":"uint8"},{"internalType":"bytes32","name":"_r","type":"bytes32"},{"internalType":"bytes32","name":"_s","type":"bytes32"}],"name":"verifySignature","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"coverOwner","type":"address"},{"internalType":"uint256[]","name":"coverIds","type":"uint256[]"},{"internalType":"uint256[]","name":"reasonIndexes","type":"uint256[]"}],"name":"withdrawCoverNote","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60806040526000805460ff60a01b1916600160a01b179055613b2f806100266000396000f3fe60806040526004361061014b5760003560e01c80638b257d3d116100b6578063d46655f41161006f578063d46655f4146109ee578063da3ca8b514610a21578063e262997414610a36578063ee97f7f314610a69578063f4136f7f14610a7e578063f6420e1514610aa85761014b565b80638b257d3d146106885780639b92c7fd146106db578063a3ffac0d146107c0578063b1d6ed0c146107d5578063b87ea891146108d9578063d077e3b11461091e5761014b565b80634ae0d08c116101085780634ae0d08c146103815780634b227336146104205780635afd9ee31461043557806362eb33e31461050157806363f0b1571461051657806379c84328146105d55761014b565b8063026c0b5f146101505780630e29df221461022d5780630ea9c98414610235578063133663f91461024a57806316f0115b1461027b5780634a17847214610290575b600080fd5b34801561015c57600080fd5b5061022b6004803603606081101561017357600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561019d57600080fd5b8201836020820111156101af57600080fd5b803590602001918460208302840111600160201b831117156101d057600080fd5b919390929091602081019035600160201b8111156101ed57600080fd5b8201836020820111156101ff57600080fd5b803590602001918460208302840111600160201b8311171561022057600080fd5b509092509050610abd565b005b61022b610cf5565b34801561024157600080fd5b5061022b610cf7565b34801561025657600080fd5b5061025f61119f565b604080516001600160a01b039092168252519081900360200190f35b34801561028757600080fd5b5061025f6111ae565b34801561029c57600080fd5b5061022b60048036036101008110156102b457600080fd5b6001600160a01b0382358116926020810135909116916001600160e01b03196040830135169190810190608081016060820135600160201b8111156102f857600080fd5b82018360208201111561030a57600080fd5b803590602001918460208302840111600160201b8311171561032b57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505061ffff83351693505060ff6020830135169160408101359150606001356111bd565b34801561038d57600080fd5b506103ab600480360360208110156103a457600080fd5b503561128b565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103e55781810151838201526020016103cd565b50505050905090810190601f1680156104125780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561042c57600080fd5b5061025f611326565b34801561044157600080fd5b506104686004803603602081101561045857600080fd5b50356001600160a01b0316611335565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156104ac578181015183820152602001610494565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156104eb5781810151838201526020016104d3565b5050505090500194505050505060405180910390f35b34801561050d57600080fd5b5061025f6117b3565b34801561052257600080fd5b5061022b600480360361010081101561053a57600080fd5b6001600160a01b0382358116926020810135909116916001600160e01b03196040830135169190810190608081016060820135600160201b81111561057e57600080fd5b82018360208201111561059057600080fd5b803590602001918460208302840111600160201b831117156105b157600080fd5b919350915061ffff8135169060ff60208201351690604081013590606001356117c2565b3480156105e157600080fd5b5061022b600480360360e08110156105f857600080fd5b810190602081018135600160201b81111561061257600080fd5b82018360208201111561062457600080fd5b803590602001918460208302840111600160201b8311171561064557600080fd5b919350915061ffff813516906001600160e01b0319602082013516906001600160a01b036040820135169060ff6060820135169060808101359060a00135611b62565b34801561069457600080fd5b506106c7600480360360808110156106ab57600080fd5b5080359060ff6020820135169060408101359060600135611dc9565b604080519115158252519081900360200190f35b3480156106e757600080fd5b506106c7600480360360e08110156106fe57600080fd5b810190602081018135600160201b81111561071857600080fd5b82018360208201111561072a57600080fd5b803590602001918460208302840111600160201b8311171561074b57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505061ffff8335169350506001600160e01b0319602083013516916001600160a01b03604082013516915060ff6060820135169060808101359060a00135611f5e565b3480156107cc57600080fd5b5061025f611f9c565b61022b60048036036101208110156107ec57600080fd5b810190602081018135600160201b81111561080657600080fd5b82018360208201111561081857600080fd5b803590602001918460208302840111600160201b8311171561083957600080fd5b9193909261ffff833516926001600160e01b0319602082013516926001600160a01b036040830135169260ff6060840135169260808101359260a08201359260c083013515159261010081019060e00135600160201b81111561089b57600080fd5b8201836020820111156108ad57600080fd5b803590602001918460018302840111600160201b831117156108ce57600080fd5b509092509050611fab565b3480156108e557600080fd5b5061090c600480360360208110156108fc57600080fd5b50356001600160a01b03166123de565b60408051918252519081900360200190f35b34801561092a57600080fd5b5061090c6004803603608081101561094157600080fd5b810190602081018135600160201b81111561095b57600080fd5b82018360208201111561096d57600080fd5b803590602001918460208302840111600160201b8311171561098e57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505050813561ffff1692505060208101356001600160e01b03191690604001356001600160a01b03166124c9565b3480156109fa57600080fd5b5061022b60048036036020811015610a1157600080fd5b50356001600160a01b03166125ca565b348015610a2d57600080fd5b5061025f612649565b348015610a4257600080fd5b5061022b60048036036020811015610a5957600080fd5b50356001600160a01b0316612658565b348015610a7557600080fd5b5061025f61265b565b348015610a8a57600080fd5b5061022b60048036036020811015610aa157600080fd5b503561266a565b348015610ab457600080fd5b5061025f612aae565b6005546040805163207638ad60e01b815290516000926001600160a01b03169163207638ad916004808301926020929190829003018186803b158015610b0257600080fd5b505afa158015610b16573d6000803e3d6000fd5b505050506040513d6020811015610b2c57600080fd5b5051905060005b84811015610c1a576004546000906001600160a01b031663711acf86888885818110610b5b57fe5b905060200201356040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610b9657600080fd5b505afa158015610baa573d6000803e3d6000fd5b505050506040513d6020811015610bc057600080fd5b5051905042610bd5828563ffffffff612abd16565b10610c115760405162461bcd60e51b81526004018080602001828103825260398152602001806139b76039913960400191505060405180910390fd5b50600101610b33565b5060055460405163026c0b5f60e01b81526001600160a01b038881166004830190815260606024840190815260648401899052919093169263026c0b5f928a928a928a928a928a92916044810190608401876020880280828437600083820152601f01601f19169091018481038352858152602090810191508690860280828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015610cd557600080fd5b505af1158015610ce9573d6000803e3d6000fd5b50505050505050505050565b565b600054604080516323c5b10760e21b815233600482015290516001600160a01b0390921691638f16c41c91602480820192602092909190829003018186803b158015610d4257600080fd5b505afa158015610d56573d6000803e3d6000fd5b505050506040513d6020811015610d6c57600080fd5b5051610da95760405162461bcd60e51b8152600401808060200182810382526022815260200180613aa66022913960400191505060405180910390fd5b600054604080516227050b60e31b81526121a960f11b600482015290516001600160a01b0390921691630138285891602480820192602092909190829003018186803b158015610df857600080fd5b505afa158015610e0c573d6000803e3d6000fd5b505050506040513d6020811015610e2257600080fd5b5051600180546001600160a01b0319166001600160a01b03928316179055600054604080516227050b60e31b815261503160f01b6004820152905191909216916301382858916024808301926020929190829003018186803b158015610e8757600080fd5b505afa158015610e9b573d6000803e3d6000fd5b505050506040513d6020811015610eb157600080fd5b5051600280546001600160a01b0319166001600160a01b03928316179055600054604080516227050b60e31b815261505360f01b6004820152905191909216916301382858916024808301926020929190829003018186803b158015610f1657600080fd5b505afa158015610f2a573d6000803e3d6000fd5b505050506040513d6020811015610f4057600080fd5b5051600380546001600160a01b0319166001600160a01b03928316179055600054604080516227050b60e31b815261145160f21b6004820152905191909216916301382858916024808301926020929190829003018186803b158015610fa557600080fd5b505afa158015610fb9573d6000803e3d6000fd5b505050506040513d6020811015610fcf57600080fd5b5051600480546001600160a01b0319166001600160a01b03928316178155600054604080516227050b60e31b815261544360f01b9381019390935251921691630138285891602480820192602092909190829003018186803b15801561103457600080fd5b505afa158015611048573d6000803e3d6000fd5b505050506040513d602081101561105e57600080fd5b5051600580546001600160a01b0319166001600160a01b03928316179055600054604080516227050b60e31b815261151160f21b6004820152905191909216916301382858916024808301926020929190829003018186803b1580156110c357600080fd5b505afa1580156110d7573d6000803e3d6000fd5b505050506040513d60208110156110ed57600080fd5b5051600680546001600160a01b0319166001600160a01b03928316179055600054604080516227050b60e31b815261494360f01b6004820152905191909216916301382858916024808301926020929190829003018186803b15801561115257600080fd5b505afa158015611166573d6000803e3d6000fd5b505050506040513d602081101561117c57600080fd5b5051600780546001600160a01b0319166001600160a01b03909216919091179055565b6003546001600160a01b031681565b6002546001600160a01b031681565b600054604080516323c5b10760e21b815233600482015290516001600160a01b0390921691638f16c41c91602480820192602092909190829003018186803b15801561120857600080fd5b505afa15801561121c573d6000803e3d6000fd5b505050506040513d602081101561123257600080fd5b505161126f5760405162461bcd60e51b8152600401808060200182810382526022815260200180613aa66022913960400191505060405180910390fd5b61128188888888888888886000612b20565b5050505050505050565b60086020908152600091825260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452909183018282801561131e5780601f106112f35761010080835404028352916020019161131e565b820191906000526020600020905b81548152906001019060200180831161130157829003601f168201915b505050505081565b6007546001600160a01b031681565b6004805460408051633f9f3eff60e21b81526001600160a01b038581169482019490945290516060938493849391169163fe7cfbfc91602480820192600092909190829003018186803b15801561138b57600080fd5b505afa15801561139f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156113c857600080fd5b8101908080516040519392919084600160201b8211156113e757600080fd5b9083019060208201858111156113fc57600080fd5b82518660208202830111600160201b8211171561141857600080fd5b82525081516020918201928201910280838360005b8381101561144557818101518382015260200161142d565b50505050905001604052505050905060608151604051908082528060200260200182016040528015611481578160200160208202803883390190505b5090506000600560009054906101000a90046001600160a01b03166001600160a01b031663207638ad6040518163ffffffff1660e01b815260040160206040518083038186803b1580156114d457600080fd5b505afa1580156114e8573d6000803e3d6000fd5b505050506040513d60208110156114fe57600080fd5b505190506000805b84518110156116945760045485516000916001600160a01b03169063711acf869088908590811061153357fe5b60200260200101516040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561156f57600080fd5b505afa158015611583573d6000803e3d6000fd5b505050506040513d602081101561159957600080fd5b5051905060006115af828663ffffffff612abd16565b60055488519192506000916001600160a01b03909116906322133fdd908a90879081106115d857fe5b60200260200101516040518263ffffffff1660e01b81526004018082815260200191505060606040518083038186803b15801561161457600080fd5b505afa158015611628573d6000803e3d6000fd5b505050506040513d606081101561163e57600080fd5b506020015190508015801561165257504282105b156116895787848151811061166357fe5b602002602001015187868151811061167757fe5b60209081029190910101526001909401935b505050600101611506565b50806040519080825280602002602001820160405280156116bf578160200160208202803883390190505b509550806040519080825280602002602001820160405280156116ec578160200160208202803883390190505b50945060005b818110156117a95783818151811061170657fe5b602002602001015187828151811061171a57fe5b6020026020010181815250508784828151811061173357fe5b602002602001015160405160200180806121a760f11b815250600201836001600160a01b03166001600160a01b031660601b8152601401828152602001925050506040516020818303038152906040528051906020012086828151811061179657fe5b60209081029190910101526001016116f2565b5050505050915091565b6001546001600160a01b031681565b600054604080516323c5b10760e21b815233600482015290516001600160a01b0390921691638f16c41c91602480820192602092909190829003018186803b15801561180d57600080fd5b505afa158015611821573d6000803e3d6000fd5b505050506040513d602081101561183757600080fd5b50516118745760405162461bcd60e51b8152600401808060200182810382526022815260200180613aa66022913960400191505060405180910390fd5b428686600381811061188257fe5b90506020020135116118db576040805162461bcd60e51b815260206004820152601c60248201527f51756f746174696f6e3a2051756f746520686173206578706972656400000000604482015290519081900360640190fd5b601e8461ffff16101580156118f6575061016d8461ffff1611155b6119315760405162461bcd60e51b8152600401808060200182810382526025815260200180613a126025913960400191505060405180910390fd5b600480546001600160a01b03169063922fd67f908890889081811061195257fe5b905060200201356040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561198d57600080fd5b505afa1580156119a1573d6000803e3d6000fd5b505050506040513d60208110156119b757600080fd5b505115611a0b576040805162461bcd60e51b815260206004820152601d60248201527f51756f746174696f6e3a2051756f746520616c72656164792075736564000000604482015290519081900360640190fd5b600480546001600160a01b0316906383fa95859088908890818110611a2c57fe5b905060200201356040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015611a6957600080fd5b505af1158015611a7d573d6000803e3d6000fd5b50505050611ac58686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508b91508c9050878787611f5e565b611b16576040805162461bcd60e51b815260206004820152601d60248201527f51756f746174696f6e3a207369676e6174757265206d69736d61746368000000604482015290519081900360640190fd5b611b578989898989808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508b9250612ef6915050565b505050505050505050565b6000546040805163288c314960e21b815233600482015290516001600160a01b039092169163a230c52491602480820192602092909190829003018186803b158015611bad57600080fd5b505afa158015611bc1573d6000803e3d6000fd5b505050506040513d6020811015611bd757600080fd5b5051611c23576040805162461bcd60e51b815260206004820152601660248201527521b0b63632b91034b9903737ba10309036b2b6b132b960511b604482015290519081900360640190fd5b6000809054906101000a90046001600160a01b03166001600160a01b031663ff0938a76040518163ffffffff1660e01b815260040160206040518083038186803b158015611c7057600080fd5b505afa158015611c84573d6000803e3d6000fd5b505050506040513d6020811015611c9a57600080fd5b505115611ce1576040805162461bcd60e51b815260206004820152601060248201526f14de5cdd195b481a5cc81c185d5cd95960821b604482015290519081900360640190fd5b6005546001600160a01b03166379cc6790338a8a6002818110611d0057fe5b905060200201356040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611d5657600080fd5b505af1158015611d6a573d6000803e3d6000fd5b505050506040513d6020811015611d8057600080fd5b5050604080516020898102828101820190935289825261128192339288928a928e918e9182918501908490808284376000920191909152508d92508a9150899050886001612b20565b600060606040518060400160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152509050600081876040516020018083805190602001908083835b60208310611e3b5780518252601f199092019160209182019101611e1c565b51815160209384036101000a600019018019909216911617905292019384525060408051808503815284830180835281519184019190912060009182905282860180845281905260ff8d166060870152608086018c905260a086018b90529151919650945060019360c08082019450601f19830192918290030190855afa158015611eca573d6000803e3d6000fd5b505060408051601f1981015160048054633a34eba760e21b845293519195506001600160a01b03909316935063e8d3ae9c92808301926020929190829003018186803b158015611f1957600080fd5b505afa158015611f2d573d6000803e3d6000fd5b505050506040513d6020811015611f4357600080fd5b50516001600160a01b03908116911614979650505050505050565b60006001600160a01b038516611f7357600080fd5b6000611f81898989896124c9565b9050611f8f81868686611dc9565b9998505050505050505050565b6006546001600160a01b031681565b6000546040805163288c314960e21b815233600482015290516001600160a01b039092169163a230c52491602480820192602092909190829003018186803b158015611ff657600080fd5b505afa15801561200a573d6000803e3d6000fd5b505050506040513d602081101561202057600080fd5b505161206c576040805162461bcd60e51b815260206004820152601660248201527521b0b63632b91034b9903737ba10309036b2b6b132b960511b604482015290519081900360640190fd5b6000809054906101000a90046001600160a01b03166001600160a01b031663ff0938a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156120b957600080fd5b505afa1580156120cd573d6000803e3d6000fd5b505050506040513d60208110156120e357600080fd5b50511561212a576040805162461bcd60e51b815260206004820152601060248201526f14de5cdd195b481a5cc81c185d5cd95960821b604482015290519081900360640190fd5b82156121d7576005546001600160a01b03166379cc6790338d8d600281811061214f57fe5b905060200201356040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156121a557600080fd5b505af11580156121b9573d6000803e3d6000fd5b505050506040513d60208110156121cf57600080fd5b506122d49050565b6208aa8960eb1b6001600160e01b0319891614156122d4578a8a60018181106121fc57fe5b9050602002013534146122405760405162461bcd60e51b815260040180806020018281038252602c815260200180613a58602c913960400191505060405180910390fd5b6002546040516000916001600160a01b03169034908381818185875af1925050503d806000811461228d576040519150601f19603f3d011682016040523d82523d6000602084013e612292565b606091505b50509050806122d25760405162461bcd60e51b81526004018080602001828103825260228152602001806139f06022913960400191505060405180910390fd5b505b61232633888a8e8e80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508d8b8b8b8b612b20565b60006123b36001600460009054906101000a90046001600160a01b03166001600160a01b03166367157ff06040518163ffffffff1660e01b815260040160206040518083038186803b15801561237b57600080fd5b505afa15801561238f573d6000803e3d6000fd5b505050506040513d60208110156123a557600080fd5b50519063ffffffff61371d16565b60008181526008602052604090209091506123cf9084846138f6565b50505050505050505050505050565b60008060606123ec84611335565b9150600090505b81518110156124c05760055482516000916001600160a01b031690635ca48d8c90889086908690811061242257fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b031681526020018281526020019250505060206040518083038186803b15801561247757600080fd5b505afa15801561248b573d6000803e3d6000fd5b505050506040513d60208110156124a157600080fd5b505190506124b5848263ffffffff612abd16565b9350506001016123f3565b50909392505050565b6000846000815181106124d857fe5b6020026020010151838584886001815181106124f057fe5b60200260200101518960028151811061250557fe5b60200260200101518a60038151811061251a57fe5b60200260200101518b60048151811061252f57fe5b602090810291909101810151604080518084019a909a526001600160e01b0319989098168989015260f09690961b6001600160f01b0319166044890152606094851b6bffffffffffffffffffffffff19166046890152605a880193909352607a870191909152609a86015260ba85019290925230901b60da840152815180840360ce01815260ee909301909152815191012095945050505050565b6000546001600160a01b031615612627576000546001600160a01b03163314612627576040805162461bcd60e51b815260206004820152600a6024820152692737ba1036b0b9ba32b960b11b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6004546001600160a01b031681565b50565b6000546001600160a01b031681565b600480546040805163388d67c360e11b8152928301849052516000926001600160a01b039092169163711acf86916024808301926020929190829003018186803b1580156126b757600080fd5b505afa1580156126cb573d6000803e3d6000fd5b505050506040513d60208110156126e157600080fd5b505190504281106127235760405162461bcd60e51b81526004018080602001828103825260258152602001806139926025913960400191505060405180910390fd5b6004805460408051634b2cc0a160e01b8152928301859052516000926001600160a01b0390921691634b2cc0a1916024808301926020929190829003018186803b15801561277057600080fd5b505afa158015612784573d6000803e3d6000fd5b505050506040513d602081101561279a57600080fd5b505160ff16905060038114156127f7576040805162461bcd60e51b815260206004820181905260248201527f51756f746174696f6e3a20636f76657220616c72656164792065787069726564604482015290519081900360640190fd5b600554604080516322133fdd60e01b81526004810186905290516000926001600160a01b0316916322133fdd916024808301926060929190829003018186803b15801561284357600080fd5b505afa158015612857573d6000803e3d6000fd5b505050506040513d606081101561286d57600080fd5b5060200151905080156128b15760405162461bcd60e51b8152600401808060200182810382526022815260200180613a846022913960400191505060405180910390fd5b60018214612a4857600480546040805163df09fea760e01b815292830187905251600092839283926001600160a01b039091169163df09fea79160248083019260c0929190829003018186803b15801561290a57600080fd5b505afa15801561291e573d6000803e3d6000fd5b505050506040513d60c081101561293457600080fd5b5060408082015160608301516080909301516004805484516360a230e760e01b81526001600160e01b031987169281019290925260248201839052935192975093955093506001600160a01b03909116916360a230e791604480830192600092919082900301818387803b1580156129ab57600080fd5b505af11580156129bf573d6000803e3d6000fd5b505060048054604080516340ebb05760e11b81526001600160a01b03898116948201949094526001600160e01b0319881660248201526044810187905290519290911693506381d760ae925060648082019260009290919082900301818387803b158015612a2c57600080fd5b505af1158015612a40573d6000803e3d6000fd5b505050505050505b600480546040805163570e2f6560e11b815292830187905260036024840152516001600160a01b039091169163ae1c5eca91604480830192600092919082900301818387803b158015612a9a57600080fd5b505af1158015611281573d6000803e3d6000fd5b6005546001600160a01b031681565b600082820183811015612b17576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b4286600381518110612b2e57fe5b602002602001015111612b88576040805162461bcd60e51b815260206004820152601c60248201527f51756f746174696f6e3a2051756f746520686173206578706972656400000000604482015290519081900360640190fd5b601e8561ffff1610158015612ba3575061016d8561ffff1611155b612bde5760405162461bcd60e51b8152600401808060200182810382526025815260200180613a126025913960400191505060405180910390fd5b6004805487516001600160a01b039091169163922fd67f918991908110612c0157fe5b60200260200101516040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612c3d57600080fd5b505afa158015612c51573d6000803e3d6000fd5b505050506040513d6020811015612c6757600080fd5b505115612cbb576040805162461bcd60e51b815260206004820152601d60248201527f51756f746174696f6e3a2051756f746520616c72656164792075736564000000604482015290519081900360640190fd5b6004805487516001600160a01b03909116916383fa9585918991908110612cde57fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015612d1c57600080fd5b505af1158015612d30573d6000803e3d6000fd5b50506001546040805163e3dee23960e01b81526001600160e01b03198c1660048201529051600094506001600160a01b03909216925063e3dee239916024808301926020929190829003018186803b158015612d8b57600080fd5b505afa158015612d9f573d6000803e3d6000fd5b505050506040513d6020811015612db557600080fd5b505190506208aa8960eb1b6001600160e01b0319891614801590612dd7575081155b15612e8d5760025487516001600160a01b039091169063d311afb49083908d908b906001908110612e0457fe5b60200260200101516040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b031681526020018281526020019350505050600060405180830381600087803b158015612e7457600080fd5b505af1158015612e88573d6000803e3d6000fd5b505050505b612e9c87878a8c898989611f5e565b612eed576040805162461bcd60e51b815260206004820152601d60248201527f51756f746174696f6e3a207369676e6174757265206d69736d61746368000000604482015290519081900360640190fd5b610ce98a8a8a8a8a5b6007546040805163f7480d3b60e01b81526001600160a01b0387811660048301529151600093929092169163f7480d3b91602480820192602092909190829003018186803b158015612f4757600080fd5b505afa158015612f5b573d6000803e3d6000fd5b505050506040513d6020811015612f7157600080fd5b505190506001600160a01b03811615613053576001546040805163e3dee23960e01b81526001600160e01b03198716600482015290516000926001600160a01b03169163e3dee239916024808301926020929190829003018186803b158015612fd957600080fd5b505afa158015612fed573d6000803e3d6000fd5b505050506040513d602081101561300357600080fd5b505190506001600160a01b03808216908316146130515760405162461bcd60e51b8152600401808060200182810382526033815260200180613ac86033913960400191505060405180910390fd5b505b6000600460009054906101000a90046001600160a01b03166001600160a01b03166367157ff06040518163ffffffff1660e01b815260040160206040518083038186803b1580156130a357600080fd5b505afa1580156130b7573d6000803e3d6000fd5b505050506040513d60208110156130cd57600080fd5b505160045485519192506001600160a01b031690638ce80a6590859087906000906130f457fe5b60200260200101518a898b8a60018151811061310c57fe5b60200260200101518b60028151811061312157fe5b60200260200101516040518863ffffffff1660e01b8152600401808861ffff1661ffff168152602001878152602001866001600160a01b03166001600160a01b03168152602001856001600160e01b0319166001600160e01b0319168152602001846001600160a01b03166001600160a01b03168152602001838152602001828152602001975050505050505050600060405180830381600087803b1580156131c957600080fd5b505af11580156131dd573d6000803e3d6000fd5b50506004805460408051633ceac9b360e21b815290516000955061328b945060649361327f936001600160a01b03169263f3ab26cc9281830192602092829003018186803b15801561322e57600080fd5b505afa158015613242573d6000803e3d6000fd5b505050506040513d602081101561325857600080fd5b505188518990600290811061326957fe5b602002602001015161375f90919063ffffffff16565b9063ffffffff6137b816565b90506000600560009054906101000a90046001600160a01b03166001600160a01b031663207638ad6040518163ffffffff1660e01b815260040160206040518083038186803b1580156132dd57600080fd5b505afa1580156132f1573d6000803e3d6000fd5b505050506040513d602081101561330757600080fd5b5051905060006133348261332861ffff89166201518063ffffffff61375f16565b9063ffffffff612abd16565b604080516121a760f11b60208083019190915260608e901b6bffffffffffffffffffffffff191660228301526036808301899052835180840390910181526056830180855281519190920120600654634e71865960e01b909252605a8301899052607a8301889052925193945091926001600160a01b0390921691634e71865991609a8082019260009290919082900301818387803b1580156133d657600080fd5b505af11580156133ea573d6000803e3d6000fd5b50505050600560009054906101000a90046001600160a01b03166001600160a01b031663c5facba28c8387866040518563ffffffff1660e01b815260040180856001600160a01b03166001600160a01b03168152602001848152602001838152602001828152602001945050505050600060405180830381600087803b15801561347357600080fd5b505af1158015613487573d6000803e3d6000fd5b50506004548a516001600160a01b03909116925063a2c6bc2591508b908b906000906134af57fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160e01b0319166001600160e01b031916815260200182815260200192505050600060405180830381600087803b15801561350857600080fd5b505af115801561351c573d6000803e3d6000fd5b50506004548a516001600160a01b039091169250633994b3d591508c908c908c9060009061354657fe5b60200260200101516040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b03168152602001836001600160e01b0319166001600160e01b03191681526020018281526020019350505050600060405180830381600087803b1580156135b857600080fd5b505af11580156135cc573d6000803e3d6000fd5b505050506000886002815181106135df57fe5b602002602001015190506000600660009054906101000a90046001600160a01b03166001600160a01b031663e22648506040518163ffffffff1660e01b815260040160206040518083038186803b15801561363957600080fd5b505afa15801561364d573d6000803e3d6000fd5b505050506040513d602081101561366357600080fd5b50519050600061367e606461327f858563ffffffff61375f16565b9050600360009054906101000a90046001600160a01b03166001600160a01b031663f0f923c08e836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156136f557600080fd5b505af1158015613709573d6000803e3d6000fd5b505050505050505050505050505050505050565b6000612b1783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506137fa565b60008261376e57506000612b1a565b8282028284828161377b57fe5b0414612b175760405162461bcd60e51b8152600401808060200182810382526021815260200180613a376021913960400191505060405180910390fd5b6000612b1783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613891565b600081848411156138895760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561384e578181015183820152602001613836565b50505050905090810190601f16801561387b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600081836138e05760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561384e578181015183820152602001613836565b5060008385816138ec57fe5b0495945050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106139375782800160ff19823516178555613964565b82800160010185558215613964579182015b82811115613964578235825591602001919060010190613949565b50613970929150613974565b5090565b61398e91905b80821115613970576000815560010161397a565b9056fe51756f746174696f6e3a20636f766572206973206e6f742064756520746f2065787069726551756f746174696f6e3a2063616e6e6f74207769746864726177206265666f726520677261636520706572696f642065787069726174696f6e51756f746174696f6e3a205472616e7366657220746f20506f6f6c206661696c656451756f746174696f6e3a20436f76657220706572696f64206f7574206f6620626f756e6473536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7751756f746174696f6e3a2045544820616d6f756e7420646f6573206e6f74206d61746368207072656d69756d51756f746174696f6e3a20636f7665722068617320616e206f70656e20636c61696d43616c6c6572206973206e6f7420616e20696e7465726e616c20636f6e747261637451756f746174696f6e3a20556e737570706f7274656420636f76657220617373657420666f7220746869732070726f64756374a265627a7a723158206cf0b8c2d04bec4f1bac9cb1d61bbd757c4b9fab033b161c019af1b6e000343064736f6c63430005110032
Deployed Bytecode
0x60806040526004361061014b5760003560e01c80638b257d3d116100b6578063d46655f41161006f578063d46655f4146109ee578063da3ca8b514610a21578063e262997414610a36578063ee97f7f314610a69578063f4136f7f14610a7e578063f6420e1514610aa85761014b565b80638b257d3d146106885780639b92c7fd146106db578063a3ffac0d146107c0578063b1d6ed0c146107d5578063b87ea891146108d9578063d077e3b11461091e5761014b565b80634ae0d08c116101085780634ae0d08c146103815780634b227336146104205780635afd9ee31461043557806362eb33e31461050157806363f0b1571461051657806379c84328146105d55761014b565b8063026c0b5f146101505780630e29df221461022d5780630ea9c98414610235578063133663f91461024a57806316f0115b1461027b5780634a17847214610290575b600080fd5b34801561015c57600080fd5b5061022b6004803603606081101561017357600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561019d57600080fd5b8201836020820111156101af57600080fd5b803590602001918460208302840111600160201b831117156101d057600080fd5b919390929091602081019035600160201b8111156101ed57600080fd5b8201836020820111156101ff57600080fd5b803590602001918460208302840111600160201b8311171561022057600080fd5b509092509050610abd565b005b61022b610cf5565b34801561024157600080fd5b5061022b610cf7565b34801561025657600080fd5b5061025f61119f565b604080516001600160a01b039092168252519081900360200190f35b34801561028757600080fd5b5061025f6111ae565b34801561029c57600080fd5b5061022b60048036036101008110156102b457600080fd5b6001600160a01b0382358116926020810135909116916001600160e01b03196040830135169190810190608081016060820135600160201b8111156102f857600080fd5b82018360208201111561030a57600080fd5b803590602001918460208302840111600160201b8311171561032b57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505061ffff83351693505060ff6020830135169160408101359150606001356111bd565b34801561038d57600080fd5b506103ab600480360360208110156103a457600080fd5b503561128b565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103e55781810151838201526020016103cd565b50505050905090810190601f1680156104125780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561042c57600080fd5b5061025f611326565b34801561044157600080fd5b506104686004803603602081101561045857600080fd5b50356001600160a01b0316611335565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156104ac578181015183820152602001610494565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156104eb5781810151838201526020016104d3565b5050505090500194505050505060405180910390f35b34801561050d57600080fd5b5061025f6117b3565b34801561052257600080fd5b5061022b600480360361010081101561053a57600080fd5b6001600160a01b0382358116926020810135909116916001600160e01b03196040830135169190810190608081016060820135600160201b81111561057e57600080fd5b82018360208201111561059057600080fd5b803590602001918460208302840111600160201b831117156105b157600080fd5b919350915061ffff8135169060ff60208201351690604081013590606001356117c2565b3480156105e157600080fd5b5061022b600480360360e08110156105f857600080fd5b810190602081018135600160201b81111561061257600080fd5b82018360208201111561062457600080fd5b803590602001918460208302840111600160201b8311171561064557600080fd5b919350915061ffff813516906001600160e01b0319602082013516906001600160a01b036040820135169060ff6060820135169060808101359060a00135611b62565b34801561069457600080fd5b506106c7600480360360808110156106ab57600080fd5b5080359060ff6020820135169060408101359060600135611dc9565b604080519115158252519081900360200190f35b3480156106e757600080fd5b506106c7600480360360e08110156106fe57600080fd5b810190602081018135600160201b81111561071857600080fd5b82018360208201111561072a57600080fd5b803590602001918460208302840111600160201b8311171561074b57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505061ffff8335169350506001600160e01b0319602083013516916001600160a01b03604082013516915060ff6060820135169060808101359060a00135611f5e565b3480156107cc57600080fd5b5061025f611f9c565b61022b60048036036101208110156107ec57600080fd5b810190602081018135600160201b81111561080657600080fd5b82018360208201111561081857600080fd5b803590602001918460208302840111600160201b8311171561083957600080fd5b9193909261ffff833516926001600160e01b0319602082013516926001600160a01b036040830135169260ff6060840135169260808101359260a08201359260c083013515159261010081019060e00135600160201b81111561089b57600080fd5b8201836020820111156108ad57600080fd5b803590602001918460018302840111600160201b831117156108ce57600080fd5b509092509050611fab565b3480156108e557600080fd5b5061090c600480360360208110156108fc57600080fd5b50356001600160a01b03166123de565b60408051918252519081900360200190f35b34801561092a57600080fd5b5061090c6004803603608081101561094157600080fd5b810190602081018135600160201b81111561095b57600080fd5b82018360208201111561096d57600080fd5b803590602001918460208302840111600160201b8311171561098e57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505050813561ffff1692505060208101356001600160e01b03191690604001356001600160a01b03166124c9565b3480156109fa57600080fd5b5061022b60048036036020811015610a1157600080fd5b50356001600160a01b03166125ca565b348015610a2d57600080fd5b5061025f612649565b348015610a4257600080fd5b5061022b60048036036020811015610a5957600080fd5b50356001600160a01b0316612658565b348015610a7557600080fd5b5061025f61265b565b348015610a8a57600080fd5b5061022b60048036036020811015610aa157600080fd5b503561266a565b348015610ab457600080fd5b5061025f612aae565b6005546040805163207638ad60e01b815290516000926001600160a01b03169163207638ad916004808301926020929190829003018186803b158015610b0257600080fd5b505afa158015610b16573d6000803e3d6000fd5b505050506040513d6020811015610b2c57600080fd5b5051905060005b84811015610c1a576004546000906001600160a01b031663711acf86888885818110610b5b57fe5b905060200201356040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610b9657600080fd5b505afa158015610baa573d6000803e3d6000fd5b505050506040513d6020811015610bc057600080fd5b5051905042610bd5828563ffffffff612abd16565b10610c115760405162461bcd60e51b81526004018080602001828103825260398152602001806139b76039913960400191505060405180910390fd5b50600101610b33565b5060055460405163026c0b5f60e01b81526001600160a01b038881166004830190815260606024840190815260648401899052919093169263026c0b5f928a928a928a928a928a92916044810190608401876020880280828437600083820152601f01601f19169091018481038352858152602090810191508690860280828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015610cd557600080fd5b505af1158015610ce9573d6000803e3d6000fd5b50505050505050505050565b565b600054604080516323c5b10760e21b815233600482015290516001600160a01b0390921691638f16c41c91602480820192602092909190829003018186803b158015610d4257600080fd5b505afa158015610d56573d6000803e3d6000fd5b505050506040513d6020811015610d6c57600080fd5b5051610da95760405162461bcd60e51b8152600401808060200182810382526022815260200180613aa66022913960400191505060405180910390fd5b600054604080516227050b60e31b81526121a960f11b600482015290516001600160a01b0390921691630138285891602480820192602092909190829003018186803b158015610df857600080fd5b505afa158015610e0c573d6000803e3d6000fd5b505050506040513d6020811015610e2257600080fd5b5051600180546001600160a01b0319166001600160a01b03928316179055600054604080516227050b60e31b815261503160f01b6004820152905191909216916301382858916024808301926020929190829003018186803b158015610e8757600080fd5b505afa158015610e9b573d6000803e3d6000fd5b505050506040513d6020811015610eb157600080fd5b5051600280546001600160a01b0319166001600160a01b03928316179055600054604080516227050b60e31b815261505360f01b6004820152905191909216916301382858916024808301926020929190829003018186803b158015610f1657600080fd5b505afa158015610f2a573d6000803e3d6000fd5b505050506040513d6020811015610f4057600080fd5b5051600380546001600160a01b0319166001600160a01b03928316179055600054604080516227050b60e31b815261145160f21b6004820152905191909216916301382858916024808301926020929190829003018186803b158015610fa557600080fd5b505afa158015610fb9573d6000803e3d6000fd5b505050506040513d6020811015610fcf57600080fd5b5051600480546001600160a01b0319166001600160a01b03928316178155600054604080516227050b60e31b815261544360f01b9381019390935251921691630138285891602480820192602092909190829003018186803b15801561103457600080fd5b505afa158015611048573d6000803e3d6000fd5b505050506040513d602081101561105e57600080fd5b5051600580546001600160a01b0319166001600160a01b03928316179055600054604080516227050b60e31b815261151160f21b6004820152905191909216916301382858916024808301926020929190829003018186803b1580156110c357600080fd5b505afa1580156110d7573d6000803e3d6000fd5b505050506040513d60208110156110ed57600080fd5b5051600680546001600160a01b0319166001600160a01b03928316179055600054604080516227050b60e31b815261494360f01b6004820152905191909216916301382858916024808301926020929190829003018186803b15801561115257600080fd5b505afa158015611166573d6000803e3d6000fd5b505050506040513d602081101561117c57600080fd5b5051600780546001600160a01b0319166001600160a01b03909216919091179055565b6003546001600160a01b031681565b6002546001600160a01b031681565b600054604080516323c5b10760e21b815233600482015290516001600160a01b0390921691638f16c41c91602480820192602092909190829003018186803b15801561120857600080fd5b505afa15801561121c573d6000803e3d6000fd5b505050506040513d602081101561123257600080fd5b505161126f5760405162461bcd60e51b8152600401808060200182810382526022815260200180613aa66022913960400191505060405180910390fd5b61128188888888888888886000612b20565b5050505050505050565b60086020908152600091825260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452909183018282801561131e5780601f106112f35761010080835404028352916020019161131e565b820191906000526020600020905b81548152906001019060200180831161130157829003601f168201915b505050505081565b6007546001600160a01b031681565b6004805460408051633f9f3eff60e21b81526001600160a01b038581169482019490945290516060938493849391169163fe7cfbfc91602480820192600092909190829003018186803b15801561138b57600080fd5b505afa15801561139f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156113c857600080fd5b8101908080516040519392919084600160201b8211156113e757600080fd5b9083019060208201858111156113fc57600080fd5b82518660208202830111600160201b8211171561141857600080fd5b82525081516020918201928201910280838360005b8381101561144557818101518382015260200161142d565b50505050905001604052505050905060608151604051908082528060200260200182016040528015611481578160200160208202803883390190505b5090506000600560009054906101000a90046001600160a01b03166001600160a01b031663207638ad6040518163ffffffff1660e01b815260040160206040518083038186803b1580156114d457600080fd5b505afa1580156114e8573d6000803e3d6000fd5b505050506040513d60208110156114fe57600080fd5b505190506000805b84518110156116945760045485516000916001600160a01b03169063711acf869088908590811061153357fe5b60200260200101516040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561156f57600080fd5b505afa158015611583573d6000803e3d6000fd5b505050506040513d602081101561159957600080fd5b5051905060006115af828663ffffffff612abd16565b60055488519192506000916001600160a01b03909116906322133fdd908a90879081106115d857fe5b60200260200101516040518263ffffffff1660e01b81526004018082815260200191505060606040518083038186803b15801561161457600080fd5b505afa158015611628573d6000803e3d6000fd5b505050506040513d606081101561163e57600080fd5b506020015190508015801561165257504282105b156116895787848151811061166357fe5b602002602001015187868151811061167757fe5b60209081029190910101526001909401935b505050600101611506565b50806040519080825280602002602001820160405280156116bf578160200160208202803883390190505b509550806040519080825280602002602001820160405280156116ec578160200160208202803883390190505b50945060005b818110156117a95783818151811061170657fe5b602002602001015187828151811061171a57fe5b6020026020010181815250508784828151811061173357fe5b602002602001015160405160200180806121a760f11b815250600201836001600160a01b03166001600160a01b031660601b8152601401828152602001925050506040516020818303038152906040528051906020012086828151811061179657fe5b60209081029190910101526001016116f2565b5050505050915091565b6001546001600160a01b031681565b600054604080516323c5b10760e21b815233600482015290516001600160a01b0390921691638f16c41c91602480820192602092909190829003018186803b15801561180d57600080fd5b505afa158015611821573d6000803e3d6000fd5b505050506040513d602081101561183757600080fd5b50516118745760405162461bcd60e51b8152600401808060200182810382526022815260200180613aa66022913960400191505060405180910390fd5b428686600381811061188257fe5b90506020020135116118db576040805162461bcd60e51b815260206004820152601c60248201527f51756f746174696f6e3a2051756f746520686173206578706972656400000000604482015290519081900360640190fd5b601e8461ffff16101580156118f6575061016d8461ffff1611155b6119315760405162461bcd60e51b8152600401808060200182810382526025815260200180613a126025913960400191505060405180910390fd5b600480546001600160a01b03169063922fd67f908890889081811061195257fe5b905060200201356040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561198d57600080fd5b505afa1580156119a1573d6000803e3d6000fd5b505050506040513d60208110156119b757600080fd5b505115611a0b576040805162461bcd60e51b815260206004820152601d60248201527f51756f746174696f6e3a2051756f746520616c72656164792075736564000000604482015290519081900360640190fd5b600480546001600160a01b0316906383fa95859088908890818110611a2c57fe5b905060200201356040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015611a6957600080fd5b505af1158015611a7d573d6000803e3d6000fd5b50505050611ac58686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508b91508c9050878787611f5e565b611b16576040805162461bcd60e51b815260206004820152601d60248201527f51756f746174696f6e3a207369676e6174757265206d69736d61746368000000604482015290519081900360640190fd5b611b578989898989808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508b9250612ef6915050565b505050505050505050565b6000546040805163288c314960e21b815233600482015290516001600160a01b039092169163a230c52491602480820192602092909190829003018186803b158015611bad57600080fd5b505afa158015611bc1573d6000803e3d6000fd5b505050506040513d6020811015611bd757600080fd5b5051611c23576040805162461bcd60e51b815260206004820152601660248201527521b0b63632b91034b9903737ba10309036b2b6b132b960511b604482015290519081900360640190fd5b6000809054906101000a90046001600160a01b03166001600160a01b031663ff0938a76040518163ffffffff1660e01b815260040160206040518083038186803b158015611c7057600080fd5b505afa158015611c84573d6000803e3d6000fd5b505050506040513d6020811015611c9a57600080fd5b505115611ce1576040805162461bcd60e51b815260206004820152601060248201526f14de5cdd195b481a5cc81c185d5cd95960821b604482015290519081900360640190fd5b6005546001600160a01b03166379cc6790338a8a6002818110611d0057fe5b905060200201356040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611d5657600080fd5b505af1158015611d6a573d6000803e3d6000fd5b505050506040513d6020811015611d8057600080fd5b5050604080516020898102828101820190935289825261128192339288928a928e918e9182918501908490808284376000920191909152508d92508a9150899050886001612b20565b600060606040518060400160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152509050600081876040516020018083805190602001908083835b60208310611e3b5780518252601f199092019160209182019101611e1c565b51815160209384036101000a600019018019909216911617905292019384525060408051808503815284830180835281519184019190912060009182905282860180845281905260ff8d166060870152608086018c905260a086018b90529151919650945060019360c08082019450601f19830192918290030190855afa158015611eca573d6000803e3d6000fd5b505060408051601f1981015160048054633a34eba760e21b845293519195506001600160a01b03909316935063e8d3ae9c92808301926020929190829003018186803b158015611f1957600080fd5b505afa158015611f2d573d6000803e3d6000fd5b505050506040513d6020811015611f4357600080fd5b50516001600160a01b03908116911614979650505050505050565b60006001600160a01b038516611f7357600080fd5b6000611f81898989896124c9565b9050611f8f81868686611dc9565b9998505050505050505050565b6006546001600160a01b031681565b6000546040805163288c314960e21b815233600482015290516001600160a01b039092169163a230c52491602480820192602092909190829003018186803b158015611ff657600080fd5b505afa15801561200a573d6000803e3d6000fd5b505050506040513d602081101561202057600080fd5b505161206c576040805162461bcd60e51b815260206004820152601660248201527521b0b63632b91034b9903737ba10309036b2b6b132b960511b604482015290519081900360640190fd5b6000809054906101000a90046001600160a01b03166001600160a01b031663ff0938a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156120b957600080fd5b505afa1580156120cd573d6000803e3d6000fd5b505050506040513d60208110156120e357600080fd5b50511561212a576040805162461bcd60e51b815260206004820152601060248201526f14de5cdd195b481a5cc81c185d5cd95960821b604482015290519081900360640190fd5b82156121d7576005546001600160a01b03166379cc6790338d8d600281811061214f57fe5b905060200201356040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156121a557600080fd5b505af11580156121b9573d6000803e3d6000fd5b505050506040513d60208110156121cf57600080fd5b506122d49050565b6208aa8960eb1b6001600160e01b0319891614156122d4578a8a60018181106121fc57fe5b9050602002013534146122405760405162461bcd60e51b815260040180806020018281038252602c815260200180613a58602c913960400191505060405180910390fd5b6002546040516000916001600160a01b03169034908381818185875af1925050503d806000811461228d576040519150601f19603f3d011682016040523d82523d6000602084013e612292565b606091505b50509050806122d25760405162461bcd60e51b81526004018080602001828103825260228152602001806139f06022913960400191505060405180910390fd5b505b61232633888a8e8e80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508d8b8b8b8b612b20565b60006123b36001600460009054906101000a90046001600160a01b03166001600160a01b03166367157ff06040518163ffffffff1660e01b815260040160206040518083038186803b15801561237b57600080fd5b505afa15801561238f573d6000803e3d6000fd5b505050506040513d60208110156123a557600080fd5b50519063ffffffff61371d16565b60008181526008602052604090209091506123cf9084846138f6565b50505050505050505050505050565b60008060606123ec84611335565b9150600090505b81518110156124c05760055482516000916001600160a01b031690635ca48d8c90889086908690811061242257fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b031681526020018281526020019250505060206040518083038186803b15801561247757600080fd5b505afa15801561248b573d6000803e3d6000fd5b505050506040513d60208110156124a157600080fd5b505190506124b5848263ffffffff612abd16565b9350506001016123f3565b50909392505050565b6000846000815181106124d857fe5b6020026020010151838584886001815181106124f057fe5b60200260200101518960028151811061250557fe5b60200260200101518a60038151811061251a57fe5b60200260200101518b60048151811061252f57fe5b602090810291909101810151604080518084019a909a526001600160e01b0319989098168989015260f09690961b6001600160f01b0319166044890152606094851b6bffffffffffffffffffffffff19166046890152605a880193909352607a870191909152609a86015260ba85019290925230901b60da840152815180840360ce01815260ee909301909152815191012095945050505050565b6000546001600160a01b031615612627576000546001600160a01b03163314612627576040805162461bcd60e51b815260206004820152600a6024820152692737ba1036b0b9ba32b960b11b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6004546001600160a01b031681565b50565b6000546001600160a01b031681565b600480546040805163388d67c360e11b8152928301849052516000926001600160a01b039092169163711acf86916024808301926020929190829003018186803b1580156126b757600080fd5b505afa1580156126cb573d6000803e3d6000fd5b505050506040513d60208110156126e157600080fd5b505190504281106127235760405162461bcd60e51b81526004018080602001828103825260258152602001806139926025913960400191505060405180910390fd5b6004805460408051634b2cc0a160e01b8152928301859052516000926001600160a01b0390921691634b2cc0a1916024808301926020929190829003018186803b15801561277057600080fd5b505afa158015612784573d6000803e3d6000fd5b505050506040513d602081101561279a57600080fd5b505160ff16905060038114156127f7576040805162461bcd60e51b815260206004820181905260248201527f51756f746174696f6e3a20636f76657220616c72656164792065787069726564604482015290519081900360640190fd5b600554604080516322133fdd60e01b81526004810186905290516000926001600160a01b0316916322133fdd916024808301926060929190829003018186803b15801561284357600080fd5b505afa158015612857573d6000803e3d6000fd5b505050506040513d606081101561286d57600080fd5b5060200151905080156128b15760405162461bcd60e51b8152600401808060200182810382526022815260200180613a846022913960400191505060405180910390fd5b60018214612a4857600480546040805163df09fea760e01b815292830187905251600092839283926001600160a01b039091169163df09fea79160248083019260c0929190829003018186803b15801561290a57600080fd5b505afa15801561291e573d6000803e3d6000fd5b505050506040513d60c081101561293457600080fd5b5060408082015160608301516080909301516004805484516360a230e760e01b81526001600160e01b031987169281019290925260248201839052935192975093955093506001600160a01b03909116916360a230e791604480830192600092919082900301818387803b1580156129ab57600080fd5b505af11580156129bf573d6000803e3d6000fd5b505060048054604080516340ebb05760e11b81526001600160a01b03898116948201949094526001600160e01b0319881660248201526044810187905290519290911693506381d760ae925060648082019260009290919082900301818387803b158015612a2c57600080fd5b505af1158015612a40573d6000803e3d6000fd5b505050505050505b600480546040805163570e2f6560e11b815292830187905260036024840152516001600160a01b039091169163ae1c5eca91604480830192600092919082900301818387803b158015612a9a57600080fd5b505af1158015611281573d6000803e3d6000fd5b6005546001600160a01b031681565b600082820183811015612b17576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b4286600381518110612b2e57fe5b602002602001015111612b88576040805162461bcd60e51b815260206004820152601c60248201527f51756f746174696f6e3a2051756f746520686173206578706972656400000000604482015290519081900360640190fd5b601e8561ffff1610158015612ba3575061016d8561ffff1611155b612bde5760405162461bcd60e51b8152600401808060200182810382526025815260200180613a126025913960400191505060405180910390fd5b6004805487516001600160a01b039091169163922fd67f918991908110612c0157fe5b60200260200101516040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612c3d57600080fd5b505afa158015612c51573d6000803e3d6000fd5b505050506040513d6020811015612c6757600080fd5b505115612cbb576040805162461bcd60e51b815260206004820152601d60248201527f51756f746174696f6e3a2051756f746520616c72656164792075736564000000604482015290519081900360640190fd5b6004805487516001600160a01b03909116916383fa9585918991908110612cde57fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015612d1c57600080fd5b505af1158015612d30573d6000803e3d6000fd5b50506001546040805163e3dee23960e01b81526001600160e01b03198c1660048201529051600094506001600160a01b03909216925063e3dee239916024808301926020929190829003018186803b158015612d8b57600080fd5b505afa158015612d9f573d6000803e3d6000fd5b505050506040513d6020811015612db557600080fd5b505190506208aa8960eb1b6001600160e01b0319891614801590612dd7575081155b15612e8d5760025487516001600160a01b039091169063d311afb49083908d908b906001908110612e0457fe5b60200260200101516040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b031681526020018281526020019350505050600060405180830381600087803b158015612e7457600080fd5b505af1158015612e88573d6000803e3d6000fd5b505050505b612e9c87878a8c898989611f5e565b612eed576040805162461bcd60e51b815260206004820152601d60248201527f51756f746174696f6e3a207369676e6174757265206d69736d61746368000000604482015290519081900360640190fd5b610ce98a8a8a8a8a5b6007546040805163f7480d3b60e01b81526001600160a01b0387811660048301529151600093929092169163f7480d3b91602480820192602092909190829003018186803b158015612f4757600080fd5b505afa158015612f5b573d6000803e3d6000fd5b505050506040513d6020811015612f7157600080fd5b505190506001600160a01b03811615613053576001546040805163e3dee23960e01b81526001600160e01b03198716600482015290516000926001600160a01b03169163e3dee239916024808301926020929190829003018186803b158015612fd957600080fd5b505afa158015612fed573d6000803e3d6000fd5b505050506040513d602081101561300357600080fd5b505190506001600160a01b03808216908316146130515760405162461bcd60e51b8152600401808060200182810382526033815260200180613ac86033913960400191505060405180910390fd5b505b6000600460009054906101000a90046001600160a01b03166001600160a01b03166367157ff06040518163ffffffff1660e01b815260040160206040518083038186803b1580156130a357600080fd5b505afa1580156130b7573d6000803e3d6000fd5b505050506040513d60208110156130cd57600080fd5b505160045485519192506001600160a01b031690638ce80a6590859087906000906130f457fe5b60200260200101518a898b8a60018151811061310c57fe5b60200260200101518b60028151811061312157fe5b60200260200101516040518863ffffffff1660e01b8152600401808861ffff1661ffff168152602001878152602001866001600160a01b03166001600160a01b03168152602001856001600160e01b0319166001600160e01b0319168152602001846001600160a01b03166001600160a01b03168152602001838152602001828152602001975050505050505050600060405180830381600087803b1580156131c957600080fd5b505af11580156131dd573d6000803e3d6000fd5b50506004805460408051633ceac9b360e21b815290516000955061328b945060649361327f936001600160a01b03169263f3ab26cc9281830192602092829003018186803b15801561322e57600080fd5b505afa158015613242573d6000803e3d6000fd5b505050506040513d602081101561325857600080fd5b505188518990600290811061326957fe5b602002602001015161375f90919063ffffffff16565b9063ffffffff6137b816565b90506000600560009054906101000a90046001600160a01b03166001600160a01b031663207638ad6040518163ffffffff1660e01b815260040160206040518083038186803b1580156132dd57600080fd5b505afa1580156132f1573d6000803e3d6000fd5b505050506040513d602081101561330757600080fd5b5051905060006133348261332861ffff89166201518063ffffffff61375f16565b9063ffffffff612abd16565b604080516121a760f11b60208083019190915260608e901b6bffffffffffffffffffffffff191660228301526036808301899052835180840390910181526056830180855281519190920120600654634e71865960e01b909252605a8301899052607a8301889052925193945091926001600160a01b0390921691634e71865991609a8082019260009290919082900301818387803b1580156133d657600080fd5b505af11580156133ea573d6000803e3d6000fd5b50505050600560009054906101000a90046001600160a01b03166001600160a01b031663c5facba28c8387866040518563ffffffff1660e01b815260040180856001600160a01b03166001600160a01b03168152602001848152602001838152602001828152602001945050505050600060405180830381600087803b15801561347357600080fd5b505af1158015613487573d6000803e3d6000fd5b50506004548a516001600160a01b03909116925063a2c6bc2591508b908b906000906134af57fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160e01b0319166001600160e01b031916815260200182815260200192505050600060405180830381600087803b15801561350857600080fd5b505af115801561351c573d6000803e3d6000fd5b50506004548a516001600160a01b039091169250633994b3d591508c908c908c9060009061354657fe5b60200260200101516040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b03168152602001836001600160e01b0319166001600160e01b03191681526020018281526020019350505050600060405180830381600087803b1580156135b857600080fd5b505af11580156135cc573d6000803e3d6000fd5b505050506000886002815181106135df57fe5b602002602001015190506000600660009054906101000a90046001600160a01b03166001600160a01b031663e22648506040518163ffffffff1660e01b815260040160206040518083038186803b15801561363957600080fd5b505afa15801561364d573d6000803e3d6000fd5b505050506040513d602081101561366357600080fd5b50519050600061367e606461327f858563ffffffff61375f16565b9050600360009054906101000a90046001600160a01b03166001600160a01b031663f0f923c08e836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156136f557600080fd5b505af1158015613709573d6000803e3d6000fd5b505050505050505050505050505050505050565b6000612b1783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506137fa565b60008261376e57506000612b1a565b8282028284828161377b57fe5b0414612b175760405162461bcd60e51b8152600401808060200182810382526021815260200180613a376021913960400191505060405180910390fd5b6000612b1783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613891565b600081848411156138895760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561384e578181015183820152602001613836565b50505050905090810190601f16801561387b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600081836138e05760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561384e578181015183820152602001613836565b5060008385816138ec57fe5b0495945050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106139375782800160ff19823516178555613964565b82800160010185558215613964579182015b82811115613964578235825591602001919060010190613949565b50613970929150613974565b5090565b61398e91905b80821115613970576000815560010161397a565b9056fe51756f746174696f6e3a20636f766572206973206e6f742064756520746f2065787069726551756f746174696f6e3a2063616e6e6f74207769746864726177206265666f726520677261636520706572696f642065787069726174696f6e51756f746174696f6e3a205472616e7366657220746f20506f6f6c206661696c656451756f746174696f6e3a20436f76657220706572696f64206f7574206f6620626f756e6473536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7751756f746174696f6e3a2045544820616d6f756e7420646f6573206e6f74206d61746368207072656d69756d51756f746174696f6e3a20636f7665722068617320616e206f70656e20636c61696d43616c6c6572206973206e6f7420616e20696e7465726e616c20636f6e747261637451756f746174696f6e3a20556e737570706f7274656420636f76657220617373657420666f7220746869732070726f64756374a265627a7a723158206cf0b8c2d04bec4f1bac9cb1d61bbd757c4b9fab033b161c019af1b6e000343064736f6c63430005110032
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.