Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 445 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Exit_target Repa... | 13597223 | 1053 days ago | IN | 0 ETH | 0.14991035 | ||||
Exit_target Repa... | 13571880 | 1057 days ago | IN | 0 ETH | 0.10765349 | ||||
Exit_target Repa... | 13501381 | 1068 days ago | IN | 0 ETH | 0.18656584 | ||||
Exit_target Repa... | 13500780 | 1069 days ago | IN | 0 ETH | 0.18590509 | ||||
Exit_target Repa... | 13487083 | 1071 days ago | IN | 0 ETH | 0.04321392 | ||||
Exit_target Repa... | 13485573 | 1071 days ago | IN | 0 ETH | 0.08376007 | ||||
Join | 13460910 | 1075 days ago | IN | 0 ETH | 0.08694974 | ||||
Join | 13455832 | 1076 days ago | IN | 0 ETH | 0.14413455 | ||||
Join | 13439188 | 1078 days ago | IN | 0 ETH | 0.11433716 | ||||
Join | 13438583 | 1078 days ago | IN | 0 ETH | 0.09812246 | ||||
Join | 13438574 | 1078 days ago | IN | 0 ETH | 0.0207768 | ||||
Exit_target Repa... | 13410498 | 1083 days ago | IN | 0 ETH | 0.02027126 | ||||
Join | 13408910 | 1083 days ago | IN | 0 ETH | 0.08467552 | ||||
Join | 13403649 | 1084 days ago | IN | 0 ETH | 0.0754849 | ||||
Exit_target Repa... | 13403218 | 1084 days ago | IN | 0 ETH | 0.01972957 | ||||
Join | 13392070 | 1086 days ago | IN | 0 ETH | 0.06371085 | ||||
Join | 13391915 | 1086 days ago | IN | 0 ETH | 0.01809015 | ||||
Join | 13391496 | 1086 days ago | IN | 0 ETH | 0.05637452 | ||||
Join | 13391032 | 1086 days ago | IN | 0 ETH | 0.06233556 | ||||
Join | 13381557 | 1087 days ago | IN | 0 ETH | 0.01735668 | ||||
Join | 13381557 | 1087 days ago | IN | 0 ETH | 0.07901923 | ||||
Join | 13371990 | 1089 days ago | IN | 0 ETH | 0.08815441 | ||||
Join | 13316595 | 1097 days ago | IN | 0 ETH | 0.08326056 | ||||
Join | 13288003 | 1102 days ago | IN | 0 ETH | 0.07374539 | ||||
Exit_target Repa... | 13260846 | 1106 days ago | IN | 0 ETH | 0.0135813 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
CDPManager01_Fallback
Compiler Version
v0.7.6+commit.7338295f
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: bsl-1.1 /* Copyright 2020 Unit Protocol: Artem Zakharov ([email protected]). */ pragma solidity 0.7.6; pragma abicoder v2; import '../interfaces/IOracleRegistry.sol'; import '../interfaces/IKeydonixOracleUsd.sol'; import '../interfaces/IToken.sol'; import '../interfaces/IVault.sol'; import '../interfaces/ICDPRegistry.sol'; import '../interfaces/IVaultManagerParameters.sol'; import '../interfaces/IVaultParameters.sol'; import '../helpers/ReentrancyGuard.sol'; import '../helpers/SafeMath.sol'; /** * @title CDPManager01_Fallback **/ contract CDPManager01_Fallback is ReentrancyGuard { using SafeMath for uint; IVault public immutable vault; IVaultManagerParameters public immutable vaultManagerParameters; IOracleRegistry public immutable oracleRegistry; ICDPRegistry public immutable cdpRegistry; uint public constant Q112 = 2 ** 112; uint public constant DENOMINATOR_1E5 = 1e5; /** * @dev Trigger when joins are happened **/ event Join(address indexed asset, address indexed owner, uint main, uint usdp); /** * @dev Trigger when exits are happened **/ event Exit(address indexed asset, address indexed owner, uint main, uint usdp); /** * @dev Trigger when liquidations are initiated **/ event LiquidationTriggered(address indexed asset, address indexed owner); modifier checkpoint(address asset, address owner) { _; cdpRegistry.checkpoint(asset, owner); } /** * @param _vaultManagerParameters The address of the contract with Vault manager parameters * @param _oracleRegistry The address of the oracle registry * @param _cdpRegistry The address of the CDP registry **/ constructor(address _vaultManagerParameters, address _oracleRegistry, address _cdpRegistry) { require( _vaultManagerParameters != address(0) && _oracleRegistry != address(0) && _cdpRegistry != address(0), "Unit Protocol: INVALID_ARGS" ); vaultManagerParameters = IVaultManagerParameters(_vaultManagerParameters); vault = IVault(IVaultParameters(IVaultManagerParameters(_vaultManagerParameters).vaultParameters()).vault()); oracleRegistry = IOracleRegistry(_oracleRegistry); cdpRegistry = ICDPRegistry(_cdpRegistry); } /** * @notice Depositing tokens must be pre-approved to Vault address * @notice position actually considered as spawned only when debt > 0 * @dev Deposits collateral and/or borrows USDP * @param asset The address of the collateral * @param assetAmount The amount of the collateral to deposit * @param usdpAmount The amount of USDP token to borrow **/ function join(address asset, uint assetAmount, uint usdpAmount, IKeydonixOracleUsd.ProofDataStruct calldata proofData) public nonReentrant checkpoint(asset, msg.sender) { require(usdpAmount != 0 || assetAmount != 0, "Unit Protocol: USELESS_TX"); require(IToken(asset).decimals() <= 18, "Unit Protocol: NOT_SUPPORTED_DECIMALS"); if (usdpAmount == 0) { vault.depositMain(asset, msg.sender, assetAmount); } else { uint oracleType = _selectOracleType(asset); bool spawned = vault.debts(asset, msg.sender) != 0; if (!spawned) { // spawn a position vault.spawn(asset, msg.sender, oracleType); } if (assetAmount != 0) { vault.depositMain(asset, msg.sender, assetAmount); } // mint USDP to owner vault.borrow(asset, msg.sender, usdpAmount); // check collateralization _ensurePositionCollateralization(asset, msg.sender, proofData); } // fire an event emit Join(asset, msg.sender, assetAmount, usdpAmount); } /** * @notice Tx sender must have a sufficient USDP balance to pay the debt * @dev Withdraws collateral and repays specified amount of debt * @param asset The address of the collateral * @param assetAmount The amount of the collateral to withdraw * @param usdpAmount The amount of USDP to repay **/ function exit(address asset, uint assetAmount, uint usdpAmount, IKeydonixOracleUsd.ProofDataStruct calldata proofData) public nonReentrant checkpoint(asset, msg.sender) returns (uint) { // check usefulness of tx require(assetAmount != 0 || usdpAmount != 0, "Unit Protocol: USELESS_TX"); uint debt = vault.debts(asset, msg.sender); // catch full repayment if (usdpAmount > debt) { usdpAmount = debt; } if (assetAmount == 0) { _repay(asset, msg.sender, usdpAmount); } else { if (debt == usdpAmount) { vault.withdrawMain(asset, msg.sender, assetAmount); if (usdpAmount != 0) { _repay(asset, msg.sender, usdpAmount); } } else { // withdraw collateral to the owner address vault.withdrawMain(asset, msg.sender, assetAmount); if (usdpAmount != 0) { _repay(asset, msg.sender, usdpAmount); } vault.update(asset, msg.sender); _ensurePositionCollateralization(asset, msg.sender, proofData); } } // fire an event emit Exit(asset, msg.sender, assetAmount, usdpAmount); return usdpAmount; } /** * @notice Repayment is the sum of the principal and interest * @dev Withdraws collateral and repays specified amount of debt * @param asset The address of the collateral * @param assetAmount The amount of the collateral to withdraw * @param repayment The target repayment amount **/ function exit_targetRepayment(address asset, uint assetAmount, uint repayment, IKeydonixOracleUsd.ProofDataStruct calldata proofData) external returns (uint) { uint usdpAmount = _calcPrincipal(asset, msg.sender, repayment); return exit(asset, assetAmount, usdpAmount, proofData); } // decreases debt function _repay(address asset, address owner, uint usdpAmount) internal { uint fee = vault.calculateFee(asset, owner, usdpAmount); vault.chargeFee(vault.usdp(), owner, fee); // burn USDP from the owner's balance uint debtAfter = vault.repay(asset, owner, usdpAmount); if (debtAfter == 0) { // clear unused storage vault.destroy(asset, owner); } } function _ensurePositionCollateralization(address asset, address owner, IKeydonixOracleUsd.ProofDataStruct calldata proofData) internal view { // collateral value of the position in USD uint usdValue_q112 = getCollateralUsdValue_q112(asset, owner, proofData); // USD limit of the position uint usdLimit = usdValue_q112 * vaultManagerParameters.initialCollateralRatio(asset) / Q112 / 100; // revert if collateralization is not enough require(vault.getTotalDebt(asset, owner) <= usdLimit, "Unit Protocol: UNDERCOLLATERALIZED"); } // Liquidation Trigger /** * @dev Triggers liquidation of a position * @param asset The address of the collateral token of a position * @param owner The owner of the position **/ function triggerLiquidation(address asset, address owner, IKeydonixOracleUsd.ProofDataStruct calldata proofData) external nonReentrant { // USD value of the collateral uint usdValue_q112 = getCollateralUsdValue_q112(asset, owner, proofData); // reverts if a position is not liquidatable require(_isLiquidatablePosition(asset, owner, usdValue_q112), "Unit Protocol: SAFE_POSITION"); uint liquidationDiscount_q112 = usdValue_q112.mul( vaultManagerParameters.liquidationDiscount(asset) ).div(DENOMINATOR_1E5); uint initialLiquidationPrice = usdValue_q112.sub(liquidationDiscount_q112).div(Q112); // sends liquidation command to the Vault vault.triggerLiquidation(asset, owner, initialLiquidationPrice); // fire an liquidation event emit LiquidationTriggered(asset, owner); } function getCollateralUsdValue_q112(address asset, address owner, IKeydonixOracleUsd.ProofDataStruct calldata proofData) public view returns (uint) { uint oracleType = _selectOracleType(asset); return IKeydonixOracleUsd(oracleRegistry.oracleByType(oracleType)).assetToUsd(asset, vault.collaterals(asset, owner), proofData); } /** * @dev Determines whether a position is liquidatable * @param asset The address of the collateral * @param owner The owner of the position * @param usdValue_q112 Q112-encoded USD value of the collateral * @return boolean value, whether a position is liquidatable **/ function _isLiquidatablePosition( address asset, address owner, uint usdValue_q112 ) internal view returns (bool) { uint debt = vault.getTotalDebt(asset, owner); // position is collateralized if there is no debt if (debt == 0) return false; return debt.mul(100).mul(Q112).div(usdValue_q112) >= vaultManagerParameters.liquidationRatio(asset); } function _selectOracleType(address asset) internal view returns (uint oracleType) { oracleType = _getOracleType(asset); require(oracleType != 0, "Unit Protocol: INVALID_ORACLE_TYPE"); address oracle = oracleRegistry.oracleByType(oracleType); require(oracle != address(0), "Unit Protocol: DISABLED_ORACLE"); } /** * @dev Determines whether a position is liquidatable * @param asset The address of the collateral * @param owner The owner of the position * @return boolean value, whether a position is liquidatable **/ function isLiquidatablePosition( address asset, address owner, IKeydonixOracleUsd.ProofDataStruct calldata proofData ) external view returns (bool) { uint usdValue_q112 = getCollateralUsdValue_q112(asset, owner, proofData); return _isLiquidatablePosition(asset, owner, usdValue_q112); } /** * @dev Calculates current utilization ratio * @param asset The address of the collateral * @param owner The owner of the position * @return utilization ratio **/ function utilizationRatio( address asset, address owner, IKeydonixOracleUsd.ProofDataStruct calldata proofData ) public view returns (uint) { uint debt = vault.getTotalDebt(asset, owner); if (debt == 0) return uint(0); uint usdValue_q112 = getCollateralUsdValue_q112(asset, owner, proofData); return debt.mul(100).mul(Q112).div(usdValue_q112); } /** * @dev Calculates liquidation price * @param asset The address of the collateral * @param owner The owner of the position * @return Q112-encoded liquidation price **/ function liquidationPrice_q112( address asset, address owner ) external view returns (uint) { uint debt = vault.getTotalDebt(asset, owner); if (debt == 0) return uint(-1); uint collateralLiqPrice = debt.mul(100).mul(Q112).div(vaultManagerParameters.liquidationRatio(asset)); require(IToken(asset).decimals() <= 18, "Unit Protocol: NOT_SUPPORTED_DECIMALS"); return collateralLiqPrice / vault.collaterals(asset, owner) / 10 ** (18 - IToken(asset).decimals()); } function _calcPrincipal(address asset, address owner, uint repayment) internal view returns (uint) { uint fee = vault.stabilityFee(asset, owner) * (block.timestamp - vault.lastUpdate(asset, owner)) / 365 days; return repayment * DENOMINATOR_1E5 / (DENOMINATOR_1E5 + fee); } function _getOracleType(address asset) internal view returns (uint) { uint[] memory keydonixOracleTypes = oracleRegistry.getKeydonixOracleTypes(); for (uint i = 0; i < keydonixOracleTypes.length; i++) { if (IVaultParameters(vaultManagerParameters.vaultParameters()).isOracleTypeEnabled(keydonixOracleTypes[i], asset)) { return keydonixOracleTypes[i]; } } revert("Unit Protocol: NO_ORACLE_FOUND"); } }
pragma abicoder v2; interface IOracleRegistry { struct Oracle { uint oracleType; address oracleAddress; } function WETH ( ) external view returns ( address ); function getKeydonixOracleTypes ( ) external view returns ( uint256[] memory ); function getOracles ( ) external view returns ( Oracle[] memory foundOracles ); function keydonixOracleTypes ( uint256 ) external view returns ( uint256 ); function maxOracleType ( ) external view returns ( uint256 ); function oracleByAsset ( address asset ) external view returns ( address ); function oracleByType ( uint256 ) external view returns ( address ); function oracleTypeByAsset ( address ) external view returns ( uint256 ); function oracleTypeByOracle ( address ) external view returns ( uint256 ); function setKeydonixOracleTypes ( uint256[] memory _keydonixOracleTypes ) external; function setOracle ( uint256 oracleType, address oracle ) external; function setOracleTypeForAsset ( address asset, uint256 oracleType ) external; function setOracleTypeForAssets ( address[] memory assets, uint256 oracleType ) external; function unsetOracle ( uint256 oracleType ) external; function unsetOracleForAsset ( address asset ) external; function unsetOracleForAssets ( address[] memory assets ) external; function vaultParameters ( ) external view returns ( address ); }
pragma abicoder v2; interface IKeydonixOracleUsd { struct ProofDataStruct { bytes block; bytes accountProofNodesRlp; bytes reserveAndTimestampProofNodesRlp; bytes priceAccumulatorProofNodesRlp; } // returns Q112-encoded value function assetToUsd(address asset, uint amount, ProofDataStruct calldata proofData) external view returns (uint); }
interface IToken { function decimals() external view returns (uint8); function symbol() external view returns (string memory); function balanceOf(address) external view returns (uint); }
interface IVault { function DENOMINATOR_1E2 ( ) external view returns ( uint256 ); function DENOMINATOR_1E5 ( ) external view returns ( uint256 ); function borrow ( address asset, address user, uint256 amount ) external returns ( uint256 ); function calculateFee ( address asset, address user, uint256 amount ) external view returns ( uint256 ); function changeOracleType ( address asset, address user, uint256 newOracleType ) external; function chargeFee ( address asset, address user, uint256 amount ) external; function col ( ) external view returns ( address ); function colToken ( address, address ) external view returns ( uint256 ); function collaterals ( address, address ) external view returns ( uint256 ); function debts ( address, address ) external view returns ( uint256 ); function depositCol ( address asset, address user, uint256 amount ) external; function depositEth ( address user ) external payable; function depositMain ( address asset, address user, uint256 amount ) external; function destroy ( address asset, address user ) external; function getTotalDebt ( address asset, address user ) external view returns ( uint256 ); function lastUpdate ( address, address ) external view returns ( uint256 ); function liquidate ( address asset, address positionOwner, uint256 mainAssetToLiquidator, uint256 colToLiquidator, uint256 mainAssetToPositionOwner, uint256 colToPositionOwner, uint256 repayment, uint256 penalty, address liquidator ) external; function liquidationBlock ( address, address ) external view returns ( uint256 ); function liquidationFee ( address, address ) external view returns ( uint256 ); function liquidationPrice ( address, address ) external view returns ( uint256 ); function oracleType ( address, address ) external view returns ( uint256 ); function repay ( address asset, address user, uint256 amount ) external returns ( uint256 ); function spawn ( address asset, address user, uint256 _oracleType ) external; function stabilityFee ( address, address ) external view returns ( uint256 ); function tokenDebts ( address ) external view returns ( uint256 ); function triggerLiquidation ( address asset, address positionOwner, uint256 initialPrice ) external; function update ( address asset, address user ) external; function usdp ( ) external view returns ( address ); function vaultParameters ( ) external view returns ( address ); function weth ( ) external view returns ( address payable ); function withdrawCol ( address asset, address user, uint256 amount ) external; function withdrawEth ( address user, uint256 amount ) external; function withdrawMain ( address asset, address user, uint256 amount ) external; }
pragma experimental ABIEncoderV2; interface ICDPRegistry { struct CDP { address asset; address owner; } function batchCheckpoint ( address[] calldata assets, address[] calldata owners ) external; function batchCheckpointForAsset ( address asset, address[] calldata owners ) external; function checkpoint ( address asset, address owner ) external; function cr ( ) external view returns ( address ); function getAllCdps ( ) external view returns ( CDP[] memory r ); function getCdpsByCollateral ( address asset ) external view returns ( CDP[] memory cdps ); function getCdpsByOwner ( address owner ) external view returns ( CDP[] memory r ); function getCdpsCount ( ) external view returns ( uint256 totalCdpCount ); function getCdpsCountForCollateral ( address asset ) external view returns ( uint256 ); function isAlive ( address asset, address owner ) external view returns ( bool ); function isListed ( address asset, address owner ) external view returns ( bool ); function vault ( ) external view returns ( address ); }
interface IVaultManagerParameters { function devaluationPeriod ( address ) external view returns ( uint256 ); function initialCollateralRatio ( address ) external view returns ( uint256 ); function liquidationDiscount ( address ) external view returns ( uint256 ); function liquidationRatio ( address ) external view returns ( uint256 ); function maxColPercent ( address ) external view returns ( uint256 ); function minColPercent ( address ) external view returns ( uint256 ); function setColPartRange ( address asset, uint256 min, uint256 max ) external; function setCollateral ( address asset, uint256 stabilityFeeValue, uint256 liquidationFeeValue, uint256 initialCollateralRatioValue, uint256 liquidationRatioValue, uint256 liquidationDiscountValue, uint256 devaluationPeriodValue, uint256 usdpLimit, uint256[] calldata oracles, uint256 minColP, uint256 maxColP ) external; function setDevaluationPeriod ( address asset, uint256 newValue ) external; function setInitialCollateralRatio ( address asset, uint256 newValue ) external; function setLiquidationDiscount ( address asset, uint256 newValue ) external; function setLiquidationRatio ( address asset, uint256 newValue ) external; function vaultParameters ( ) external view returns ( address ); }
interface IVaultParameters { function canModifyVault ( address ) external view returns ( bool ); function foundation ( ) external view returns ( address ); function isManager ( address ) external view returns ( bool ); function isOracleTypeEnabled ( uint256, address ) external view returns ( bool ); function liquidationFee ( address ) external view returns ( uint256 ); function setCollateral ( address asset, uint256 stabilityFeeValue, uint256 liquidationFeeValue, uint256 usdpLimit, uint256[] calldata oracles ) external; function setFoundation ( address newFoundation ) external; function setLiquidationFee ( address asset, uint256 newValue ) external; function setManager ( address who, bool permit ) external; function setOracleType ( uint256 _type, address asset, bool enabled ) external; function setStabilityFee ( address asset, uint256 newValue ) external; function setTokenDebtLimit ( address asset, uint256 limit ) external; function setVaultAccess ( address who, bool permit ) external; function stabilityFee ( address ) external view returns ( uint256 ); function tokenDebtLimit ( address ) external view returns ( uint256 ); function vault ( ) external view returns ( address ); function vaultParameters ( ) external view returns ( address ); }
// SPDX-License-Identifier: MIT pragma solidity 0.7.6; /** * @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]. */ contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being 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 percentage 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. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor () { _status = _NOT_ENTERED; } /** * @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(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
// SPDX-License-Identifier: bsl-1.1 /* Copyright 2020 Unit Protocol: Artem Zakharov ([email protected]). */ pragma solidity 0.7.6; /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { /** * @dev Multiplies two numbers, throws on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256 c) { if (a == 0) { return 0; } c = a * b; assert(c / a == b); return c; } /** * @dev Integer division of two numbers, truncating the quotient. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0, "SafeMath: division by zero"); return a / b; } /** * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } /** * @dev Adds two numbers, throws on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256 c) { c = a + b; assert(c >= a); return c; } }
{ "metadata": { "useLiteralContent": true }, "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_vaultManagerParameters","type":"address"},{"internalType":"address","name":"_oracleRegistry","type":"address"},{"internalType":"address","name":"_cdpRegistry","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"asset","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"main","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"usdp","type":"uint256"}],"name":"Exit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"asset","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"main","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"usdp","type":"uint256"}],"name":"Join","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"asset","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"}],"name":"LiquidationTriggered","type":"event"},{"inputs":[],"name":"DENOMINATOR_1E5","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Q112","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cdpRegistry","outputs":[{"internalType":"contract ICDPRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"assetAmount","type":"uint256"},{"internalType":"uint256","name":"usdpAmount","type":"uint256"},{"components":[{"internalType":"bytes","name":"block","type":"bytes"},{"internalType":"bytes","name":"accountProofNodesRlp","type":"bytes"},{"internalType":"bytes","name":"reserveAndTimestampProofNodesRlp","type":"bytes"},{"internalType":"bytes","name":"priceAccumulatorProofNodesRlp","type":"bytes"}],"internalType":"struct IKeydonixOracleUsd.ProofDataStruct","name":"proofData","type":"tuple"}],"name":"exit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"assetAmount","type":"uint256"},{"internalType":"uint256","name":"repayment","type":"uint256"},{"components":[{"internalType":"bytes","name":"block","type":"bytes"},{"internalType":"bytes","name":"accountProofNodesRlp","type":"bytes"},{"internalType":"bytes","name":"reserveAndTimestampProofNodesRlp","type":"bytes"},{"internalType":"bytes","name":"priceAccumulatorProofNodesRlp","type":"bytes"}],"internalType":"struct IKeydonixOracleUsd.ProofDataStruct","name":"proofData","type":"tuple"}],"name":"exit_targetRepayment","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"components":[{"internalType":"bytes","name":"block","type":"bytes"},{"internalType":"bytes","name":"accountProofNodesRlp","type":"bytes"},{"internalType":"bytes","name":"reserveAndTimestampProofNodesRlp","type":"bytes"},{"internalType":"bytes","name":"priceAccumulatorProofNodesRlp","type":"bytes"}],"internalType":"struct IKeydonixOracleUsd.ProofDataStruct","name":"proofData","type":"tuple"}],"name":"getCollateralUsdValue_q112","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"components":[{"internalType":"bytes","name":"block","type":"bytes"},{"internalType":"bytes","name":"accountProofNodesRlp","type":"bytes"},{"internalType":"bytes","name":"reserveAndTimestampProofNodesRlp","type":"bytes"},{"internalType":"bytes","name":"priceAccumulatorProofNodesRlp","type":"bytes"}],"internalType":"struct IKeydonixOracleUsd.ProofDataStruct","name":"proofData","type":"tuple"}],"name":"isLiquidatablePosition","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"assetAmount","type":"uint256"},{"internalType":"uint256","name":"usdpAmount","type":"uint256"},{"components":[{"internalType":"bytes","name":"block","type":"bytes"},{"internalType":"bytes","name":"accountProofNodesRlp","type":"bytes"},{"internalType":"bytes","name":"reserveAndTimestampProofNodesRlp","type":"bytes"},{"internalType":"bytes","name":"priceAccumulatorProofNodesRlp","type":"bytes"}],"internalType":"struct IKeydonixOracleUsd.ProofDataStruct","name":"proofData","type":"tuple"}],"name":"join","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"liquidationPrice_q112","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oracleRegistry","outputs":[{"internalType":"contract IOracleRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"components":[{"internalType":"bytes","name":"block","type":"bytes"},{"internalType":"bytes","name":"accountProofNodesRlp","type":"bytes"},{"internalType":"bytes","name":"reserveAndTimestampProofNodesRlp","type":"bytes"},{"internalType":"bytes","name":"priceAccumulatorProofNodesRlp","type":"bytes"}],"internalType":"struct IKeydonixOracleUsd.ProofDataStruct","name":"proofData","type":"tuple"}],"name":"triggerLiquidation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"components":[{"internalType":"bytes","name":"block","type":"bytes"},{"internalType":"bytes","name":"accountProofNodesRlp","type":"bytes"},{"internalType":"bytes","name":"reserveAndTimestampProofNodesRlp","type":"bytes"},{"internalType":"bytes","name":"priceAccumulatorProofNodesRlp","type":"bytes"}],"internalType":"struct IKeydonixOracleUsd.ProofDataStruct","name":"proofData","type":"tuple"}],"name":"utilizationRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vaultManagerParameters","outputs":[{"internalType":"contract IVaultManagerParameters","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
6101006040523480156200001257600080fd5b506040516200280438038062002804833981016040819052620000359162000206565b60016000556001600160a01b038316158015906200005b57506001600160a01b03821615155b80156200007057506001600160a01b03811615155b620000985760405162461bcd60e51b81526004016200008f906200024f565b60405180910390fd5b826001600160a01b031660a0816001600160a01b031660601b81525050826001600160a01b031663aca345ee6040518163ffffffff1660e01b815260040160206040518083038186803b158015620000ef57600080fd5b505afa15801562000104573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012a9190620001e2565b6001600160a01b031663fbfa77cf6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200016357600080fd5b505afa15801562000178573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200019e9190620001e2565b6001600160601b0319606091821b811660805292811b831660c0521b1660e0525062000286565b80516001600160a01b0381168114620001dd57600080fd5b919050565b600060208284031215620001f4578081fd5b620001ff82620001c5565b9392505050565b6000806000606084860312156200021b578182fd5b6200022684620001c5565b92506200023660208501620001c5565b91506200024660408501620001c5565b90509250925092565b6020808252601b908201527f556e69742050726f746f636f6c3a20494e56414c49445f415247530000000000604082015260600190565b60805160601c60a05160601c60c05160601c60e05160601c6124976200036d600039806108aa5280610ece528061135c52508061092552806111b95280611a745280611cac5250806102a35280610fe55280611380528061175552806119895280611d4f5250806101ee528061047752806105db52806106a4528061073952806107ce528061094c5280610b875280610c085280610cc45280610d4d5280610dd052806110b6528061124f52806113a4528061146a52806114f75280611526528061162052806116ca528061180652806118c55280611b435280611be352506124976000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063944dd7611161008c578063ab15d14111610066578063ab15d141146101be578063ab2a2a82146101d1578063b7ebdc0c146101d9578063fbfa77cf146101e1576100ea565b8063944dd7611461019057806394cc855c146101a3578063971182c6146101b6576100ea565b80634bb93ab1116100c85780634bb93ab11461013357806352b844d71461014857806353553b891461015b57806384a759301461017b576100ea565b806312dc1dcc146100ef5780633bf7a83e14610118578063401594e714610120575b600080fd5b6101026100fd366004611ee3565b6101e9565b60405161010f91906123cf565b60405180910390f35b61010261052f565b61010261012e366004611f7b565b610537565b61013b610923565b60405161010f919061210d565b610102610156366004611f1b565b610947565b61016e610169366004611f1b565b610a2b565b60405161010f919061221f565b61018e610189366004611f7b565b610a4f565b005b61018e61019e366004611f1b565b610f44565b6101026101b1366004611f7b565b611166565b61010261118c565b6101026101cc366004611f1b565b611193565b61013b61135a565b61013b61137e565b61013b6113a2565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d6446d4385856040518363ffffffff1660e01b815260040161023a929190612121565b60206040518083038186803b15801561025257600080fd5b505afa158015610266573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028a91906120aa565b90508061029c57600019915050610529565b600061035c7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633bffbbe2876040518263ffffffff1660e01b81526004016102ed919061210d565b60206040518083038186803b15801561030557600080fd5b505afa158015610319573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033d91906120aa565b610356600160701b6103508660646113c6565b906113c6565b906113eb565b90506012856001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561039957600080fd5b505afa1580156103ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d191906120c2565b60ff1611156103fb5760405162461bcd60e51b81526004016103f29061238a565b60405180910390fd5b846001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561043457600080fd5b505afa158015610448573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046c91906120c2565b60120360ff16600a0a7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e51e119e87876040518363ffffffff1660e01b81526004016104c3929190612121565b60206040518083038186803b1580156104db57600080fd5b505afa1580156104ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051391906120aa565b828161051b57fe5b048161052357fe5b04925050505b92915050565b600160701b81565b600060026000541415610591576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026000558433851515806105a557508415155b6105c15760405162461bcd60e51b81526004016103f290612298565b604051634ac1c33d60e01b81526000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690634ac1c33d90610612908b903390600401612121565b60206040518083038186803b15801561062a57600080fd5b505afa15801561063e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066291906120aa565b905080861115610670578095505b8661068557610680883388611450565b610842565b85811415610722576040516311af95b160e31b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638d7cad88906106dd908b9033908c9060040161213b565b600060405180830381600087803b1580156106f757600080fd5b505af115801561070b573d6000803e3d6000fd5b505050508560001461068057610680883388611450565b6040516311af95b160e31b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638d7cad8890610772908b9033908c9060040161213b565b600060405180830381600087803b15801561078c57600080fd5b505af11580156107a0573d6000803e3d6000fd5b50505050856000146107b7576107b7883388611450565b60405163c640752d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c640752d90610805908b903390600401612121565b600060405180830381600087803b15801561081f57600080fd5b505af1158015610833573d6000803e3d6000fd5b5050505061084288338761173b565b336001600160a01b0316886001600160a01b03167fa702ae6024e8b4c2b0eb162b1453dacb93cf6922f5a2d7236faed898c21148f889896040516108879291906123ef565b60405180910390a385935050604051632ed56dff60e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063bb55b7fc906108e19085908590600401612121565b600060405180830381600087803b1580156108fb57600080fd5b505af115801561090f573d6000803e3d6000fd5b505060016000555092979650505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d6446d4386866040518363ffffffff1660e01b8152600401610998929190612121565b60206040518083038186803b1580156109b057600080fd5b505afa1580156109c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e891906120aa565b9050806109f9576000915050610a24565b6000610a06868686611193565b9050610a1f81610356600160701b6103508660646113c6565b925050505b9392505050565b600080610a39858585611193565b9050610a468585836118c0565b95945050505050565b60026000541415610aa7576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002600055833383151580610abb57508415155b610ad75760405162461bcd60e51b81526004016103f290612298565b6012866001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610b1257600080fd5b505afa158015610b26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4a91906120c2565b60ff161115610b6b5760405162461bcd60e51b81526004016103f29061238a565b83610bf75760405163770c1acf60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ee18359e90610bc090899033908a9060040161213b565b600060405180830381600087803b158015610bda57600080fd5b505af1158015610bee573d6000803e3d6000fd5b50505050610e6a565b6000610c0287611a30565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ac1c33d89336040518363ffffffff1660e01b8152600401610c54929190612121565b60206040518083038186803b158015610c6c57600080fd5b505afa158015610c80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca491906120aa565b1515905080610d3057604051630c6d894f60e41b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c6d894f090610cfd908b903390879060040161213b565b600060405180830381600087803b158015610d1757600080fd5b505af1158015610d2b573d6000803e3d6000fd5b505050505b8615610db95760405163770c1acf60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ee18359e90610d86908b9033908c9060040161213b565b600060405180830381600087803b158015610da057600080fd5b505af1158015610db4573d6000803e3d6000fd5b505050505b6040516314890dcb60e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635224372c90610e09908b9033908b9060040161213b565b602060405180830381600087803b158015610e2357600080fd5b505af1158015610e37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5b91906120aa565b50610e6788338761173b565b50505b336001600160a01b0316866001600160a01b03167f6423b6056e64b3b29cb2d342362b47c26fa8d6877da27ea152354060df19b9bc8787604051610eaf9291906123ef565b60405180910390a3604051632ed56dff60e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063bb55b7fc90610f059085908590600401612121565b600060405180830381600087803b158015610f1f57600080fd5b505af1158015610f33573d6000803e3d6000fd5b505060016000555050505050505050565b60026000541415610f9c576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026000908155610fae848484611193565b9050610fbb8484836118c0565b610fd75760405162461bcd60e51b81526004016103f29061222a565b6000611086620186a06103567f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166315a04ea2896040518263ffffffff1660e01b815260040161102f919061210d565b60206040518083038186803b15801561104757600080fd5b505afa15801561105b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107f91906120aa565b85906113c6565b9050600061109c600160701b6103568585611b27565b604051633a15193760e11b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063742a326e906110ef9089908990869060040161213b565b600060405180830381600087803b15801561110957600080fd5b505af115801561111d573d6000803e3d6000fd5b50506040516001600160a01b038089169350891691507f5b79a897d30813a62a1f95ba180d3320d3701d96605708b81105e00719a069e490600090a35050600160005550505050565b600080611174863386611b39565b905061118286868386610537565b9695505050505050565b620186a081565b60008061119f85611a30565b6040516362c03ee360e11b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c5807dc6906111ee9084906004016123cf565b60206040518083038186803b15801561120657600080fd5b505afa15801561121a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123e9190611ec7565b6001600160a01b03166314b094fb867f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e51e119e89896040518363ffffffff1660e01b815260040161129b929190612121565b60206040518083038186803b1580156112b357600080fd5b505afa1580156112c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112eb91906120aa565b866040518463ffffffff1660e01b815260040161130a9392919061215f565b60206040518083038186803b15801561132257600080fd5b505afa158015611336573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4691906120aa565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000826113d557506000610529565b50818102818382816113e357fe5b041461052957fe5b60008161143f576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161144857fe5b049392505050565b604051633e543e5b60e11b81526000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637ca87cb6906114a39087908790879060040161213b565b60206040518083038186803b1580156114bb57600080fd5b505afa1580156114cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f391906120aa565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633d1aa9637f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166374e6076c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561157d57600080fd5b505afa158015611591573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b59190611ec7565b85846040518463ffffffff1660e01b81526004016115d59392919061213b565b600060405180830381600087803b1580156115ef57600080fd5b505af1158015611603573d6000803e3d6000fd5b5050604051631da649cf60e01b8152600092506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150631da649cf9061165a9088908890889060040161213b565b602060405180830381600087803b15801561167457600080fd5b505af1158015611688573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ac91906120aa565b905080611734576040516362b40f9f60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906362b40f9f906117019088908890600401612121565b600060405180830381600087803b15801561171b57600080fd5b505af115801561172f573d6000803e3d6000fd5b505050505b5050505050565b6000611748848484611193565b905060006064600160701b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b85c4496886040518263ffffffff1660e01b815260040161179f919061210d565b60206040518083038186803b1580156117b757600080fd5b505afa1580156117cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ef91906120aa565b8402816117f857fe5b048161180057fe5b049050807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d6446d4387876040518363ffffffff1660e01b8152600401611852929190612121565b60206040518083038186803b15801561186a57600080fd5b505afa15801561187e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a291906120aa565b11156117345760405162461bcd60e51b81526004016103f290612348565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d6446d4386866040518363ffffffff1660e01b8152600401611911929190612121565b60206040518083038186803b15801561192957600080fd5b505afa15801561193d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196191906120aa565b905080611972576000915050610a24565b604051631dffddf160e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633bffbbe2906119be90889060040161210d565b60206040518083038186803b1580156119d657600080fd5b505afa1580156119ea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0e91906120aa565b611a2584610356600160701b6103508660646113c6565b101595945050505050565b6000611a3b82611ca7565b905080611a5a5760405162461bcd60e51b81526004016103f2906122cf565b6040516362c03ee360e11b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c5807dc690611aa99085906004016123cf565b60206040518083038186803b158015611ac157600080fd5b505afa158015611ad5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af99190611ec7565b90506001600160a01b038116611b215760405162461bcd60e51b81526004016103f290612261565b50919050565b600082821115611b3357fe5b50900390565b6000806301e133807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166388ad7a6187876040518363ffffffff1660e01b8152600401611b8f929190612121565b60206040518083038186803b158015611ba757600080fd5b505afa158015611bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bdf91906120aa565b42037f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d4b93dbe88886040518363ffffffff1660e01b8152600401611c2f929190612121565b60206040518083038186803b158015611c4757600080fd5b505afa158015611c5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7f91906120aa565b0281611c8757fe5b04905080620186a001620186a0840281611c9d57fe5b0495945050505050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166347ae34db6040518163ffffffff1660e01b815260040160006040518083038186803b158015611d0357600080fd5b505afa158015611d17573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d3f9190810190611fdc565b905060005b8151811015611e98577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663aca345ee6040518163ffffffff1660e01b815260040160206040518083038186803b158015611da657600080fd5b505afa158015611dba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dde9190611ec7565b6001600160a01b031663fec0feb3838381518110611df857fe5b6020026020010151866040518363ffffffff1660e01b8152600401611e1e9291906123d8565b60206040518083038186803b158015611e3657600080fd5b505afa158015611e4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e6e919061208a565b15611e9057818181518110611e7f57fe5b602002602001015192505050611eb1565b600101611d44565b5060405162461bcd60e51b81526004016103f290612311565b919050565b600060808284031215611b21578081fd5b600060208284031215611ed8578081fd5b8151610a2481612449565b60008060408385031215611ef5578081fd5b8235611f0081612449565b91506020830135611f1081612449565b809150509250929050565b600080600060608486031215611f2f578081fd5b8335611f3a81612449565b92506020840135611f4a81612449565b9150604084013567ffffffffffffffff811115611f65578182fd5b611f7186828701611eb6565b9150509250925092565b60008060008060808587031215611f90578081fd5b8435611f9b81612449565b93506020850135925060408501359150606085013567ffffffffffffffff811115611fc4578182fd5b611fd087828801611eb6565b91505092959194509250565b60006020808385031215611fee578182fd5b825167ffffffffffffffff80821115612005578384fd5b818501915085601f830112612018578384fd5b81518181111561202457fe5b8381026040518582820101818110858211171561203d57fe5b604052828152858101935084860182860187018a101561205b578788fd5b8795505b8386101561207d57805185526001959095019493860193860161205f565b5098975050505050505050565b60006020828403121561209b578081fd5b81518015158114610a24578182fd5b6000602082840312156120bb578081fd5b5051919050565b6000602082840312156120d3578081fd5b815160ff81168114610a24578182fd5b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03841681526020810183905260606040820152600061218583806123fd565b6080606085015261219a60e0850182846120e3565b9150506121aa60208501856123fd565b605f19808685030160808701526121c28483856120e3565b93506121d160408801886123fd565b93509150808685030160a08701526121ea8484846120e3565b93506121f960608801886123fd565b93509150808685030160c0870152506122138383836120e3565b98975050505050505050565b901515815260200190565b6020808252601c908201527f556e69742050726f746f636f6c3a20534146455f504f534954494f4e00000000604082015260600190565b6020808252601e908201527f556e69742050726f746f636f6c3a2044495341424c45445f4f5241434c450000604082015260600190565b60208082526019908201527f556e69742050726f746f636f6c3a205553454c4553535f545800000000000000604082015260600190565b60208082526022908201527f556e69742050726f746f636f6c3a20494e56414c49445f4f5241434c455f5459604082015261504560f01b606082015260800190565b6020808252601e908201527f556e69742050726f746f636f6c3a204e4f5f4f5241434c455f464f554e440000604082015260600190565b60208082526022908201527f556e69742050726f746f636f6c3a20554e444552434f4c4c41544552414c495a604082015261115160f21b606082015260800190565b60208082526025908201527f556e69742050726f746f636f6c3a204e4f545f535550504f525445445f444543604082015264494d414c5360d81b606082015260800190565b90815260200190565b9182526001600160a01b0316602082015260400190565b918252602082015260400190565b6000808335601e19843603018112612413578283fd5b830160208101925035905067ffffffffffffffff81111561243357600080fd5b80360383131561244257600080fd5b9250929050565b6001600160a01b038116811461245e57600080fd5b5056fea2646970667358221220ef2cf8c28c1702809c77454b2c1f1915f4fc2cfe9ef52f743313d5d257fb53e264736f6c63430007060033000000000000000000000000203153522b9eaef4ae17c6e99851ee7b2f7d312e00000000000000000000000075fbfe26b21fd3ea008af0c764949f8214150c8f0000000000000000000000001a5ff58bc3246eb233fea20d32b79b5f01ec650c
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063944dd7611161008c578063ab15d14111610066578063ab15d141146101be578063ab2a2a82146101d1578063b7ebdc0c146101d9578063fbfa77cf146101e1576100ea565b8063944dd7611461019057806394cc855c146101a3578063971182c6146101b6576100ea565b80634bb93ab1116100c85780634bb93ab11461013357806352b844d71461014857806353553b891461015b57806384a759301461017b576100ea565b806312dc1dcc146100ef5780633bf7a83e14610118578063401594e714610120575b600080fd5b6101026100fd366004611ee3565b6101e9565b60405161010f91906123cf565b60405180910390f35b61010261052f565b61010261012e366004611f7b565b610537565b61013b610923565b60405161010f919061210d565b610102610156366004611f1b565b610947565b61016e610169366004611f1b565b610a2b565b60405161010f919061221f565b61018e610189366004611f7b565b610a4f565b005b61018e61019e366004611f1b565b610f44565b6101026101b1366004611f7b565b611166565b61010261118c565b6101026101cc366004611f1b565b611193565b61013b61135a565b61013b61137e565b61013b6113a2565b6000807f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf196001600160a01b031663d6446d4385856040518363ffffffff1660e01b815260040161023a929190612121565b60206040518083038186803b15801561025257600080fd5b505afa158015610266573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028a91906120aa565b90508061029c57600019915050610529565b600061035c7f000000000000000000000000203153522b9eaef4ae17c6e99851ee7b2f7d312e6001600160a01b0316633bffbbe2876040518263ffffffff1660e01b81526004016102ed919061210d565b60206040518083038186803b15801561030557600080fd5b505afa158015610319573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033d91906120aa565b610356600160701b6103508660646113c6565b906113c6565b906113eb565b90506012856001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561039957600080fd5b505afa1580156103ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d191906120c2565b60ff1611156103fb5760405162461bcd60e51b81526004016103f29061238a565b60405180910390fd5b846001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561043457600080fd5b505afa158015610448573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046c91906120c2565b60120360ff16600a0a7f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf196001600160a01b031663e51e119e87876040518363ffffffff1660e01b81526004016104c3929190612121565b60206040518083038186803b1580156104db57600080fd5b505afa1580156104ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051391906120aa565b828161051b57fe5b048161052357fe5b04925050505b92915050565b600160701b81565b600060026000541415610591576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026000558433851515806105a557508415155b6105c15760405162461bcd60e51b81526004016103f290612298565b604051634ac1c33d60e01b81526000906001600160a01b037f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf191690634ac1c33d90610612908b903390600401612121565b60206040518083038186803b15801561062a57600080fd5b505afa15801561063e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066291906120aa565b905080861115610670578095505b8661068557610680883388611450565b610842565b85811415610722576040516311af95b160e31b81526001600160a01b037f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf191690638d7cad88906106dd908b9033908c9060040161213b565b600060405180830381600087803b1580156106f757600080fd5b505af115801561070b573d6000803e3d6000fd5b505050508560001461068057610680883388611450565b6040516311af95b160e31b81526001600160a01b037f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf191690638d7cad8890610772908b9033908c9060040161213b565b600060405180830381600087803b15801561078c57600080fd5b505af11580156107a0573d6000803e3d6000fd5b50505050856000146107b7576107b7883388611450565b60405163c640752d60e01b81526001600160a01b037f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf19169063c640752d90610805908b903390600401612121565b600060405180830381600087803b15801561081f57600080fd5b505af1158015610833573d6000803e3d6000fd5b5050505061084288338761173b565b336001600160a01b0316886001600160a01b03167fa702ae6024e8b4c2b0eb162b1453dacb93cf6922f5a2d7236faed898c21148f889896040516108879291906123ef565b60405180910390a385935050604051632ed56dff60e21b81526001600160a01b037f0000000000000000000000001a5ff58bc3246eb233fea20d32b79b5f01ec650c169063bb55b7fc906108e19085908590600401612121565b600060405180830381600087803b1580156108fb57600080fd5b505af115801561090f573d6000803e3d6000fd5b505060016000555092979650505050505050565b7f00000000000000000000000075fbfe26b21fd3ea008af0c764949f8214150c8f81565b6000807f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf196001600160a01b031663d6446d4386866040518363ffffffff1660e01b8152600401610998929190612121565b60206040518083038186803b1580156109b057600080fd5b505afa1580156109c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e891906120aa565b9050806109f9576000915050610a24565b6000610a06868686611193565b9050610a1f81610356600160701b6103508660646113c6565b925050505b9392505050565b600080610a39858585611193565b9050610a468585836118c0565b95945050505050565b60026000541415610aa7576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002600055833383151580610abb57508415155b610ad75760405162461bcd60e51b81526004016103f290612298565b6012866001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610b1257600080fd5b505afa158015610b26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4a91906120c2565b60ff161115610b6b5760405162461bcd60e51b81526004016103f29061238a565b83610bf75760405163770c1acf60e11b81526001600160a01b037f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf19169063ee18359e90610bc090899033908a9060040161213b565b600060405180830381600087803b158015610bda57600080fd5b505af1158015610bee573d6000803e3d6000fd5b50505050610e6a565b6000610c0287611a30565b905060007f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf196001600160a01b0316634ac1c33d89336040518363ffffffff1660e01b8152600401610c54929190612121565b60206040518083038186803b158015610c6c57600080fd5b505afa158015610c80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca491906120aa565b1515905080610d3057604051630c6d894f60e41b81526001600160a01b037f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf19169063c6d894f090610cfd908b903390879060040161213b565b600060405180830381600087803b158015610d1757600080fd5b505af1158015610d2b573d6000803e3d6000fd5b505050505b8615610db95760405163770c1acf60e11b81526001600160a01b037f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf19169063ee18359e90610d86908b9033908c9060040161213b565b600060405180830381600087803b158015610da057600080fd5b505af1158015610db4573d6000803e3d6000fd5b505050505b6040516314890dcb60e21b81526001600160a01b037f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf191690635224372c90610e09908b9033908b9060040161213b565b602060405180830381600087803b158015610e2357600080fd5b505af1158015610e37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5b91906120aa565b50610e6788338761173b565b50505b336001600160a01b0316866001600160a01b03167f6423b6056e64b3b29cb2d342362b47c26fa8d6877da27ea152354060df19b9bc8787604051610eaf9291906123ef565b60405180910390a3604051632ed56dff60e21b81526001600160a01b037f0000000000000000000000001a5ff58bc3246eb233fea20d32b79b5f01ec650c169063bb55b7fc90610f059085908590600401612121565b600060405180830381600087803b158015610f1f57600080fd5b505af1158015610f33573d6000803e3d6000fd5b505060016000555050505050505050565b60026000541415610f9c576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026000908155610fae848484611193565b9050610fbb8484836118c0565b610fd75760405162461bcd60e51b81526004016103f29061222a565b6000611086620186a06103567f000000000000000000000000203153522b9eaef4ae17c6e99851ee7b2f7d312e6001600160a01b03166315a04ea2896040518263ffffffff1660e01b815260040161102f919061210d565b60206040518083038186803b15801561104757600080fd5b505afa15801561105b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107f91906120aa565b85906113c6565b9050600061109c600160701b6103568585611b27565b604051633a15193760e11b81529091506001600160a01b037f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf19169063742a326e906110ef9089908990869060040161213b565b600060405180830381600087803b15801561110957600080fd5b505af115801561111d573d6000803e3d6000fd5b50506040516001600160a01b038089169350891691507f5b79a897d30813a62a1f95ba180d3320d3701d96605708b81105e00719a069e490600090a35050600160005550505050565b600080611174863386611b39565b905061118286868386610537565b9695505050505050565b620186a081565b60008061119f85611a30565b6040516362c03ee360e11b81529091506001600160a01b037f00000000000000000000000075fbfe26b21fd3ea008af0c764949f8214150c8f169063c5807dc6906111ee9084906004016123cf565b60206040518083038186803b15801561120657600080fd5b505afa15801561121a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123e9190611ec7565b6001600160a01b03166314b094fb867f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf196001600160a01b031663e51e119e89896040518363ffffffff1660e01b815260040161129b929190612121565b60206040518083038186803b1580156112b357600080fd5b505afa1580156112c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112eb91906120aa565b866040518463ffffffff1660e01b815260040161130a9392919061215f565b60206040518083038186803b15801561132257600080fd5b505afa158015611336573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4691906120aa565b7f0000000000000000000000001a5ff58bc3246eb233fea20d32b79b5f01ec650c81565b7f000000000000000000000000203153522b9eaef4ae17c6e99851ee7b2f7d312e81565b7f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf1981565b6000826113d557506000610529565b50818102818382816113e357fe5b041461052957fe5b60008161143f576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161144857fe5b049392505050565b604051633e543e5b60e11b81526000906001600160a01b037f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf191690637ca87cb6906114a39087908790879060040161213b565b60206040518083038186803b1580156114bb57600080fd5b505afa1580156114cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f391906120aa565b90507f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf196001600160a01b0316633d1aa9637f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf196001600160a01b03166374e6076c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561157d57600080fd5b505afa158015611591573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b59190611ec7565b85846040518463ffffffff1660e01b81526004016115d59392919061213b565b600060405180830381600087803b1580156115ef57600080fd5b505af1158015611603573d6000803e3d6000fd5b5050604051631da649cf60e01b8152600092506001600160a01b037f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf19169150631da649cf9061165a9088908890889060040161213b565b602060405180830381600087803b15801561167457600080fd5b505af1158015611688573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ac91906120aa565b905080611734576040516362b40f9f60e01b81526001600160a01b037f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf1916906362b40f9f906117019088908890600401612121565b600060405180830381600087803b15801561171b57600080fd5b505af115801561172f573d6000803e3d6000fd5b505050505b5050505050565b6000611748848484611193565b905060006064600160701b7f000000000000000000000000203153522b9eaef4ae17c6e99851ee7b2f7d312e6001600160a01b031663b85c4496886040518263ffffffff1660e01b815260040161179f919061210d565b60206040518083038186803b1580156117b757600080fd5b505afa1580156117cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ef91906120aa565b8402816117f857fe5b048161180057fe5b049050807f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf196001600160a01b031663d6446d4387876040518363ffffffff1660e01b8152600401611852929190612121565b60206040518083038186803b15801561186a57600080fd5b505afa15801561187e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a291906120aa565b11156117345760405162461bcd60e51b81526004016103f290612348565b6000807f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf196001600160a01b031663d6446d4386866040518363ffffffff1660e01b8152600401611911929190612121565b60206040518083038186803b15801561192957600080fd5b505afa15801561193d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196191906120aa565b905080611972576000915050610a24565b604051631dffddf160e11b81526001600160a01b037f000000000000000000000000203153522b9eaef4ae17c6e99851ee7b2f7d312e1690633bffbbe2906119be90889060040161210d565b60206040518083038186803b1580156119d657600080fd5b505afa1580156119ea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0e91906120aa565b611a2584610356600160701b6103508660646113c6565b101595945050505050565b6000611a3b82611ca7565b905080611a5a5760405162461bcd60e51b81526004016103f2906122cf565b6040516362c03ee360e11b81526000906001600160a01b037f00000000000000000000000075fbfe26b21fd3ea008af0c764949f8214150c8f169063c5807dc690611aa99085906004016123cf565b60206040518083038186803b158015611ac157600080fd5b505afa158015611ad5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af99190611ec7565b90506001600160a01b038116611b215760405162461bcd60e51b81526004016103f290612261565b50919050565b600082821115611b3357fe5b50900390565b6000806301e133807f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf196001600160a01b03166388ad7a6187876040518363ffffffff1660e01b8152600401611b8f929190612121565b60206040518083038186803b158015611ba757600080fd5b505afa158015611bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bdf91906120aa565b42037f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf196001600160a01b031663d4b93dbe88886040518363ffffffff1660e01b8152600401611c2f929190612121565b60206040518083038186803b158015611c4757600080fd5b505afa158015611c5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7f91906120aa565b0281611c8757fe5b04905080620186a001620186a0840281611c9d57fe5b0495945050505050565b6000807f00000000000000000000000075fbfe26b21fd3ea008af0c764949f8214150c8f6001600160a01b03166347ae34db6040518163ffffffff1660e01b815260040160006040518083038186803b158015611d0357600080fd5b505afa158015611d17573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d3f9190810190611fdc565b905060005b8151811015611e98577f000000000000000000000000203153522b9eaef4ae17c6e99851ee7b2f7d312e6001600160a01b031663aca345ee6040518163ffffffff1660e01b815260040160206040518083038186803b158015611da657600080fd5b505afa158015611dba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dde9190611ec7565b6001600160a01b031663fec0feb3838381518110611df857fe5b6020026020010151866040518363ffffffff1660e01b8152600401611e1e9291906123d8565b60206040518083038186803b158015611e3657600080fd5b505afa158015611e4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e6e919061208a565b15611e9057818181518110611e7f57fe5b602002602001015192505050611eb1565b600101611d44565b5060405162461bcd60e51b81526004016103f290612311565b919050565b600060808284031215611b21578081fd5b600060208284031215611ed8578081fd5b8151610a2481612449565b60008060408385031215611ef5578081fd5b8235611f0081612449565b91506020830135611f1081612449565b809150509250929050565b600080600060608486031215611f2f578081fd5b8335611f3a81612449565b92506020840135611f4a81612449565b9150604084013567ffffffffffffffff811115611f65578182fd5b611f7186828701611eb6565b9150509250925092565b60008060008060808587031215611f90578081fd5b8435611f9b81612449565b93506020850135925060408501359150606085013567ffffffffffffffff811115611fc4578182fd5b611fd087828801611eb6565b91505092959194509250565b60006020808385031215611fee578182fd5b825167ffffffffffffffff80821115612005578384fd5b818501915085601f830112612018578384fd5b81518181111561202457fe5b8381026040518582820101818110858211171561203d57fe5b604052828152858101935084860182860187018a101561205b578788fd5b8795505b8386101561207d57805185526001959095019493860193860161205f565b5098975050505050505050565b60006020828403121561209b578081fd5b81518015158114610a24578182fd5b6000602082840312156120bb578081fd5b5051919050565b6000602082840312156120d3578081fd5b815160ff81168114610a24578182fd5b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03841681526020810183905260606040820152600061218583806123fd565b6080606085015261219a60e0850182846120e3565b9150506121aa60208501856123fd565b605f19808685030160808701526121c28483856120e3565b93506121d160408801886123fd565b93509150808685030160a08701526121ea8484846120e3565b93506121f960608801886123fd565b93509150808685030160c0870152506122138383836120e3565b98975050505050505050565b901515815260200190565b6020808252601c908201527f556e69742050726f746f636f6c3a20534146455f504f534954494f4e00000000604082015260600190565b6020808252601e908201527f556e69742050726f746f636f6c3a2044495341424c45445f4f5241434c450000604082015260600190565b60208082526019908201527f556e69742050726f746f636f6c3a205553454c4553535f545800000000000000604082015260600190565b60208082526022908201527f556e69742050726f746f636f6c3a20494e56414c49445f4f5241434c455f5459604082015261504560f01b606082015260800190565b6020808252601e908201527f556e69742050726f746f636f6c3a204e4f5f4f5241434c455f464f554e440000604082015260600190565b60208082526022908201527f556e69742050726f746f636f6c3a20554e444552434f4c4c41544552414c495a604082015261115160f21b606082015260800190565b60208082526025908201527f556e69742050726f746f636f6c3a204e4f545f535550504f525445445f444543604082015264494d414c5360d81b606082015260800190565b90815260200190565b9182526001600160a01b0316602082015260400190565b918252602082015260400190565b6000808335601e19843603018112612413578283fd5b830160208101925035905067ffffffffffffffff81111561243357600080fd5b80360383131561244257600080fd5b9250929050565b6001600160a01b038116811461245e57600080fd5b5056fea2646970667358221220ef2cf8c28c1702809c77454b2c1f1915f4fc2cfe9ef52f743313d5d257fb53e264736f6c63430007060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000203153522b9eaef4ae17c6e99851ee7b2f7d312e00000000000000000000000075fbfe26b21fd3ea008af0c764949f8214150c8f0000000000000000000000001a5ff58bc3246eb233fea20d32b79b5f01ec650c
-----Decoded View---------------
Arg [0] : _vaultManagerParameters (address): 0x203153522B9EAef4aE17c6e99851EE7b2F7D312E
Arg [1] : _oracleRegistry (address): 0x75fBFe26B21fd3EA008af0C764949f8214150C8f
Arg [2] : _cdpRegistry (address): 0x1a5Ff58BC3246Eb233fEA20D32b79B5F01eC650c
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000203153522b9eaef4ae17c6e99851ee7b2f7d312e
Arg [1] : 00000000000000000000000075fbfe26b21fd3ea008af0c764949f8214150c8f
Arg [2] : 0000000000000000000000001a5ff58bc3246eb233fea20d32b79b5f01ec650c
Deployed Bytecode Sourcemap
567:11958:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11194:550;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;858:36;;;:::i;4273:1310::-;;;;;;:::i;:::-;;:::i;757:47::-;;;:::i;:::-;;;;;;;:::i;10564:419::-;;;;;;:::i;:::-;;:::i;10027:336::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2769:1159::-;;;;;;:::i;:::-;;:::i;:::-;;7475:889;;;;;;:::i;:::-;;:::i;5916:303::-;;;;;;:::i;:::-;;:::i;900:42::-;;;:::i;8370:345::-;;;;;;:::i;:::-;;:::i;810:41::-;;;:::i;688:63::-;;;:::i;653:29::-;;;:::i;11194:550::-;11300:4;11316:9;11328:5;-1:-1:-1;;;;;11328:18:9;;11347:5;11354;11328:32;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11316:44;-1:-1:-1;11374:9:9;11370:30;;-1:-1:-1;;11385:15:9;;;;;11370:30;11419:23;11445:75;11473:22;-1:-1:-1;;;;;11473:39:9;;11513:5;11473:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11445:23;-1:-1:-1;;;11445:13:9;:4;11454:3;11445:8;:13::i;:::-;:17;;:23::i;:::-;:27;;:75::i;:::-;11419:101;;11575:2;11554:5;-1:-1:-1;;;;;11547:22:9;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:30;;;;11539:80;;;;-1:-1:-1;;;11539:80:9;;;;;;;:::i;:::-;;;;;;;;;11719:5;-1:-1:-1;;;;;11712:22:9;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11707:2;:29;11700:37;;:2;:37;11666:5;-1:-1:-1;;;;;11666:17:9;;11684:5;11691;11666:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11645:18;:52;;;;;;:92;;;;;;11638:99;;;;11194:550;;;;;:::o;858:36::-;-1:-1:-1;;;858:36:9;:::o;4273:1310::-;4451:4;1670:1:0;2250:7;;:19;;2242:63;;;;;-1:-1:-1;;;2242:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;1670:1;2380:7;:18;4423:5:9;4430:10:::1;4510:16:::0;;::::2;::::0;:35:::2;;-1:-1:-1::0;4530:15:9;;::::2;4510:35;4502:73;;;;-1:-1:-1::0;;;4502:73:9::2;;;;;;;:::i;:::-;4598:30;::::0;-1:-1:-1;;;4598:30:9;;4586:9:::2;::::0;-1:-1:-1;;;;;4598:5:9::2;:11;::::0;::::2;::::0;:30:::2;::::0;4610:5;;4617:10:::2;::::0;4598:30:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4586:42;;4688:4;4675:10;:17;4671:45;;;4709:4;4696:17;;4671:45;4730:16:::0;4726:734:::2;;4762:37;4769:5;4776:10;4788;4762:6;:37::i;:::-;4726:734;;;4842:10;4834:4;:18;4830:620;;;4872:50;::::0;-1:-1:-1;;;4872:50:9;;-1:-1:-1;;;;;4872:5:9::2;:18;::::0;::::2;::::0;:50:::2;::::0;4891:5;;4898:10:::2;::::0;4910:11;;4872:50:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;4944:10;4958:1;4944:15;4940:99;;4983:37;4990:5;4997:10;5009;4983:6;:37::i;4830:620::-;5137:50;::::0;-1:-1:-1;;;5137:50:9;;-1:-1:-1;;;;;5137:5:9::2;:18;::::0;::::2;::::0;:50:::2;::::0;5156:5;;5163:10:::2;::::0;5175:11;;5137:50:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;5210:10;5224:1;5210:15;5206:99;;5249:37;5256:5;5263:10;5275;5249:6;:37::i;:::-;5323:31;::::0;-1:-1:-1;;;5323:31:9;;-1:-1:-1;;;;;5323:5:9::2;:12;::::0;::::2;::::0;:31:::2;::::0;5336:5;;5343:10:::2;::::0;5323:31:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;5373:62;5406:5;5413:10;5425:9;5373:32;:62::i;:::-;5512:10;-1:-1:-1::0;;;;;5500:48:9::2;5505:5;-1:-1:-1::0;;;;;5500:48:9::2;;5524:11;5537:10;5500:48;;;;;;;:::i;:::-;;;;;;;;5566:10;5559:17;;;1457:36:::1;::::0;-1:-1:-1;;;1457:36:9;;-1:-1:-1;;;;;1457:11:9::1;:22;::::0;::::1;::::0;:36:::1;::::0;1480:5;;1487;;1457:36:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1627:1:0;2553:7;:22;-1:-1:-1;4273:1310:9;;;-1:-1:-1;;;;;;;4273:1310:9:o;757:47::-;;;:::o;10564:419::-;10726:4;10742:9;10754:5;-1:-1:-1;;;;;10754:18:9;;10773:5;10780;10754:32;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10742:44;-1:-1:-1;10800:9:9;10796:29;;10823:1;10811:14;;;;;10796:29;10844:18;10865:51;10892:5;10899;10906:9;10865:26;:51::i;:::-;10844:72;-1:-1:-1;10934:42:9;10844:72;10934:23;-1:-1:-1;;;10934:13:9;:4;10943:3;10934:8;:13::i;:42::-;10927:49;;;;10564:419;;;;;;:::o;10027:336::-;10197:4;10214:18;10235:51;10262:5;10269;10276:9;10235:26;:51::i;:::-;10214:72;;10304:52;10328:5;10335;10342:13;10304:23;:52::i;:::-;10297:59;10027:336;-1:-1:-1;;;;;10027:336:9:o;2769:1159::-;1670:1:0;2250:7;;:19;;2242:63;;;;;-1:-1:-1;;;2242:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;1670:1;2380:7;:18;2919:5:9;2926:10:::1;2956:15:::0;;::::2;::::0;:35:::2;;-1:-1:-1::0;2975:16:9;;::::2;2956:35;2948:73;;;;-1:-1:-1::0;;;2948:73:9::2;;;;;;;:::i;:::-;3076:2;3055:5;-1:-1:-1::0;;;;;3048:22:9::2;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:30;;;;3040:80;;;;-1:-1:-1::0;;;3040:80:9::2;;;;;;;:::i;:::-;3135:15:::0;3131:702:::2;;3167:49;::::0;-1:-1:-1;;;3167:49:9;;-1:-1:-1;;;;;3167:5:9::2;:17;::::0;::::2;::::0;:49:::2;::::0;3185:5;;3192:10:::2;::::0;3204:11;;3167:49:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;3131:702;;;3249:15;3267:24;3285:5;3267:17;:24::i;:::-;3249:42;;3306:12;3321:5;-1:-1:-1::0;;;;;3321:11:9::2;;3333:5;3340:10;3321:30;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:35:::0;::::2;::::0;-1:-1:-1;3321:35:9;3371:125:::2;;3439:42;::::0;-1:-1:-1;;;3439:42:9;;-1:-1:-1;;;;;3439:5:9::2;:11;::::0;::::2;::::0;:42:::2;::::0;3451:5;;3458:10:::2;::::0;3470;;3439:42:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;3371:125;3514:16:::0;;3510:104:::2;;3550:49;::::0;-1:-1:-1;;;3550:49:9;;-1:-1:-1;;;;;3550:5:9::2;:17;::::0;::::2;::::0;:49:::2;::::0;3568:5;;3575:10:::2;::::0;3587:11;;3550:49:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;3510:104;3662:43;::::0;-1:-1:-1;;;3662:43:9;;-1:-1:-1;;;;;3662:5:9::2;:12;::::0;::::2;::::0;:43:::2;::::0;3675:5;;3682:10:::2;::::0;3694;;3662:43:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3759:62;3792:5;3799:10;3811:9;3759:32;:62::i;:::-;3131:702;;;3885:10;-1:-1:-1::0;;;;;3873:48:9::2;3878:5;-1:-1:-1::0;;;;;3873:48:9::2;;3897:11;3910:10;3873:48;;;;;;;:::i;:::-;;;;;;;;1457:36:::1;::::0;-1:-1:-1;;;1457:36:9;;-1:-1:-1;;;;;1457:11:9::1;:22;::::0;::::1;::::0;:36:::1;::::0;1480:5;;1487;;1457:36:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1627:1:0;2553:7;:22;-1:-1:-1;;;;;;;;2769:1159:9:o;7475:889::-;1670:1:0;2250:7;;:19;;2242:63;;;;;-1:-1:-1;;;2242:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;1670:1;2380:7;:18;;;7681:51:9::1;7708:5:::0;7715;7722:9;7681:26:::1;:51::i;:::-;7660:72;;7812:52;7836:5;7843;7850:13;7812:23;:52::i;:::-;7804:93;;;;-1:-1:-1::0;;;7804:93:9::1;;;;;;;:::i;:::-;7908:29;7940:111;939:3;7940:90;7971:22;-1:-1:-1::0;;;;;7971:42:9::1;;8014:5;7971:49;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7940:13:::0;;:17:::1;:90::i;:111::-;7908:143:::0;-1:-1:-1;8062:28:9::1;8093:53;-1:-1:-1::0;;;8093:43:9::1;:13:::0;7908:143;8093:17:::1;:43::i;:53::-;8207:63;::::0;-1:-1:-1;;;8207:63:9;;8062:84;;-1:-1:-1;;;;;;8207:5:9::1;:24;::::0;::::1;::::0;:63:::1;::::0;8232:5;;8239;;8062:84;;8207:63:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;8323:34:9::1;::::0;-1:-1:-1;;;;;8323:34:9;;::::1;::::0;-1:-1:-1;8323:34:9;::::1;::::0;-1:-1:-1;8323:34:9::1;::::0;;;::::1;-1:-1:-1::0;;1627:1:0;2553:7;:22;-1:-1:-1;;;;7475:889:9:o;5916:303::-;6068:4;6085:15;6103:44;6118:5;6125:10;6137:9;6103:14;:44::i;:::-;6085:62;;6165:47;6170:5;6177:11;6190:10;6202:9;6165:4;:47::i;:::-;6158:54;5916:303;-1:-1:-1;;;;;;5916:303:9:o;900:42::-;939:3;900:42;:::o;8370:345::-;8512:4;8528:15;8546:24;8564:5;8546:17;:24::i;:::-;8606:39;;-1:-1:-1;;;8606:39:9;;8528:42;;-1:-1:-1;;;;;;8606:14:9;:27;;;;:39;;8528:42;;8606:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;8587:70:9;;8658:5;8665;-1:-1:-1;;;;;8665:17:9;;8683:5;8690;8665:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8698:9;8587:121;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;810:41::-;;;:::o;688:63::-;;;:::o;653:29::-;;;:::o;314:195:1:-;372:9;397:6;393:45;;-1:-1:-1;426:1:1;419:8;;393:45;-1:-1:-1;451:5:1;;;455:1;451;:5;:1;473:5;;;;;:10;466:18;;;599:151;657:7;684:6;676:45;;;;;-1:-1:-1;;;676:45:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;742:1;738;:5;;;;;;;599:151;-1:-1:-1;;;599:151:1:o;6247:423:9:-;6340:44;;-1:-1:-1;;;6340:44:9;;6329:8;;-1:-1:-1;;;;;6340:5:9;:18;;;;:44;;6359:5;;6366;;6373:10;;6340:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6329:55;;6394:5;-1:-1:-1;;;;;6394:15:9;;6410:5;-1:-1:-1;;;;;6410:10:9;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6424:5;6431:3;6394:41;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6509:37:9;;-1:-1:-1;;;6509:37:9;;6492:14;;-1:-1:-1;;;;;;6509:5:9;:11;;-1:-1:-1;6509:11:9;;:37;;6521:5;;6528;;6535:10;;6509:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6492:54;-1:-1:-1;6560:14:9;6556:108;;6626:27;;-1:-1:-1;;;6626:27:9;;-1:-1:-1;;;;;6626:5:9;:13;;;;:27;;6640:5;;6647;;6626:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6556:108;6247:423;;;;;:::o;6676:581::-;6878:18;6899:51;6926:5;6933;6940:9;6899:26;:51::i;:::-;6878:72;;6998:13;7092:3;-1:-1:-1;;;7030:22:9;-1:-1:-1;;;;;7030:45:9;;7076:5;7030:52;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7014:13;:68;:75;;;;;;:81;;;;;;6998:97;;7203:8;7167:5;-1:-1:-1;;;;;7167:18:9;;7186:5;7193;7167:32;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;;7159:91;;;;-1:-1:-1;;;7159:91:9;;;;;;;:::i;9026:409::-;9162:4;9178:9;9190:5;-1:-1:-1;;;;;9190:18:9;;9209:5;9216;9190:32;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9178:44;-1:-1:-1;9295:9:9;9291:27;;9313:5;9306:12;;;;;9291:27;9382:46;;-1:-1:-1;;;9382:46:9;;-1:-1:-1;;;;;9382:22:9;:39;;;;:46;;9422:5;;9382:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9336:42;9364:13;9336:23;-1:-1:-1;;;9336:13:9;:4;9345:3;9336:8;:13::i;:42::-;:92;;;9026:409;-1:-1:-1;;;;;9026:409:9:o;9441:344::-;9506:15;9546:21;9561:5;9546:14;:21::i;:::-;9533:34;-1:-1:-1;9585:15:9;9577:62;;;;-1:-1:-1;;;9577:62:9;;;;;;;:::i;:::-;9666:39;;-1:-1:-1;;;9666:39:9;;9649:14;;-1:-1:-1;;;;;9666:14:9;:27;;;;:39;;9694:10;;9666:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9649:56;-1:-1:-1;;;;;;9723:20:9;;9715:63;;;;-1:-1:-1;;;9715:63:9;;;;;;;:::i;:::-;9441:344;;;;:::o;870:120:1:-;928:7;959:1;954;:6;;947:14;;;;-1:-1:-1;978:5:1;;;870:120::o;11750:293:9:-;11843:4;11859:8;11958;11924:5;-1:-1:-1;;;;;11924:16:9;;11941:5;11948;11924:30;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11906:15;:48;11870:5;-1:-1:-1;;;;;11870:18:9;;11889:5;11896;11870:32;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:85;:96;;;;;;11859:107;;12032:3;939;12014:21;939:3;11983:9;:27;:53;;;;;;;11750:293;-1:-1:-1;;;;;11750:293:9:o;12049:474::-;12111:4;12127:33;12163:14;-1:-1:-1;;;;;12163:37:9;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12163:39:9;;;;;;;;;;;;:::i;:::-;12127:75;;12217:6;12212:255;12233:19;:26;12229:1;:30;12212:255;;;12301:22;-1:-1:-1;;;;;12301:38:9;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12284:78:9;;12363:19;12383:1;12363:22;;;;;;;;;;;;;;12387:5;12284:109;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12280:177;;;12420:19;12440:1;12420:22;;;;;;;;;;;;;;12413:29;;;;;;12280:177;12261:3;;12212:255;;;;12476:40;;-1:-1:-1;;;12476:40:9;;;;;;;:::i;12049:474::-;;;;:::o;14:175:10:-;;130:3;121:6;116:3;112:16;108:26;105:2;;;151:5;144;137:20;194:263;;317:2;305:9;296:7;292:23;288:32;285:2;;;338:6;330;323:22;285:2;375:9;369:16;394:33;421:5;394:33;:::i;462:402::-;;;591:2;579:9;570:7;566:23;562:32;559:2;;;612:6;604;597:22;559:2;656:9;643:23;675:33;702:5;675:33;:::i;:::-;727:5;-1:-1:-1;784:2:10;769:18;;756:32;797:35;756:32;797:35;:::i;:::-;851:7;841:17;;;549:315;;;;;:::o;869:674::-;;;;1049:2;1037:9;1028:7;1024:23;1020:32;1017:2;;;1070:6;1062;1055:22;1017:2;1114:9;1101:23;1133:33;1160:5;1133:33;:::i;:::-;1185:5;-1:-1:-1;1242:2:10;1227:18;;1214:32;1255:35;1214:32;1255:35;:::i;:::-;1309:7;-1:-1:-1;1367:2:10;1352:18;;1339:32;1394:18;1383:30;;1380:2;;;1431:6;1423;1416:22;1380:2;1459:78;1529:7;1520:6;1509:9;1505:22;1459:78;:::i;:::-;1449:88;;;1007:536;;;;;:::o;1548:668::-;;;;;1745:3;1733:9;1724:7;1720:23;1716:33;1713:2;;;1767:6;1759;1752:22;1713:2;1811:9;1798:23;1830:33;1857:5;1830:33;:::i;:::-;1882:5;-1:-1:-1;1934:2:10;1919:18;;1906:32;;-1:-1:-1;1985:2:10;1970:18;;1957:32;;-1:-1:-1;2040:2:10;2025:18;;2012:32;2067:18;2056:30;;2053:2;;;2104:6;2096;2089:22;2053:2;2132:78;2202:7;2193:6;2182:9;2178:22;2132:78;:::i;:::-;2122:88;;;1703:513;;;;;;;:::o;2221:1130::-;;2347:2;2390;2378:9;2369:7;2365:23;2361:32;2358:2;;;2411:6;2403;2396:22;2358:2;2449:9;2443:16;2478:18;2519:2;2511:6;2508:14;2505:2;;;2540:6;2532;2525:22;2505:2;2583:6;2572:9;2568:22;2558:32;;2628:7;2621:4;2617:2;2613:13;2609:27;2599:2;;2655:6;2647;2640:22;2599:2;2689;2683:9;2711:2;2707;2704:10;2701:2;;;2717:9;2701:2;2755;2751;2747:11;2787:2;2781:9;2838:2;2833;2825:6;2821:15;2817:24;2891:6;2879:10;2876:22;2871:2;2859:10;2856:18;2853:46;2850:2;;;2902:9;2850:2;2929;2922:22;2979:18;;;3013:15;;;;-1:-1:-1;3048:11:10;;;3078;;;3074:20;;3071:33;-1:-1:-1;3068:2:10;;;3122:6;3114;3107:22;3068:2;3149:6;3140:15;;3164:156;3178:2;3175:1;3172:9;3164:156;;;3235:10;;3223:23;;3196:1;3189:9;;;;;3266:12;;;;3298;;3164:156;;;-1:-1:-1;3339:6:10;2327:1024;-1:-1:-1;;;;;;;;2327:1024:10:o;3356:297::-;;3476:2;3464:9;3455:7;3451:23;3447:32;3444:2;;;3497:6;3489;3482:22;3444:2;3534:9;3528:16;3587:5;3580:13;3573:21;3566:5;3563:32;3553:2;;3614:6;3606;3599:22;3658:194;;3781:2;3769:9;3760:7;3756:23;3752:32;3749:2;;;3802:6;3794;3787:22;3749:2;-1:-1:-1;3830:16:10;;3739:113;-1:-1:-1;3739:113:10:o;3857:293::-;;3978:2;3966:9;3957:7;3953:23;3949:32;3946:2;;;3999:6;3991;3984:22;3946:2;4036:9;4030:16;4086:4;4079:5;4075:16;4068:5;4065:27;4055:2;;4111:6;4103;4096:22;4155:270;;4245:6;4240:3;4233:19;4297:6;4290:5;4283:4;4278:3;4274:14;4261:43;4349:3;4342:4;4333:6;4328:3;4324:16;4320:27;4313:40;4414:4;4407:2;4403:7;4398:2;4390:6;4386:15;4382:29;4377:3;4373:39;4369:50;4362:57;;4223:202;;;;;:::o;4430:203::-;-1:-1:-1;;;;;4594:32:10;;;;4576:51;;4564:2;4549:18;;4531:102::o;4638:304::-;-1:-1:-1;;;;;4868:15:10;;;4850:34;;4920:15;;4915:2;4900:18;;4893:43;4800:2;4785:18;;4767:175::o;5264:383::-;-1:-1:-1;;;;;5530:15:10;;;5512:34;;5582:15;;;;5577:2;5562:18;;5555:43;5629:2;5614:18;;5607:34;;;;5462:2;5447:18;;5429:218::o;6032:1413::-;-1:-1:-1;;;;;6283:32:10;;6265:51;;6347:2;6332:18;;6325:34;;;6395:2;6390;6375:18;;6368:30;6032:1413;6441:48;6482:6;;6441:48;:::i;:::-;6525:4;6520:2;6509:9;6505:18;6498:32;6553:76;6624:3;6613:9;6609:19;6595:12;6581;6553:76;:::i;:::-;6539:90;;;6676:57;6729:2;6721:6;6717:15;6709:6;6676:57;:::i;:::-;6756:2;6752:7;6825:2;6813:9;6805:6;6801:22;6797:31;6790:4;6779:9;6775:20;6768:61;6852:67;6912:6;6896:14;6880;6852:67;:::i;:::-;6838:81;;6966:57;7019:2;7011:6;7007:15;6999:6;6966:57;:::i;:::-;6928:95;;;;7088:2;7076:9;7068:6;7064:22;7060:31;7054:3;7043:9;7039:19;7032:60;7115:67;7175:6;7159:14;7143;7115:67;:::i;:::-;7101:81;;7229:57;7282:2;7274:6;7270:15;7262:6;7229:57;:::i;:::-;7191:95;;;;7351:2;7339:9;7331:6;7327:22;7323:31;7317:3;7306:9;7302:19;7295:60;;7372:67;7432:6;7416:14;7400;7372:67;:::i;:::-;7364:75;6255:1190;-1:-1:-1;;;;;;;;6255:1190:10:o;7450:187::-;7615:14;;7608:22;7590:41;;7578:2;7563:18;;7545:92::o;8562:352::-;8764:2;8746:21;;;8803:2;8783:18;;;8776:30;8842;8837:2;8822:18;;8815:58;8905:2;8890:18;;8736:178::o;8919:354::-;9121:2;9103:21;;;9160:2;9140:18;;;9133:30;9199:32;9194:2;9179:18;;9172:60;9264:2;9249:18;;9093:180::o;9278:349::-;9480:2;9462:21;;;9519:2;9499:18;;;9492:30;9558:27;9553:2;9538:18;;9531:55;9618:2;9603:18;;9452:175::o;9632:398::-;9834:2;9816:21;;;9873:2;9853:18;;;9846:30;9912:34;9907:2;9892:18;;9885:62;-1:-1:-1;;;9978:2:10;9963:18;;9956:32;10020:3;10005:19;;9806:224::o;10035:354::-;10237:2;10219:21;;;10276:2;10256:18;;;10249:30;10315:32;10310:2;10295:18;;10288:60;10380:2;10365:18;;10209:180::o;10394:398::-;10596:2;10578:21;;;10635:2;10615:18;;;10608:30;10674:34;10669:2;10654:18;;10647:62;-1:-1:-1;;;10740:2:10;10725:18;;10718:32;10782:3;10767:19;;10568:224::o;10797:401::-;10999:2;10981:21;;;11038:2;11018:18;;;11011:30;11077:34;11072:2;11057:18;;11050:62;-1:-1:-1;;;11143:2:10;11128:18;;11121:35;11188:3;11173:19;;10971:227::o;11203:177::-;11349:25;;;11337:2;11322:18;;11304:76::o;11385:274::-;11559:25;;;-1:-1:-1;;;;;11620:32:10;11615:2;11600:18;;11593:60;11547:2;11532:18;;11514:145::o;11664:248::-;11838:25;;;11894:2;11879:18;;11872:34;11826:2;11811:18;;11793:119::o;11917:513::-;;;12044:3;12031:17;12130:2;12126:7;12115:8;12099:14;12095:29;12091:43;12071:18;12067:68;12057:2;;12153:5;12146;12139:20;12057:2;12185:33;;12289:4;12276:18;;;-1:-1:-1;12237:21:10;;-1:-1:-1;12317:18:10;12306:30;;12303:2;;;12349:1;12346;12339:12;12303:2;12399:6;12383:14;12379:27;12369:8;12365:42;12362:2;;;12420:1;12417;12410:12;12362:2;11995:435;;;;;:::o;12435:133::-;-1:-1:-1;;;;;12512:31:10;;12502:42;;12492:2;;12558:1;12555;12548:12;12492:2;12482:86;:::o
Swarm Source
ipfs://ef2cf8c28c1702809c77454b2c1f1915f4fc2cfe9ef52f743313d5d257fb53e2
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.