@maplelabs/core-artifacts
Version:
Consist artifacts of the maple protocol
24,019 lines • 1.18 MB
JSON
{
"id": "a57037759e0da62be922ff69ad105e27",
"_format": "hh-sol-build-info-1",
"solcVersion": "0.6.11",
"solcLongVersion": "0.6.11+commit.5ef660b1",
"input": {
"language": "Solidity",
"sources": {
"contracts/core/globals/v1/MapleGlobals.sol": {
"content": "// SPDX-License-Identifier: AGPL-3.0-or-later // hevm: flattened sources of contracts/core/globals/v1/MapleGlobals.sol\npragma solidity =0.6.11 >=0.6.0 <0.8.0;\npragma experimental ABIEncoderV2;\n\n////// contracts/core/calculator/v1/interfaces/ICalc.sol\n/* pragma solidity 0.6.11; */\n\n/// @title Calc calculates.\ninterface ICalc {\n\n /**\n @dev The Calculator type.\n */\n function calcType() external pure returns (uint8);\n\n /**\n @dev The Calculator name.\n */\n function name() external pure returns (bytes32);\n\n}\n\n////// contracts/core/globals/v1/interfaces/IMapleGlobals.sol\n/* pragma solidity 0.6.11; */\n\n/// @title MapleGlobals maintains a central source of parameters and allowlists for the Maple protocol.\ninterface IMapleGlobals {\n\n /**\n @dev Emits an event indicating the MapleGlobals contract was created.\n */\n event Initialized();\n\n /**\n @dev Emits an event indicating the validity of a Collateral Asset was set.\n @param asset The Collateral Asset to assign validity to.\n @param decimals The number of decimal places of `asset`.\n @param symbol The symbol of `asset`.\n @param valid The new validity status of `asset`.\n */\n event CollateralAssetSet(address asset, uint256 decimals, string symbol, bool valid);\n\n /**\n @dev Emits an event indicating the validity of a Liquidity Asset was set.\n @param asset The Liquidity Asset to assign validity to.\n @param decimals The number of decimal places of `asset`.\n @param symbol The symbol of `asset`.\n @param valid The new validity status of `asset`.\n */\n event LiquidityAssetSet(address asset, uint256 decimals, string symbol, bool valid);\n\n /**\n @dev Emits an event indicating the Oracle for an asset was set.\n @param asset The asset to update price for.\n @param oracle The new Oracle to use.\n */\n event OracleSet(address asset, address oracle);\n\n /**\n @dev This is unused.\n */\n event TransferRestrictionExemptionSet(address indexed exemptedContract, bool valid);\n\n /**\n @dev Emits an event indicating the validity of a Balancer Pool was set.\n @param balancerPool The address of Balancer Pool contract.\n @param valid The new validity status of a Balancer Pool.\n */\n event BalancerPoolSet(address balancerPool, bool valid);\n\n /**\n @dev Emits an event indicating a PendingGovernor was set.\n @param pendingGovernor The address of the new Pending Governor.\n */\n event PendingGovernorSet(address indexed pendingGovernor);\n\n /**\n @dev Emits an event indicating Governorship was accepted by a new account.\n @param governor The account that has accepted Governorship.\n */\n event GovernorAccepted(address indexed governor);\n\n /**\n @dev Emits an event indicating that some Governor controlled parameter was set.\n @param which The identifier of the parameter that was set.\n @param value The value the parameter was set to.\n */\n event GlobalsParamSet(bytes32 indexed which, uint256 value);\n\n /**\n @dev Emits an event indicating that some Governor controlled address was set.\n @param which The identifier of the address that was set.\n @param addr The address that was set.\n */\n event GlobalsAddressSet(bytes32 indexed which, address addr);\n\n /**\n @dev Emits an event indicating the protocol's paused state has been set.\n @param pause Whether the protocol was paused.\n */\n event ProtocolPaused(bool pause);\n\n /**\n @dev Emits an event indicating the GlobalAdmin was set.\n @param newGlobalAdmin The address of the new GlobalAdmin.\n */\n event GlobalAdminSet(address indexed newGlobalAdmin);\n\n /**\n @dev Emits an event indicating the validity of a Pool Delegate was set.\n @param poolDelegate The address of a Pool Delegate.\n @param valid Whether `poolDelegate` is a valid Pool Delegate.\n */\n event PoolDelegateSet(address indexed poolDelegate, bool valid);\n\n /**\n @dev The ERC-2222 Maple Token for the Maple protocol.\n */\n function mpl() external pure returns (address);\n\n /**\n @dev The Governor that is declared for governorship transfer. \n @dev Must be accepted for transfer to take effect. \n */\n function pendingGovernor() external view returns (address);\n\n /**\n @dev The Governor responsible for management of global Maple variables.\n */\n function governor() external view returns (address);\n\n /**\n @dev The MapleTreasury is the Treasury where all fees pass through for conversion, prior to distribution.\n */\n function mapleTreasury() external view returns (address);\n\n /**\n @dev The Global Admin of the whole network. \n @dev Has the power to switch off/on the functionality of entire protocol. \n */\n function globalAdmin() external view returns (address);\n\n /**\n @dev The amount of time a Borrower has to make a missed payment before a default can be triggered. \n */\n function defaultGracePeriod() external view returns (uint256);\n\n /**\n @dev The minimum amount of Pool cover that a Pool Delegate has to provide before they can finalize a Pool.\n */\n function swapOutRequired() external view returns (uint256);\n\n /**\n @dev The amount of time to allow a Borrower to drawdown on their Loan after funding period ends.\n */\n function fundingPeriod() external view returns (uint256);\n\n /**\n @dev The portion of drawdown that goes to the Pool Delegates and individual Lenders.\n */\n function investorFee() external view returns (uint256);\n\n /**\n @dev The portion of drawdown that goes to the MapleTreasury.\n */\n function treasuryFee() external view returns (uint256);\n\n /**\n @dev The maximum amount of slippage for Uniswap transactions.\n */\n function maxSwapSlippage() external view returns (uint256);\n\n /**\n @dev The minimum amount of LoanFDTs required to trigger liquidations (basis points percentage of totalSupply).\n */\n function minLoanEquity() external view returns (uint256);\n\n /**\n @dev The period (in secs) after which Stakers are allowed to unstake their BPTs from a StakeLocker.\n */\n function stakerCooldownPeriod() external view returns (uint256);\n\n /**\n @dev The period (in secs) after which LPs are allowed to withdraw their funds from a Pool.\n */\n function lpCooldownPeriod() external view returns (uint256);\n\n /**\n @dev The window of time (in secs) after `stakerCooldownPeriod` that an account has to withdraw before their intent to unstake is invalidated.\n */\n function stakerUnstakeWindow() external view returns (uint256);\n\n /**\n @dev The window of time (in secs) after `lpCooldownPeriod` that an account has to withdraw before their intent to withdraw is invalidated.\n */\n function lpWithdrawWindow() external view returns (uint256);\n\n /**\n @dev Whether the functionality of the entire protocol is paused.\n */\n function protocolPaused() external view returns (bool);\n\n /**\n @param liquidityAsset The address of a Liquidity Asset.\n @return Whether `liquidityAsset` is valid.\n */\n function isValidLiquidityAsset(address liquidityAsset) external view returns (bool);\n\n /**\n @param collateralAsset The address of a Collateral Asset.\n @return Whether `collateralAsset` is valid.\n */\n function isValidCollateralAsset(address collateralAsset) external view returns (bool);\n\n /**\n @param calc The address of a Calculator.\n @return Whether `calc` is valid.\n */\n function validCalcs(address calc) external view returns (bool);\n\n /**\n @dev Prevents unauthorized/unknown addresses from creating Pools.\n @param poolDelegate The address of a Pool Delegate.\n @return Whether `poolDelegate` is valid.\n */\n function isValidPoolDelegate(address poolDelegate) external view returns (bool);\n\n /**\n @param balancerPool The address of a Balancer Pool.\n @return Whether Maple has approved `balancerPool` for BPT staking.\n */\n function isValidBalancerPool(address balancerPool) external view returns (bool);\n\n /**\n @dev Determines the liquidation path of various assets in Loans and the Treasury. \n @dev The value provided will determine whether or not to perform a bilateral or triangular swap on Uniswap. \n @dev For example, `defaultUniswapPath[WBTC][USDC]` value would indicate what asset to convert WBTC into before conversion to USDC. \n @dev If `defaultUniswapPath[WBTC][USDC] == USDC`, then the swap is bilateral and no middle asset is swapped. \n @dev If `defaultUniswapPath[WBTC][USDC] == WETH`, then swap WBTC for WETH, then WETH for USDC. \n @param tokenA The address of the asset being swapped.\n @param tokenB The address of the final asset to receive.\n @return The intermediary asset for swaps, if any.\n */\n function defaultUniswapPath(address tokenA, address tokenB) external view returns (address);\n\n /**\n @param asset The address of some token.\n @return The Chainlink Oracle for the price of `asset`.\n */\n function oracleFor(address asset) external view returns (address);\n \n /**\n @param poolFactory The address of a Pool Factory.\n @return Whether `poolFactory` is valid.\n */\n function isValidPoolFactory(address poolFactory) external view returns (bool);\n\n /**\n @param loanFactory The address of a Loan Factory.\n @return Whether `loanFactory` is valid.\n */\n function isValidLoanFactory(address loanFactory) external view returns (bool);\n \n /**\n @param superFactory The core factory (e.g. PoolFactory, LoanFactory).\n @param subFactory The sub factory used by core factory (e.g. LiquidityLockerFactory).\n @return Whether `subFactory` is valid as it relates to `superFactory`.\n */\n function validSubFactories(address superFactory, address subFactory) external view returns (bool);\n \n /**\n @dev Sets the Staker cooldown period. \n @dev This change will affect the existing cool down period for the Stakers that already intended to unstake. \n @dev Only the Governor can call this function. \n @dev It emits a `GlobalsParamSet` event. \n @param newCooldownPeriod The new value for the cool down period.\n */\n function setStakerCooldownPeriod(uint256 newCooldownPeriod) external;\n\n /**\n @dev Sets the Liquidity Pool cooldown period. \n @dev This change will affect the existing cool down period for the LPs that already intended to withdraw. \n @dev Only the Governor can call this function. \n @dev It emits a `GlobalsParamSet` event. \n @param newCooldownPeriod The new value for the cool down period.\n */\n function setLpCooldownPeriod(uint256 newCooldownPeriod) external;\n\n /**\n @dev Sets the Staker unstake window. \n @dev This change will affect the existing window for the Stakers that already intended to unstake. \n @dev Only the Governor can call this function. \n @dev It emits a `GlobalsParamSet` event. \n @param newUnstakeWindow The new value for the unstake window.\n */\n function setStakerUnstakeWindow(uint256 newUnstakeWindow) external;\n\n /**\n @dev Sets the Liquidity Pool withdraw window. \n @dev This change will affect the existing window for the LPs that already intended to withdraw. \n @dev Only the Governor can call this function. \n @dev It emits a `GlobalsParamSet` event. \n @param newLpWithdrawWindow The new value for the withdraw window.\n */\n function setLpWithdrawWindow(uint256 newLpWithdrawWindow) external;\n\n /**\n @dev Sets the allowed Uniswap slippage percentage, in basis points. \n @dev Only the Governor can call this function. \n @dev It emits a `GlobalsParamSet` event. \n @param newMaxSlippage The new max slippage percentage (in basis points)\n */\n function setMaxSwapSlippage(uint256 newMaxSlippage) external;\n\n /**\n @dev Sets the Global Admin. \n @dev Only the Governor can call this function. \n @dev It emits a `GlobalAdminSet` event. \n @param newGlobalAdmin The new global admin address.\n */\n function setGlobalAdmin(address newGlobalAdmin) external;\n\n /**\n @dev Sets the validity of a Balancer Pool. \n @dev Only the Governor can call this function. \n @dev It emits a `BalancerPoolSet` event. \n @param balancerPool The address of Balancer Pool contract.\n @param valid The new validity status of a Balancer Pool.\n */\n function setValidBalancerPool(address balancerPool, bool valid) external;\n\n /**\n @dev Sets the paused/unpaused state of the protocol. \n @dev Only the Global Admin can call this function. \n @dev It emits a `ProtocolPaused` event. \n @param pause A boolean flag to switch externally facing functionality in the protocol on/off.\n */\n function setProtocolPause(bool pause) external;\n\n /**\n @dev Sets the validity of a PoolFactory. \n @dev Only the Governor can call this function. \n @param poolFactory The address of a PoolFactory.\n @param valid The new validity status of `poolFactory`.\n */\n function setValidPoolFactory(address poolFactory, bool valid) external;\n\n /**\n @dev Sets the validity of a LoanFactory. \n @dev Only the Governor can call this function. \n @param loanFactory The address of a LoanFactory.\n @param valid The new validity status of `loanFactory`.\n */\n function setValidLoanFactory(address loanFactory, bool valid) external;\n\n /**\n @dev Sets the validity of `subFactory` as it relates to `superFactory`. \n @dev Only the Governor can call this function. \n @param superFactory The core factory (e.g. PoolFactory, LoanFactory).\n @param subFactory The sub factory used by core factory (e.g. LiquidityLockerFactory).\n @param valid The new validity status of `subFactory` within context of `superFactory`.\n */\n function setValidSubFactory(address superFactory, address subFactory, bool valid) external;\n\n /**\n @dev Sets the path to swap an asset through Uniswap. \n @dev Only the Governor can call this function. \n @dev Set to == mid to enable a bilateral swap (single path swap). \n @dev Set to != mid to enable a triangular swap (multi path swap). \n @param from The address of the asset being swapped.\n @param to The address of the final asset to receive.\n @param mid The intermediary asset for swaps, if any.\n */\n function setDefaultUniswapPath(address from, address to, address mid) external;\n\n /**\n @dev Sets the validity of a Pool Delegate (those allowed to create Pools). \n @dev Only the Governor can call this function. \n @dev It emits a `PoolDelegateSet` event. \n @param poolDelegate The address to manage permissions for.\n @param valid The new validity status of a Pool Delegate.\n */\n function setPoolDelegateAllowlist(address poolDelegate, bool valid) external;\n\n /**\n @dev Sets the validity of an asset for collateral. \n @dev Only the Governor can call this function. \n @dev It emits a `CollateralAssetSet` event. \n @param asset The asset to assign validity to.\n @param valid The new validity status of a Collateral Asset.\n */\n function setCollateralAsset(address asset, bool valid) external;\n\n /**\n @dev Sets the validity of an asset for liquidity in Pools. \n @dev Only the Governor can call this function. \n @dev It emits a `LiquidityAssetSet` event. \n @param asset The asset to assign validity to.\n @param valid The new validity status a Liquidity Asset in Pools.\n */\n function setLiquidityAsset(address asset, bool valid) external;\n\n /**\n @dev Sets the validity of a calculator contract. \n @dev Only the Governor can call this function. \n @param calc The Calculator address.\n @param valid The new validity status of a Calculator.\n */\n function setCalc(address calc, bool valid) external;\n\n /**\n @dev Sets the investor fee (in basis points). \n @dev Only the Governor can call this function. \n @dev It emits a `GlobalsParamSet` event. \n @param _fee The fee, e.g., 50 = 0.50%.\n */\n function setInvestorFee(uint256 _fee) external;\n\n /**\n @dev Sets the treasury fee (in basis points). \n @dev Only the Governor can call this function. \n @dev It emits a `GlobalsParamSet` event. \n @param _fee The fee, e.g., 50 = 0.50%.\n */\n function setTreasuryFee(uint256 _fee) external;\n\n /**\n @dev Sets the MapleTreasury. \n @dev Only the Governor can call this function. \n @dev It emits a `GlobalsParamSet` event. \n @param _mapleTreasury A new MapleTreasury address.\n */\n function setMapleTreasury(address _mapleTreasury) external;\n\n /**\n @dev Sets the default grace period. \n @dev Only the Governor can call this function. \n @dev It emits a `GlobalsParamSet` event. \n @param _defaultGracePeriod The new number of seconds to set the grace period to.\n */\n function setDefaultGracePeriod(uint256 _defaultGracePeriod) external;\n\n /**\n @dev Sets the minimum Loan equity. \n @dev Only the Governor can call this function. \n @dev It emits a `GlobalsParamSet` event. \n @param _minLoanEquity The new minimum percentage of Loan equity an account must have to trigger liquidations.\n */\n function setMinLoanEquity(uint256 _minLoanEquity) external;\n\n /**\n @dev Sets the funding period. \n @dev Only the Governor can call this function. \n @dev It emits a `GlobalsParamSet` event. \n @param _fundingPeriod The number of seconds to set the drawdown grace period to.\n */\n function setFundingPeriod(uint256 _fundingPeriod) external;\n\n /**\n @dev Sets the the minimum Pool cover required to finalize a Pool. \n @dev Only the Governor can call this function. \n @dev It emits a `GlobalsParamSet` event. \n @param amt The new minimum swap out required.\n */\n function setSwapOutRequired(uint256 amt) external;\n\n /**\n @dev Sets a price feed's oracle. \n @dev Only the Governor can call this function. \n @dev It emits a `OracleSet` event. \n @param asset The asset to update price for.\n @param oracle The new Oracle to use for the price of `asset`.\n */\n function setPriceOracle(address asset, address oracle) external;\n\n /**\n @dev Sets a new Pending Governor. \n @dev This address can become Governor if they accept. \n @dev Only the Governor can call this function. \n @dev It emits a `PendingGovernorSet` event. \n @param _pendingGovernor The address of a new Pending Governor.\n */\n function setPendingGovernor(address _pendingGovernor) external;\n\n /**\n @dev Accept the Governor position. \n @dev Only the Pending Governor can call this function. \n @dev It emits a `GovernorAccepted` event. \n */\n function acceptGovernor() external;\n\n /**\n @dev Fetch price for asset from Chainlink oracles.\n @param asset The asset to fetch the price of.\n @return The price of asset in USD.\n */\n function getLatestPrice(address asset) external view returns (uint256);\n\n /**\n @dev Checks that a `subFactory` is valid as it relates to `superFactory`.\n @param superFactory The core factory (e.g. PoolFactory, LoanFactory).\n @param subFactory The sub factory used by core factory (e.g. LiquidityLockerFactory).\n @param factoryType The type expected for the subFactory. \n 0 = COLLATERAL_LOCKER_FACTORY, \n 1 = DEBT_LOCKER_FACTORY, \n 2 = FUNDING_LOCKER_FACTORY, \n 3 = LIQUIDITY_LOCKER_FACTORY, \n 4 = STAKE_LOCKER_FACTORY. \n */\n function isValidSubFactory(address superFactory, address subFactory, uint8 factoryType) external view returns (bool);\n\n /**\n @dev Checks that a Calculator is valid.\n @param calc The Calculator address.\n @param calcType The Calculator type.\n */\n function isValidCalc(address calc, uint8 calcType) external view returns (bool);\n\n /**\n @dev Returns the `lpCooldownPeriod` and `lpWithdrawWindow` as a tuple, for convenience.\n @return The value of `lpCooldownPeriod`.\n @return The value of `lpWithdrawWindow`.\n */\n function getLpCooldownParams() external view returns (uint256, uint256);\n\n}\n\n////// contracts/core/oracle/v1/interfaces/IOracle.sol\n/* pragma solidity 0.6.11; */\n\n/// @title Oracle is a price oracle feed.\ninterface IOracle {\n\n /**\n @dev Returns the price of the asset.\n */\n function getLatestPrice() external view returns (int256);\n\n}\n\n////// contracts/core/subfactory/v1/interfaces/ISubFactory.sol\n/* pragma solidity 0.6.11; */\n\n/// @title SubFactory creates instances downstream of another factory.\ninterface ISubFactory {\n\n /**\n @dev The type of the factory\n */\n function factoryType() external pure returns (uint8);\n\n}\n\n////// lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\n/* pragma solidity >=0.6.0 <0.8.0; */\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `recipient`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address recipient, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `sender` to `recipient` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\n\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n}\n\n////// contracts/external-interfaces/IERC20Details.sol\n/* pragma solidity 0.6.11; */\n\n/* import { IERC20 } from \"../../lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\"; */\n\ninterface IERC20Details is IERC20 {\n\n function name() external view returns (string memory);\n\n function symbol() external view returns (string memory);\n\n function decimals() external view returns (uint256);\n\n}\n\n////// lib/openzeppelin-contracts/contracts/math/SafeMath.sol\n/* pragma solidity >=0.6.0 <0.8.0; */\n\n/**\n * @dev Wrappers over Solidity's arithmetic operations with added overflow\n * checks.\n *\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\n * in bugs, because programmers usually assume that an overflow raises an\n * error, which is the standard behavior in high level programming languages.\n * `SafeMath` restores this intuition by reverting the transaction when an\n * operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n */\nlibrary SafeMath {\n /**\n * @dev Returns the addition of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `+` operator.\n *\n * Requirements:\n *\n * - Addition cannot overflow.\n */\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n uint256 c = a + b;\n require(c >= a, \"SafeMath: addition overflow\");\n\n return c;\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, reverting on\n * overflow (when the result is negative).\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n return sub(a, b, \"SafeMath: subtraction overflow\");\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n * overflow (when the result is negative).\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n require(b <= a, errorMessage);\n uint256 c = a - b;\n\n return c;\n }\n\n /**\n * @dev Returns the multiplication of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `*` operator.\n *\n * Requirements:\n *\n * - Multiplication cannot overflow.\n */\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n // benefit is lost if 'b' is also tested.\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\n if (a == 0) {\n return 0;\n }\n\n uint256 c = a * b;\n require(c / a == b, \"SafeMath: multiplication overflow\");\n\n return c;\n }\n\n /**\n * @dev Returns the integer division of two unsigned integers. Reverts on\n * division by zero. The result is rounded towards zero.\n *\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\n * uses an invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\n return div(a, b, \"SafeMath: division by zero\");\n }\n\n /**\n * @dev Returns the integer division of two unsigned integers. Reverts with custom message on\n * division by zero. The result is rounded towards zero.\n *\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\n * uses an invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n require(b > 0, errorMessage);\n uint256 c = a / b;\n // assert(a == b * c + a % b); // There is no case in which this doesn't hold\n\n return c;\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * Reverts when dividing by zero.\n *\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\n * opcode (which leaves remaining gas untouched) while Solidity uses an\n * invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\n return mod(a, b, \"SafeMath: modulo by zero\");\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * Reverts with custom message when dividing by zero.\n *\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\n * opcode (which leaves remaining gas untouched) while Solidity uses an\n * invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n require(b != 0, errorMessage);\n return a % b;\n }\n}\n\n////// contracts/core/globals/v1/MapleGlobals.sol\n/* pragma solidity 0.6.11; */\n/* pragma experimental ABIEncoderV2; */\n\n/* import { SafeMath } from \"../../../../lib/openzeppelin-contracts/contracts/math/SafeMath.sol\"; */\n\n/* import { IERC20Details } from \"../../../external-interfaces/IERC20Details.sol\"; */\n\n/* import { ICalc } from \"../../calculator/v1/interfaces/ICalc.sol\"; */\n/* import { IOracle } from \"../../oracle/v1/interfaces/IOracle.sol\"; */\n/* import { ISubFactory } from \"../../subfactory/v1/interfaces/ISubFactory.sol\"; */\n\n/* import { IMapleGlobals } from \"./interfaces/IMapleGlobals.sol\"; */\n\n/// @title MapleGlobals maintains a central source of parameters and allowlists for the Maple protocol.\ncontract MapleGlobals is IMapleGlobals {\n\n using SafeMath for uint256;\n\n address public override immutable mpl;\n\n address public override pendingGovernor;\n address public override governor;\n address public override mapleTreasury;\n address public override globalAdmin;\n\n uint256 public override defaultGracePeriod;\n uint256 public override swapOutRequired;\n uint256 public override fundingPeriod;\n uint256 public override investorFee;\n uint256 public override treasuryFee;\n uint256 public override maxSwapSlippage;\n uint256 public override minLoanEquity;\n uint256 public override stakerCooldownPeriod;\n uint256 public override lpCooldownPeriod;\n uint256 public override stakerUnstakeWindow;\n uint256 public override lpWithdrawWindow;\n\n bool public override protocolPaused;\n\n mapping(address => bool) public override isValidLiquidityAsset;\n mapping(address => bool) public override isValidCollateralAsset;\n mapping(address => bool) public override validCalcs;\n mapping(address => bool) public override isValidPoolDelegate;\n mapping(address => bool) public override isValidBalancerPool;\n\n mapping(address => mapping(address => address)) public override defaultUniswapPath;\n\n mapping(address => address) public override oracleFor;\n\n mapping(address => bool) public override isValidPoolFactory;\n mapping(address => bool) public override isValidLoanFactory;\n mapping(address => mapping(address => bool)) public override validSubFactories;\n\n /**\n @dev Checks that `msg.sender` is the Governor.\n */\n modifier isGovernor() {\n require(msg.sender == governor, \"MG:NOT_GOV\");\n _;\n }\n\n /**\n @dev Constructor function. \n @dev It emits an `Initialized` event. \n @param _governor Address of Governor.\n @param _mpl Address of the ERC-2222 Maple Token for the Maple protocol.\n @param _globalAdmin Address the Global Admin.\n */\n constructor(address _governor, address _mpl, address _globalAdmin) public {\n governor = _governor;\n mpl = _mpl;\n swapOutRequired = 10_000; // $10,000 of Pool cover\n fundingPeriod = 10 days;\n defaultGracePeriod = 5 days;\n investorFee = 50; // 0.5 %\n treasuryFee = 50; // 0.5 %\n maxSwapSlippage = 1000; // 10 %\n minLoanEquity = 2000; // 20 %\n globalAdmin = _globalAdmin;\n stakerCooldownPeriod = 10 days;\n lpCooldownPeriod = 10 days;\n stakerUnstakeWindow = 2 days;\n lpWithdrawWindow = 2 days;\n emit Initialized();\n }\n\n /************************/\n /*** Setter Functions ***/\n /************************/\n\n function setStakerCooldownPeriod(uint256 newCooldownPeriod) external override isGovernor {\n stakerCooldownPeriod = newCooldownPeriod;\n emit GlobalsParamSet(\"STAKER_COOLDOWN_PERIOD\", newCooldownPeriod);\n }\n\n function setLpCooldownPeriod(uint256 newCooldownPeriod) external override isGovernor {\n lpCooldownPeriod = newCooldownPeriod;\n emit GlobalsParamSet(\"LP_COOLDOWN_PERIOD\", newCooldownPeriod);\n }\n\n function setStakerUnstakeWindow(uint256 newUnstakeWindow) external override isGovernor {\n stakerUnstakeWindow = newUnstakeWindow;\n emit GlobalsParamSet(\"STAKER_UNSTAKE_WINDOW\", newUnstakeWindow);\n }\n\n function setLpWithdrawWindow(uint256 newLpWithdrawWindow) external override isGovernor {\n lpWithdrawWindow = newLpWithdrawWindow;\n emit GlobalsParamSet(\"LP_WITHDRAW_WINDOW\", newLpWithdrawWindow);\n }\n\n function setMaxSwapSlippage(uint256 newMaxSlippage) external override isGovernor {\n _checkPercentageRange(newMaxSlippage);\n maxSwapSlippage = newMaxSlippage;\n emit GlobalsParamSet(\"MAX_SWAP_SLIPPAGE\", newMaxSlippage);\n }\n\n function setGlobalAdmin(address newGlobalAdmin) external override {\n require(msg.sender == governor && newGlobalAdmin != address(0), \"MG:NOT_GOV_OR_ADMIN\");\n require(!protocolPaused, \"MG:PROTO_PAUSED\");\n globalAdmin = newGlobalAdmin;\n emit GlobalAdminSet(newGlobalAdmin);\n }\n\n function setValidBalancerPool(address balancerPool, bool valid) external override isGovernor {\n isValidBalancerPool[balancerPool] = valid;\n emit BalancerPoolSet(balancerPool, valid);\n }\n\n function setProtocolPause(bool pause) external override {\n require(msg.sender == globalAdmin, \"MG:NOT_ADMIN\");\n protocolPaused = pause;\n emit ProtocolPaused(pause);\n }\n\n function setValidPoolFactory(address poolFactory, bool valid) external override isGovernor {\n isValidPoolFactory[poolFactory] = valid;\n }\n\n function setValidLoanFactory(address loanFactory, bool valid) external override isGovernor {\n isValidLoanFactory[loanFactory] = valid;\n }\n\n function setValidSubFactory(address superFactory, address subFactory, bool valid) external override isGovernor {\n require(isValidLoanFactory[superFactory] || isValidPoolFactory[superFactory], \"MG:INVALID_SUPER_F\");\n validSubFactories[superFactory][subFactory] = valid;\n }\n\n function setDefaultUniswapPath(address from, address to, address mid) external override isGovernor {\n defaultUniswapPath[from][to] = mid;\n }\n\n function setPoolDelegateAllowlist(address delegate, bool valid) external override isGovernor {\n isValidPoolDelegate[delegate] = valid;\n emit PoolDelegateSet(delegate, valid);\n }\n\n function setCollateralAsset(address asset, bool valid) external override isGovernor {\n isValidCollateralAsset[asset] = valid;\n emit CollateralAssetSet(asset, IERC20Details(asset).decimals(), IERC20Details(asset).symbol(), valid);\n }\n\n function setLiquidityAsset(address asset, bool valid) external override isGovernor {\n isValidLiquidityAsset[asset] = valid;\n emit LiquidityAssetSet(asset, IERC20Details(asset).decimals(), IERC20Details(asset).symbol(), valid);\n }\n\n function setCalc(address calc, bool valid) external override isGovernor {\n validCalcs[calc] = valid;\n }\n\n function setInvestorFee(uint256 _fee) external override isGovernor {\n _checkPercentageRange(treasuryFee.add(_fee));\n investorFee = _fee;\n emit GlobalsParamSet(\"INVESTOR_FEE\", _fee);\n }\n\n function setTreasuryFee(uint256 _fee) external override isGovernor {\n _checkPercentageRange(investorFee.add(_fee));\n treasuryFee = _fee;\n emit GlobalsParamSet(\"TREASURY_FEE\", _fee);\n }\n\n function setMapleTreasury(address _mapleTreasury) external override isGovernor {\n require(_mapleTreasury != address(0), \"MG:ZERO_ADDR\");\n mapleTreasury = _mapleTreasury;\n emit GlobalsAddressSet(\"MAPLE_TREASURY\", _mapleTreasury);\n }\n\n function setDefaultGracePeriod(uint256 _defaultGracePeriod) external override isGovernor {\n defaultGracePeriod = _defaultGracePeriod;\n emit GlobalsParamSet(\"DEFAULT_GRACE_PERIOD\", _defaultGracePeriod);\n }\n\n function setMinLoanEquity(uint256 _minLoanEquity) external override isGovernor {\n _checkPercentageRange(_minLoanEquity);\n minLoanEquity = _minLoanEquity;\n emit GlobalsParamSet(\"MIN_LOAN_EQUITY\", _minLoanEquity);\n }\n\n function setFundingPeriod(uint256 _fundingPeriod) external override isGovernor {\n fundingPeriod = _fundingPeriod;\n emit GlobalsParamSet(\"FUNDING_PERIOD\", _fundingPeriod);\n }\n\n function setSwapOutRequired(uint256 amt) external override isGovernor {\n require(amt >= uint256(10_000), \"MG:SWAP_OUT_TOO_LOW\");\n swapOutRequired = amt;\n emit GlobalsParamSet(\"SWAP_OUT_REQUIRED\", amt);\n }\n\n function setPriceOracle(address asset, address oracle) external override isGovernor {\n oracleFor[asset] = oracle;\n emit OracleSet(asset, oracle);\n }\n\n /************************************/\n /*** Transfer Ownership Functions ***/\n /************************************/\n\n function setPendingGovernor(address _pendingGovernor) external override isGovernor {\n require(_pendingGovernor != address(0), \"MG:ZERO_ADDR\");\n pendingGovernor = _pendingGovernor;\n emit PendingGovernorSet(_pendingGovernor);\n }\n\n function acceptGovernor() external override {\n require(msg.sender == pendingGovernor, \"MG:NOT_PENDING_GOV\");\n governor = msg.sender;\n pendingGovernor = address(0);\n emit GovernorAccepted(msg.sender);\n }\n\n /************************/\n /*** Getter Functions ***/\n /************************/\n\n function getLatestPrice(address asset) external override view returns (uint256) {\n return uint256(IOracle(oracleFor[asset]).getLatestPrice());\n }\n\n function isValidSubFactory(address superFactory, address subFactory, uint8 factoryType) external override view returns (bool) {\n return validSubFactories[superFactory][subFactory] && ISubFactory(subFactory).factoryType() == factoryType;\n }\n\n function isValidCalc(address calc, uint8 calcType) external override view returns (bool) {\n return validCalcs[calc] && ICalc(calc).calcType() == calcType;\n }\n\n function getLpCooldownParams() external override view returns (uint256, uint256) {\n return (lpCooldownPeriod, lpWithdrawWindow);\n }\n\n /************************/\n /*** Helper Functions ***/\n /************************/\n\n /**\n @dev Checks that percentage is less than 100%.\n */\n function _checkPercentageRange(uint256 percentage) internal pure {\n require(percentage <= uint256(10_000), \"MG:PCT_OOB\");\n }\n\n}\n"
}
},
"settings": {
"optimizer": {
"enabled": true,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"abi",
"evm.bytecode",
"evm.deployedBytecode",
"evm.methodIdentifiers"
],
"": [
"ast"
]
}
}
}
},
"output": {
"contracts": {
"contracts/core/globals/v1/MapleGlobals.sol": {
"ICalc": {
"abi": [
{
"inputs": [],
"name": "calcType",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "pure",
"type": "function"
}
],
"evm": {
"bytecode": {
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"methodIdentifiers": {
"calcType()": "9d8ae446",
"name()": "06fdde03"
}
}
},
"IERC20": {
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"evm": {
"bytecode": {
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"methodIdentifiers": {
"allowance(address,address)": "dd62ed3e",
"approve(address,uint256)": "095ea7b3",
"balanceOf(address)": "70a08231",
"totalSupply()": "18160ddd",
"transfer(address,uint256)": "a9059cbb",
"transferFrom(address,address,uint256)": "23b872dd"
}
}
},
"IERC20Details": {
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"evm": {
"bytecode": {
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"methodIdentifiers": {
"allowance(address,address)": "dd62ed3e",
"approve(address,uint256)": "095ea7b3",
"balanceOf(address)": "70a08231",
"decimals()": "313ce567",
"name()": "06fdde03",
"symbol()": "95d89b41",
"totalSupply()": "18160ddd",
"transfer(address,uint256)": "a9059cbb",
"transferFrom(address,address,uint256)": "23b872dd"
}
}
},
"IMapleGlobals": {
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "balancerPool",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "valid",
"type": "bool"
}
],
"name": "BalancerPoolSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "asset",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "decimals",
"type": "uint256"
},
{
"indexed": false,
"internalType": "string",
"name": "symbol",
"type": "string"
},
{
"indexed": false,
"internalType": "bool",
"name": "valid",
"type": "bool"
}
],
"name": "CollateralAssetSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "newGlobalAdmin",
"type": "address"
}
],
"name": "GlobalAdminSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "which",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "address",
"name": "addr",
"type": "address"
}
],
"name": "GlobalsAddressSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "which",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "GlobalsParamSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "governor",
"type": "address"
}
],
"name": "GovernorAccepted",
"type": "event"
},
{
"anonymous": false,
"inputs": [],
"name": "Initialized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "asset",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "decimals",
"type": "uint256"
},
{
"indexed": false,
"internalType": "string",
"name": "symbol",
"type": "string"
},
{
"indexed": false,
"internalType": "bool",
"name": "valid",
"type": "bool"
}
],
"name": "LiquidityAssetSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "asset",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "oracle",
"type": "address"
}
],
"name": "OracleSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "pendingGovernor",
"type": "address"
}
],
"name": "PendingGovernorSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "poolDelegate",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "valid",
"type": "bool"
}
],
"name": "PoolDelegateSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bool",
"name": "pause",
"type": "bool"
}
],
"name": "ProtocolPaused",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "exemptedContract",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "valid",
"type": "bool"
}
],
"name": "TransferRestrictionExemptionSet",
"type": "event"
},
{
"inputs": [],
"name": "acceptGovernor",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "defaultGracePeriod",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "tokenA",
"type": "address"
},
{
"internalType": "address",
"name": "tokenB",
"type": "address"
}
],
"name": "defaultUniswapPath",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "fundingPeriod",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "asset",
"type": "address"
}
],
"name": "getLatestPrice",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getLpCooldownParams",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "globalAdmin",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "governor",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "investorFee",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "balancerPool",
"type": "address"
}
],
"name": "isValidBalancerPool",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "calc",
"type": "address"
},
{
"internalType": "uint8",
"name": "calcType",
"type": "uint8"
}
],
"name": "isValidCalc",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "collateralAsset",
"type": "address"
}
],
"name": "isValidCollateralAsset",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "liquidityAsset",
"type": "address"
}
],
"name": "isValidLiquidityAsset",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "loanFactory",
"type": "address"
}
],
"name": "isValidLoanFactory",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "poolDelegate",
"type": "address"
}
],
"name": "isValidPoolDelegate",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "poolFactory",
"type": "address"
}
],
"name": "isValidPoolFactory",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "superFactory",
"type": "address"
},
{
"internalType": "address",
"name": "subFactory",
"type": "address"
},
{
"internalType": "uint8",
"name": "factoryType",
"type": "uint8"
}
],
"name": "isValidSubFactory",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "lpCooldownPeriod",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "lpWithdrawWindow",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "mapleTreasury",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "maxSwapSlippage",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "minLoanEquity",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "mpl",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "asset",
"type": "address"
}
],
"name": "oracleFor",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "pendingGovernor",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "protocolPaused",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "calc",
"type": "address"
},
{
"internalType": "bool",
"name": "valid",
"type": "bool"
}
],
"name": "setCalc",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "asset",
"type": "address"
},
{
"internalType": "bool",
"name": "valid",
"type": "bool"
}
],
"name": "setCollateralAsset",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_defaultGracePeriod",
"type": "uint256"
}
],
"name": "setDefaultGracePeriod",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "address",
"name": "mid",
"type": "address"
}
],
"name": "setDefaultUniswapPath",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_fundingPeriod",
"type": "uint256"
}
],
"name": "setFundingPeriod",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newGlobalAdmin",
"type": "address"
}
],
"name": "setGlobalAdmin",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_fee",
"type": "uint256"
}
],
"name": "setInvestorFee",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "asset",
"type": "address"
},
{
"internalType": "bool",
"name": "valid",
"type": "bool"
}
],
"name": "setLiquidityAsset",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "newCooldownPeriod",
"type": "uint256"
}
],
"name": "setLpCooldownPeriod",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "newLpWithdrawWindow",
"type": "uint256"
}
],
"name": "setLpWithdrawWindow",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_mapleTreasury",
"type": "address"
}
],
"name": "setMapleTreasury",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "newMaxSlippage",
"type": "uint256"
}
],
"name": "setMaxSwapSlippage",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_minLoanEquity",
"type": "uint256"
}
],
"name": "setMinLoanEquity",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_pendingGovernor",
"type": "address"
}
],
"name": "setPendingGovernor",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "poolDelegate",
"type": "address"
},
{
"internalType": "bool",
"name": "valid",
"type": "bool"
}
],
"name": "setPoolDelegateAllowlist",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "asset",
"type": "address"
},
{
"internalType": "address",
"name": "oracle",
"type": "address"
}
],
"name": "setPriceOracle",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bool",
"name": "pause",
"type": "bool"
}
],
"name": "setProtocolPause",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "newCooldownPeriod",
"type": "uint256"
}
],
"name": "setStakerCooldownPeriod",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "newUnstakeWindow",
"type": "uint256"
}
],
"name": "setStakerUnstakeWindow",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amt",
"type": "uint256"
}
],
"name": "setSwapOutRequired",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_fee",
"type": "uint256"
}
],
"name": "setTreasuryFee",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "balancerPool",
"type": "address"
},
{
"internalType": "bool",
"name": "valid",
"type": "bool"
}
],
"name": "setValidBalancerPool",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "loanFactory",
"type": "address"
},
{
"internalType": "bool",
"name": "valid",
"type": "bool"
}
],
"name": "setValidLoanFactory",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "poolFactory",
"type": "address"
},
{
"internalType": "bool",
"name": "valid",
"type": "bool"
}
],
"name": "setValidPoolFactory",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "superFactory",
"type": "address"
},
{
"internalType": "address",
"name": "subFactory",
"type": "address"
},
{
"internalType": "bool",
"name": "valid",
"type": "bool"
}
],
"name": "setValidSubFactory",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "stakerCooldownPeriod",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "stakerUnstakeWindow",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "swapOutRequired",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "treasuryFee",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "calc",
"type": "address"
}
],
"name": "validCalcs",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "superFactory",
"type": "address"
},
{
"internalType": "address",
"name": "subFactory",
"type": "address"
}
],
"name": "validSubFactories",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
}
],
"evm": {
"bytecode": {
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"methodIdentifiers": {
"acceptGovernor()": "e58bb639",
"defaultGracePeriod()": "705d5f24",
"defaultUniswapPath(address,address)": "4d866592",
"fundingPeriod()": "74d7c62b",
"getLatestPrice(address)": "16345f18",
"getLpCooldownParams()": "9f51290b",
"globalAdmin()": "ec9a9368",
"governor()": "0c340a24",
"investorFee()": "16a12d7a",
"isValidBalancerPool(address)": "72a22d71",
"isValidCalc(address,uint8)": "1b5833f7",
"isValidCollateralAsset(address)": "8c14834b",
"isValidLiquidityAsset(address)": "8695118a",
"isValidLoanFactory(address)": "b53afda7",
"isValidPoolDelegate(address)": "372e3546",
"isValidPoolFactory(address)": "107c0240",
"isValidSubFactory(address,address,uint8)": "13d459fb",
"lpCooldownPeriod()": "dd02e0ec",
"lpWithdrawWindow()": "df3d02bd",
"mapleTreasury()": "a5a27605",
"maxSwapSlippage()": "55323195",
"minLoanEquity()": "4a2697c4",
"mpl()": "a0530946",
"oracleFor(address)": "aed019b9",
"pendingGovernor()": "e3056a34",
"protocolPaused()": "425fad58",
"setCalc(address,bool)": "be44ed6b",
"setCollateralAsset(address,bool)": "2fa6c88f",
"setDefaultGracePeriod(uint256)": "44c14f71",
"setDefaultUniswapPath(address,address,address)": "f3897663",
"setFundingPeriod(uint256)": "2a5aa292",
"setGlobalAdmin(address)": "c52bc31d",
"setInvestorFee(uint256)": "5e045467",
"setLiquidityAsset(address,bool)": "2daa0d89",
"setLpCooldownPeriod(uint256)": "8608a6e1",
"setLpWithdrawWindow(uint256)": "26718606",
"setMapleTreasury(address)": "7303de25",
"setMaxSwapSlippage(uint256)": "f33ef09a",
"setMinLoanEquity(uint256)": "298b795d",
"setPendingGovernor(address)": "f235757f",
"setPoolDelegateAllowlist(address,bool)": "efdb16fc",
"setPriceOracle(address,address)": "67a74ddc",
"setProtocolPause(bool)": "4e989118",
"setStakerCooldownPeriod(uint256)": "fd4a9121",
"setStakerUnstakeWindow(uint256)": "d1cdf301",
"setSwapOutRequired(uint256)": "dbc6c552",
"setTreasuryFee(uint256)": "77e741c7",
"setValidBalancerPool(address,bool)": "490dae64",
"setValidLoanFactory(address,bool)": "c9c67240",
"setValidPoolFactory(address,bool)": "6597b899",
"setValidSubFactory(address,address,bool)": "f85ee6f8",
"stakerCooldownPeriod()": "a965d6b5",
"stakerUnstakeWindow()": "2018b870",
"swapOutRequired()": "3106374c",
"treasuryFee()": "cc32d176",
"validCalcs(address)": "1beb84e7",
"validSubFactories(address,address)": "1b1804aa"
}
}
},
"IOracle": {
"abi": [
{
"inputs": [],
"name": "getLatestPrice",
"outputs": [
{
"internalType": "int256",
"name": "",
"type": "int256"
}
],
"stateMutability": "view",
"type": "function"
}
],
"evm": {
"bytecode": {
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"methodIdentifiers": {
"getLatestPrice()": "8e15f473"
}
}
},
"ISubFactory": {
"abi": [
{
"inputs": [],
"name": "factoryType",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "pure",
"type": "function"
}
],
"evm": {
"bytecode": {
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"methodIdentifiers": {
"factoryType()": "64e1fd55"
}
}
},
"MapleGlobals": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_governor",
"type": "address"
},
{
"internalType": "address",
"name": "_mpl",
"type": "address"
},
{
"internalType": "address",
"name": "_globalAdmin",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "balancerPool",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "valid",
"type": "bool"
}
],
"name": "BalancerPoolSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "asset",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "decimals",
"type": "uint256"
},
{
"indexed": false,
"internalType": "string",
"name": "symbol",
"type": "string"
},
{
"indexed": false,
"internalType": "bool",
"name": "valid",
"type": "bool"
}
],
"name": "CollateralAssetSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "newGlobalAdmin",
"type": "address"
}
],
"name": "GlobalAdminSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "which",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "address",
"name": "addr",
"type": "address"
}
],
"name": "GlobalsAddressSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "which",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "GlobalsParamSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "governor",
"type": "address"
}
],
"name": "GovernorAccepted",
"type": "event"
},
{
"anonymous": false,
"inputs": [],
"name": "Initialized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "asset",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "decimals",
"type": "uint256"
},
{
"indexed": false,
"internalType": "string",
"name": "symbol",
"type": "string"
},
{
"indexed": false,
"internalType": "bool",
"name": "valid",
"type": "bool"
}
],
"name": "LiquidityAssetSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "asset",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "oracle",
"type": "address"
}
],
"name": "OracleSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "pendingGovernor",
"type": "address"
}
],
"name": "PendingGovernorSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "poolDelegate",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "valid",
"type": "bool"
}
],
"name": "PoolDelegateSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bool",
"name": "pause",
"type": "bool"
}
],
"name": "ProtocolPaused",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "exemptedContract",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "valid",
"type": "bool"
}
],
"name": "TransferRestrictionExemptionSet",
"type": "event"
},
{
"inputs": [],
"name": "acceptGovernor",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "defaultGracePeriod",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "defaultUniswapPath",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "fundingPeriod",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "asset",
"type": "address"
}
],
"name": "getLatestPrice",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getLpCooldownParams",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "globalAdmin",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "governor",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "investorFee",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "isValidBalancerPool",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "calc",
"type": "address"
},
{
"internalType": "uint8",
"name": "calcType",
"type": "uint8"
}
],
"name": "isValidCalc",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "isValidCollateralAsset",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "isValidLiquidityAsset",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "isValidLoanFactory",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "isValidPoolDelegate",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "isValidPoolFactory",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "superFactory",
"type": "address"
},
{
"internalType": "address",
"name": "subFactory",
"type": "address"
},
{
"internalType": "uint8",
"name": "factoryType",
"type": "uint8"
}
],
"name": "isValidSubFactory",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "lpCooldownPeriod",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "lpWithdrawWindow",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "mapleTreasury",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "maxSwapSlippage",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "minLoanEquity",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "mpl",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "oracleFor",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "pendingGovernor",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "protocolPaused",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "calc",
"type": "address"
},
{
"internalType": "bool",
"name": "valid",
"type": "bool"
}
],
"name": "setCalc",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "asset",
"type": "address"
},
{
"internalType": "bool",
"name": "valid",
"type": "bool"
}
],
"name": "setCollateralAsset",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_defaultGracePeriod",
"type": "uint256"
}
],
"name": "setDefaultGracePeriod",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "address",
"name": "mid",
"type": "address"
}
],
"name": "setDefaultUniswapPath",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_fundingPeriod",
"type": "uint256"
}
],
"name": "setFundingPeriod",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newGlobalAdmin",
"type": "address"
}
],
"name": "setGlobalAdmin",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_fee",
"type": "uint256"
}
],
"name": "setInvestorFee",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "asset",
"type": "address"
},
{
"internalType": "bool",
"name": "valid",
"type": "bool"
}
],
"name": "setLiquidityAsset",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "newCooldownPeriod",
"type": "uint256"
}
],
"name": "setLpCooldownPeriod",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "newLpWithdrawWindow",
"type": "uint256"
}
],
"name": "setLpWithdrawWindow",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_mapleTreasury",
"type": "address"
}
],
"name": "setMapleTreasury",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "newMaxSlippage",
"type": "uint256"
}
],
"name": "setMaxSwapSlippage",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_minLoanEquity",
"type": "uint256"
}
],
"name": "setMinLoanEquity",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_pendingGovernor",
"type": "address"
}
],
"name": "setPendingGovernor",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "delegate",
"type": "address"
},
{
"internalType": "bool",
"name": "valid",
"type": "bool"
}
],
"name": "setPoolDelegateAllowlist",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "asset",
"type": "address"
},
{
"internalType": "address",
"name": "oracle",
"type": "address"
}
],
"name": "setPriceOracle",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bool",
"name": "pause",
"type": "bool"
}
],
"name": "setProtocolPause",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "newCooldownPeriod",
"type": "uint256"
}
],
"name": "setStakerCooldownPeriod",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "newUnstakeWindow",
"type": "uint256"
}
],
"name": "setStakerUnstakeWindow",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amt",
"type": "uint256"
}
],
"name": "setSwapOutRequired",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_fee",
"type": "uint256"
}
],
"name": "setTreasuryFee",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "balancerPool",
"type": "address"
},
{
"internalType": "bool",
"name": "valid",
"type": "bool"
}
],
"name": "setValidBalancerPool",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "loanFactory",
"type": "address"
},
{
"internalType": "bool",
"name": "valid",
"type": "bool"
}
],
"name": "setValidLoanFactory",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "poolFactory",
"type": "address"
},
{
"internalType": "bool",
"name": "valid",
"type": "bool"
}
],
"name": "setValidPoolFactory",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "superFactory",
"type": "address"
},
{
"internalType": "address",
"name": "subFactory",
"type": "address"
},
{
"internalType": "bool",
"name": "valid",
"type": "bool"
}
],
"name": "setValidSubFactory",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "stakerCooldownPeriod",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "stakerUnstakeWindow",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "swapOutRequired",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "treasuryFee",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "validCalcs",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "validSubFactories",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
}
],
"evm": {
"bytecode": {
"linkReferences": {},
"object": "60a06040523480156200001157600080fd5b5060405162001f9638038062001f968339810160408190526200003491620000e8565b600180546001600160a01b038086166001600160a01b0319928316179092556001600160601b0319606085901b16608052612710600555620d2f00600681905562069780600455603260078190556008556103e86009556107d0600a556003805493851693909216929092179055600b819055600c556202a300600d819055600e556040517f5daa87a0e9463431830481fd4b6e3403442dfb9a12b9c07597e9f61d50b633c890600090a150505062000154565b600080600060608486031215620000fd578283fd5b83516200010a816200013b565b60208501519093506200011d816200013b565b604085015190925062000130816200013b565b809150509250925092565b6001600160a01b03811681146200015157600080fd5b50565b60805160601c611e2462000172600039806111be5250611e246000f3fe608060405234801561001057600080fd5b50600436106103835760003560e01c80637303de25116101de578063c9c672401161010f578063e58bb639116100ad578063f33ef09a1161007c578063f33ef09a146106e6578063f3897663146106f9578063f85ee6f81461070c578063fd4a91211461071f57610383565b8063e58bb639146106b0578063ec9a9368146106b8578063efdb16fc146106c0578063f235757f146106d357610383565b8063dbc6c552116100e9578063dbc6c55214610685578063dd02e0ec14610698578063df3d02bd146106a0578063e3056a34146106a857610383565b8063c9c6724014610657578063cc32d1761461066a578063d1cdf3011461067257610383565b8063a05309461161017c578063aed019b911610156578063aed019b91461060b578063b53afda71461061e578063be44ed6b14610631578063c52bc31d1461064457610383565b8063a0530946146105f3578063a5a27605146105fb578063a965d6b51461060357610383565b80638608a6e1116101b85780638608a6e1146105a45780638695118a146105b75780638c14834b146105ca5780639f51290b146105dd57610383565b80637303de251461057657806374d7c62b1461058957806377e741c71461059157610383565b80633106374c116102b85780634e989118116102565780636597b899116102305780636597b8991461053557806367a74ddc14610548578063705d5f241461055b57806372a22d711461056357610383565b80634e98911814610507578063553231951461051a5780635e0454671461052257610383565b806344c14f711161029257806344c14f71146104c6578063490dae64146104d95780634a2697c4146104ec5780634d866592146104f457610383565b80633106374c146104a3578063372e3546146104ab578063425fad58146104be57610383565b80631beb84e711610325578063298b795d116102ff578063298b795d146104575780632a5aa2921461046a5780632daa0d891461047d5780632fa6c88f1461049057610383565b80631beb84e7146104275780632018b8701461043a578063267186061461044257610383565b806316345f181161036157806316345f18146103d957806316a12d7a146103f95780631b1804aa146104015780631b5833f71461041457610383565b80630c340a2414610388578063107c0240146103a657806313d459fb146103c6575b600080fd5b610390610732565b60405161039d9190611b0a565b60405180910390f35b6103b96103b4366004611885565b610741565b60405161039d9190611ba4565b6103b96103d4366004611963565b610756565b6103ec6103e7366004611885565b61080a565b60405161039d9190611d55565b6103ec61089a565b6103b961040f3660046118a0565b6108a0565b6103b96104223660046119db565b6108c0565b6103b9610435366004611885565b610964565b6103ec610979565b610455610450366004611ad6565b61097f565b005b610455610465366004611ad6565b6109f7565b610455610478366004611ad6565b610a61565b61045561048b3660046119a0565b610ac1565b61045561049e3660046119a0565b610c31565b6103ec610cd7565b6103b96104b9366004611885565b610cdd565b6103b9610cf2565b6104556104d4366004611ad6565b610cfb565b6104556104e73660046119a0565b610d61565b6103ec610de1565b6103906105023660046118a0565b610de7565b610455610515366004611a07565b610e0d565b6103ec610e80565b610455610530366004611ad6565b610e86565b6104556105433660046119a0565b610f00565b6104556105563660046118a0565b610f55565b6103ec610fe0565b6103b9610571366004611885565b610fe6565b610455610584366004611885565b610ffb565b6103ec6110a9565b61045561059f366004611ad6565b6110af565b6104556105b2366004611ad6565b611124565b6103b96105c5366004611885565b611188565b6103b96105d8366004611885565b61119d565b6105e56111b2565b60405161039d929190611d5e565b6103906111bc565b6103906111e0565b6103ec6111ef565b610390610619366004611885565b6111f5565b6103b961062c366004611885565b611210565b61045561063f3660046119a0565b611225565b610455610652366004611885565b61127a565b6104556106653660046119a0565b611325565b6103ec61137a565b610455610680366004611ad6565b611380565b610455610693366004611ad6565b6113e7565b6103ec61146c565b6103ec611472565b610390611478565b610455611487565b6103906114f9565b6104556106ce3660046119a0565b611508565b6104556106e1366004611885565b611592565b6104556106f4366004611ad6565b61162a565b6104556107073660046118d4565b611696565b61045561071a366004611919565b6116fd565b61045561072d366004611ad6565b6117bc565b6001546001600160a01b031681565b60176020526000908152604090205460ff1681565b6001600160a01b03808416600090815260196020908152604080832093861683529290529081205460ff16801561080257508160ff16836001600160a01b03166364e1fd556040518163ffffffff1660e01b815260040160206040518083038186803b1580156107c557600080fd5b505afa1580156107d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fd9190611aee565b60ff16145b949350505050565b6001600160a01b038082166000908152601660209081526040808320548151638e15f47360e01b8152915193941692638e15f47392600480840193919291829003018186803b15801561085c57600080fd5b505afa158015610870573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108949190611a23565b92915050565b60075481565b601960209081526000928352604080842090915290825290205460ff1681565b6001600160a01b03821660009081526012602052604081205460ff16801561095d57508160ff16836001600160a01b0316639d8ae4466040518163ffffffff1660e01b815260040160206040518083038186803b15801561092057600080fd5b505afa158015610934573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109589190611aee565b60ff16145b9392505050565b60126020526000908152604090205460ff1681565b600d5481565b6001546001600160a01b031633146109b25760405162461bcd60e51b81526004016109a990611cdf565b60405180910390fd5b80600e81905550714c505f57495448445241575f57494e444f5760701b600080516020611dcf833981519152826040516109ec9190611d55565b60405180910390a250565b6001546001600160a01b03163314610a215760405162461bcd60e51b81526004016109a990611cdf565b610a2a81611824565b80600a819055506e4d494e5f4c4f414e5f45515549545960881b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b03163314610a8b5760405162461bcd60e51b81526004016109a990611cdf565b806006819055506d11955391125391d7d411549253d160921b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b03163314610aeb5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b038216600081815260106020908152604091829020805460ff1916851515179055815163313ce56760e01b815291517f18d231995d1f7e4354b1786418aa8f34f99996ded9cc6b1d43c3815eb6f5ab79938693909263313ce56792600480840193829003018186803b158015610b6757600080fd5b505afa158015610b7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9f9190611a23565b846001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015610bd857600080fd5b505afa158015610bec573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c149190810190611a3b565b84604051610c259493929190611b53565b60405180910390a15050565b6001546001600160a01b03163314610c5b5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b038216600081815260116020908152604091829020805460ff1916851515179055815163313ce56760e01b815291517fb9456501e6a30eefbf8c4f9d199ef0c7ac7491abb068d594bbafbdec85447ccc938693909263313ce56792600480840193829003018186803b158015610b6757600080fd5b60055481565b60136020526000908152604090205460ff1681565b600f5460ff1681565b6001546001600160a01b03163314610d255760405162461bcd60e51b81526004016109a990611cdf565b80600481905550731111519055531517d1d49050d157d411549253d160621b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b03163314610d8b5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03821660009081526014602052604090819020805460ff1916831515179055517f936e0e50587b3c03d3e833e5cc880e9a62afb49d51808e96d00c4790ed03796290610c259084908490611b38565b600a5481565b60156020908152600092835260408084209091529082529020546001600160a01b031681565b6003546001600160a01b03163314610e375760405162461bcd60e51b81526004016109a990611d2f565b600f805460ff19168215151790556040517f6e0cb5fa7a57c38eb7939c1104f95fccb5b7a6a8c1a7cab76934305439b639f590610e75908390611ba4565b60405180910390a150565b60095481565b6001546001600160a01b03163314610eb05760405162461bcd60e51b81526004016109a990611cdf565b600854610ecc90610ec7908363ffffffff61184916565b611824565b806007819055506b494e564553544f525f46454560a01b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b03163314610f2a5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6001546001600160a01b03163314610f7f5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b038281166000908152601660205260409081902080546001600160a01b03191692841692909217909155517fc1d3048301c0d23629a2532c8defa6d68f8e1a0e4157918769e9fb1b2eeb888e90610c259084908490611b1e565b60045481565b60146020526000908152604090205460ff1681565b6001546001600160a01b031633146110255760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03811661104b5760405162461bcd60e51b81526004016109a990611cb9565b600280546001600160a01b0319166001600160a01b0383161790556040516d4d41504c455f545245415355525960901b907f806b6f19dfa971f58fc9140115f19907b73e8336024786c79c2ffc56f6678ec1906109ec908490611b0a565b60065481565b6001546001600160a01b031633146110d95760405162461bcd60e51b81526004016109a990611cdf565b6007546110f090610ec7908363ffffffff61184916565b806008819055506b54524541535552595f46454560a01b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b0316331461114e5760405162461bcd60e51b81526004016109a990611cdf565b80600c8190555071131417d0d3d3d31113d5d397d411549253d160721b600080516020611dcf833981519152826040516109ec9190611d55565b60106020526000908152604090205460ff1681565b60116020526000908152604090205460ff1681565b600c54600e549091565b7f000000000000000000000000000000000000000000000000000000000000000081565b6002546001600160a01b031681565b600b5481565b6016602052600090815260409020546001600160a01b031681565b60186020526000908152604090205460ff1681565b6001546001600160a01b0316331461124f5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b6001546001600160a01b03163314801561129c57506001600160a01b03811615155b6112b85760405162461bcd60e51b81526004016109a990611bd3565b600f5460ff16156112db5760405162461bcd60e51b81526004016109a990611c63565b600380546001600160a01b0319166001600160a01b0383169081179091556040517fad3f8fa73ce3985d027e4c3bbe1194701a23e635a746bcf73d8632f677ac388290600090a250565b6001546001600160a01b0316331461134f5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b60085481565b6001546001600160a01b031633146113aa5760405162461bcd60e51b81526004016109a990611cdf565b80600d81905550745354414b45525f554e5354414b455f57494e444f5760581b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b031633146114115760405162461bcd60e51b81526004016109a990611cdf565b6127108110156114335760405162461bcd60e51b81526004016109a990611c8c565b806005819055507014d5d05417d3d55517d491545552549151607a1b600080516020611dcf833981519152826040516109ec9190611d55565b600c5481565b600e5481565b6000546001600160a01b031681565b6000546001600160a01b031633146114b15760405162461bcd60e51b81526004016109a990611c00565b60018054336001600160a01b031991821681179092556000805490911681556040517fb7a4788848eba3319c766bdd6428c7d7a10e4cba4fd6ade9b79b7102b7099b369190a2565b6003546001600160a01b031681565b6001546001600160a01b031633146115325760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03821660008181526013602052604090819020805460ff1916841515179055517fd2e6a599a52383178be9bf2d0be60c96615b89f8d9cf6c680f06962aa73679fc90611586908490611ba4565b60405180910390a25050565b6001546001600160a01b031633146115bc5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b0381166115e25760405162461bcd60e51b81526004016109a990611cb9565b600080546001600160a01b0319166001600160a01b038316908117825560405190917f56bddfa0cee9697cebddf9acd7f23dc6583663b05e007b877056d05017994def91a250565b6001546001600160a01b031633146116545760405162461bcd60e51b81526004016109a990611cdf565b61165d81611824565b80600981905550704d41585f535741505f534c49505041474560781b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b031633146116c05760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03928316600090815260156020908152604080832094861683529390529190912080546001600160a01b03191691909216179055565b6001546001600160a01b031633146117275760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03831660009081526018602052604090205460ff168061176657506001600160a01b03831660009081526017602052604090205460ff165b6117825760405162461bcd60e51b81526004016109a990611d03565b6001600160a01b03928316600090815260196020908152604080832094909516825292909252919020805460ff1916911515919091179055565b6001546001600160a01b031633146117e65760405162461bcd60e51b81526004016109a990611cdf565b80600b819055507514d51052d15497d0d3d3d31113d5d397d411549253d160521b600080516020611dcf833981519152826040516109ec9190611d55565b6127108111156118465760405162461bcd60e51b81526004016109a990611baf565b50565b60008282018381101561095d5760405162461bcd60e51b81526004016109a990611c2c565b80356001600160a01b038116811461089457600080fd5b600060208284031215611896578081fd5b61095d838361186e565b600080604083850312156118b2578081fd5b6118bc848461186e565b91506118cb846020850161186e565b90509250929050565b6000806000606084860312156118e8578081fd5b6118f2858561186e565b9250611901856020860161186e565b9150611910856040860161186e565b90509250925092565b60008060006060848603121561192d578283fd5b833561193881611d9c565b9250602084013561194881611d9c565b9150604084013561195881611db1565b809150509250925092565b600080600060608486031215611977578283fd5b611981858561186e565b9250611990856020860161186e565b9150604084013561195881611dbf565b600080604083850312156119b2578182fd5b6119bc848461186e565b9150602083013580151581146119d0578182fd5b809150509250929050565b600080604083850312156119ed578182fd5b6119f7848461186e565b915060208301356119d081611dbf565b600060208284031215611a18578081fd5b813561095d81611db1565b600060208284031215611a34578081fd5b5051919050565b600060208284031215611a4c578081fd5b815167ffffffffffffffff80821115611a63578283fd5b81840185601f820112611a74578384fd5b8051925081831115611a84578384fd5b604051601f8401601f191681016020018381118282101715611aa4578586fd5b604052838152818401602001871015611abb578485fd5b611acc846020830160208501611d6c565b9695505050505050565b600060208284031215611ae7578081fd5b5035919050565b600060208284031215611aff578081fd5b815161095d81611dbf565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039290921682521515602082015260400190565b600060018060a01b0386168252846020830152608060408301528351806080840152611b868160a0850160208801611d6c565b921515606083015250601f91909101601f19160160a0019392505050565b901515815260200190565b6020808252600a908201526926a39d2821aa2fa7a7a160b11b604082015260600190565b60208082526013908201527226a39d2727aa2fa3a7ab2fa7a92fa0a226a4a760691b604082015260600190565b60208082526012908201527126a39d2727aa2fa822a72224a723afa3a7ab60711b604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252600f908201526e1351ce941493d513d7d4105554d151608a1b604082015260600190565b6020808252601390820152724d473a535741505f4f55545f544f4f5f4c4f5760681b604082015260600190565b6020808252600c908201526b26a39d2d22a927afa0a2222960a11b604082015260600190565b6020808252600a908201526926a39d2727aa2fa3a7ab60b11b604082015260600190565b60208082526012908201527126a39d24a72b20a624a22fa9aaa822a92fa360711b604082015260600190565b6020808252600c908201526b26a39d2727aa2fa0a226a4a760a11b604082015260600190565b90815260200190565b918252602082015260400190565b60005b83811015611d87578181015183820152602001611d6f565b83811115611d96576000848401525b50505050565b6001600160a01b038116811461184657600080fd5b801515811461184657600080fd5b60ff8116811461184657600080fdfed8780a041c72589f51af8b3fade9cc8a466d00ecef64d45657dd6cdebf1ecf47a26469706673582212200137a24e6d83f2efff919fad035876bd2ab6890372959af09d2aa958eedc1fb964736f6c634300060b0033",
"opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1F96 CODESIZE SUB DUP1 PUSH3 0x1F96 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0xE8 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH1 0x80 MSTORE PUSH2 0x2710 PUSH1 0x5 SSTORE PUSH3 0xD2F00 PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH3 0x69780 PUSH1 0x4 SSTORE PUSH1 0x32 PUSH1 0x7 DUP2 SWAP1 SSTORE PUSH1 0x8 SSTORE PUSH2 0x3E8 PUSH1 0x9 SSTORE PUSH2 0x7D0 PUSH1 0xA SSTORE PUSH1 0x3 DUP1 SLOAD SWAP4 DUP6 AND SWAP4 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SSTORE PUSH1 0xB DUP2 SWAP1 SSTORE PUSH1 0xC SSTORE PUSH3 0x2A300 PUSH1 0xD DUP2 SWAP1 SSTORE PUSH1 0xE SSTORE PUSH1 0x40 MLOAD PUSH32 0x5DAA87A0E9463431830481FD4B6E3403442DFB9A12B9C07597E9F61D50B633C8 SWAP1 PUSH1 0x0 SWAP1 LOG1 POP POP POP PUSH3 0x154 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0xFD JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD PUSH3 0x10A DUP2 PUSH3 0x13B JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH3 0x11D DUP2 PUSH3 0x13B JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD SWAP1 SWAP3 POP PUSH3 0x130 DUP2 PUSH3 0x13B JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x151 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH2 0x1E24 PUSH3 0x172 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x11BE MSTORE POP PUSH2 0x1E24 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x383 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7303DE25 GT PUSH2 0x1DE JUMPI DUP1 PUSH4 0xC9C67240 GT PUSH2 0x10F JUMPI DUP1 PUSH4 0xE58BB639 GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xF33EF09A GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xF33EF09A EQ PUSH2 0x6E6 JUMPI DUP1 PUSH4 0xF3897663 EQ PUSH2 0x6F9 JUMPI DUP1 PUSH4 0xF85EE6F8 EQ PUSH2 0x70C JUMPI DUP1 PUSH4 0xFD4A9121 EQ PUSH2 0x71F JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0xE58BB639 EQ PUSH2 0x6B0 JUMPI DUP1 PUSH4 0xEC9A9368 EQ PUSH2 0x6B8 JUMPI DUP1 PUSH4 0xEFDB16FC EQ PUSH2 0x6C0 JUMPI DUP1 PUSH4 0xF235757F EQ PUSH2 0x6D3 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0xDBC6C552 GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0xDBC6C552 EQ PUSH2 0x685 JUMPI DUP1 PUSH4 0xDD02E0EC EQ PUSH2 0x698 JUMPI DUP1 PUSH4 0xDF3D02BD EQ PUSH2 0x6A0 JUMPI DUP1 PUSH4 0xE3056A34 EQ PUSH2 0x6A8 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0xC9C67240 EQ PUSH2 0x657 JUMPI DUP1 PUSH4 0xCC32D176 EQ PUSH2 0x66A JUMPI DUP1 PUSH4 0xD1CDF301 EQ PUSH2 0x672 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0xA0530946 GT PUSH2 0x17C JUMPI DUP1 PUSH4 0xAED019B9 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0xAED019B9 EQ PUSH2 0x60B JUMPI DUP1 PUSH4 0xB53AFDA7 EQ PUSH2 0x61E JUMPI DUP1 PUSH4 0xBE44ED6B EQ PUSH2 0x631 JUMPI DUP1 PUSH4 0xC52BC31D EQ PUSH2 0x644 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0xA0530946 EQ PUSH2 0x5F3 JUMPI DUP1 PUSH4 0xA5A27605 EQ PUSH2 0x5FB JUMPI DUP1 PUSH4 0xA965D6B5 EQ PUSH2 0x603 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0x8608A6E1 GT PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x8608A6E1 EQ PUSH2 0x5A4 JUMPI DUP1 PUSH4 0x8695118A EQ PUSH2 0x5B7 JUMPI DUP1 PUSH4 0x8C14834B EQ PUSH2 0x5CA JUMPI DUP1 PUSH4 0x9F51290B EQ PUSH2 0x5DD JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0x7303DE25 EQ PUSH2 0x576 JUMPI DUP1 PUSH4 0x74D7C62B EQ PUSH2 0x589 JUMPI DUP1 PUSH4 0x77E741C7 EQ PUSH2 0x591 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0x3106374C GT PUSH2 0x2B8 JUMPI DUP1 PUSH4 0x4E989118 GT PUSH2 0x256 JUMPI DUP1 PUSH4 0x6597B899 GT PUSH2 0x230 JUMPI DUP1 PUSH4 0x6597B899 EQ PUSH2 0x535 JUMPI DUP1 PUSH4 0x67A74DDC EQ PUSH2 0x548 JUMPI DUP1 PUSH4 0x705D5F24 EQ PUSH2 0x55B JUMPI DUP1 PUSH4 0x72A22D71 EQ PUSH2 0x563 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0x4E989118 EQ PUSH2 0x507 JUMPI DUP1 PUSH4 0x55323195 EQ PUSH2 0x51A JUMPI DUP1 PUSH4 0x5E045467 EQ PUSH2 0x522 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0x44C14F71 GT PUSH2 0x292 JUMPI DUP1 PUSH4 0x44C14F71 EQ PUSH2 0x4C6 JUMPI DUP1 PUSH4 0x490DAE64 EQ PUSH2 0x4D9 JUMPI DUP1 PUSH4 0x4A2697C4 EQ PUSH2 0x4EC JUMPI DUP1 PUSH4 0x4D866592 EQ PUSH2 0x4F4 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0x3106374C EQ PUSH2 0x4A3 JUMPI DUP1 PUSH4 0x372E3546 EQ PUSH2 0x4AB JUMPI DUP1 PUSH4 0x425FAD58 EQ PUSH2 0x4BE JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0x1BEB84E7 GT PUSH2 0x325 JUMPI DUP1 PUSH4 0x298B795D GT PUSH2 0x2FF JUMPI DUP1 PUSH4 0x298B795D EQ PUSH2 0x457 JUMPI DUP1 PUSH4 0x2A5AA292 EQ PUSH2 0x46A JUMPI DUP1 PUSH4 0x2DAA0D89 EQ PUSH2 0x47D JUMPI DUP1 PUSH4 0x2FA6C88F EQ PUSH2 0x490 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0x1BEB84E7 EQ PUSH2 0x427 JUMPI DUP1 PUSH4 0x2018B870 EQ PUSH2 0x43A JUMPI DUP1 PUSH4 0x26718606 EQ PUSH2 0x442 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0x16345F18 GT PUSH2 0x361 JUMPI DUP1 PUSH4 0x16345F18 EQ PUSH2 0x3D9 JUMPI DUP1 PUSH4 0x16A12D7A EQ PUSH2 0x3F9 JUMPI DUP1 PUSH4 0x1B1804AA EQ PUSH2 0x401 JUMPI DUP1 PUSH4 0x1B5833F7 EQ PUSH2 0x414 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0xC340A24 EQ PUSH2 0x388 JUMPI DUP1 PUSH4 0x107C0240 EQ PUSH2 0x3A6 JUMPI DUP1 PUSH4 0x13D459FB EQ PUSH2 0x3C6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x390 PUSH2 0x732 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x39D SWAP2 SWAP1 PUSH2 0x1B0A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3B9 PUSH2 0x3B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0x741 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x39D SWAP2 SWAP1 PUSH2 0x1BA4 JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x3D4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1963 JUMP JUMPDEST PUSH2 0x756 JUMP JUMPDEST PUSH2 0x3EC PUSH2 0x3E7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0x80A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x39D SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH2 0x3EC PUSH2 0x89A JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x40F CALLDATASIZE PUSH1 0x4 PUSH2 0x18A0 JUMP JUMPDEST PUSH2 0x8A0 JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x422 CALLDATASIZE PUSH1 0x4 PUSH2 0x19DB JUMP JUMPDEST PUSH2 0x8C0 JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x435 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0x964 JUMP JUMPDEST PUSH2 0x3EC PUSH2 0x979 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x450 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0x97F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x455 PUSH2 0x465 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0x9F7 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x478 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0xA61 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x48B CALLDATASIZE PUSH1 0x4 PUSH2 0x19A0 JUMP JUMPDEST PUSH2 0xAC1 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x49E CALLDATASIZE PUSH1 0x4 PUSH2 0x19A0 JUMP JUMPDEST PUSH2 0xC31 JUMP JUMPDEST PUSH2 0x3EC PUSH2 0xCD7 JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x4B9 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0xCDD JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0xCF2 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x4D4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0xCFB JUMP JUMPDEST PUSH2 0x455 PUSH2 0x4E7 CALLDATASIZE PUSH1 0x4 PUSH2 0x19A0 JUMP JUMPDEST PUSH2 0xD61 JUMP JUMPDEST PUSH2 0x3EC PUSH2 0xDE1 JUMP JUMPDEST PUSH2 0x390 PUSH2 0x502 CALLDATASIZE PUSH1 0x4 PUSH2 0x18A0 JUMP JUMPDEST PUSH2 0xDE7 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x515 CALLDATASIZE PUSH1 0x4 PUSH2 0x1A07 JUMP JUMPDEST PUSH2 0xE0D JUMP JUMPDEST PUSH2 0x3EC PUSH2 0xE80 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x530 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0xE86 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x543 CALLDATASIZE PUSH1 0x4 PUSH2 0x19A0 JUMP JUMPDEST PUSH2 0xF00 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x556 CALLDATASIZE PUSH1 0x4 PUSH2 0x18A0 JUMP JUMPDEST PUSH2 0xF55 JUMP JUMPDEST PUSH2 0x3EC PUSH2 0xFE0 JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x571 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0xFE6 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x584 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0xFFB JUMP JUMPDEST PUSH2 0x3EC PUSH2 0x10A9 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x59F CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0x10AF JUMP JUMPDEST PUSH2 0x455 PUSH2 0x5B2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0x1124 JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x5C5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0x1188 JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x5D8 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0x119D JUMP JUMPDEST PUSH2 0x5E5 PUSH2 0x11B2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x39D SWAP3 SWAP2 SWAP1 PUSH2 0x1D5E JUMP JUMPDEST PUSH2 0x390 PUSH2 0x11BC JUMP JUMPDEST PUSH2 0x390 PUSH2 0x11E0 JUMP JUMPDEST PUSH2 0x3EC PUSH2 0x11EF JUMP JUMPDEST PUSH2 0x390 PUSH2 0x619 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0x11F5 JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x62C CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0x1210 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x63F CALLDATASIZE PUSH1 0x4 PUSH2 0x19A0 JUMP JUMPDEST PUSH2 0x1225 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x652 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0x127A JUMP JUMPDEST PUSH2 0x455 PUSH2 0x665 CALLDATASIZE PUSH1 0x4 PUSH2 0x19A0 JUMP JUMPDEST PUSH2 0x1325 JUMP JUMPDEST PUSH2 0x3EC PUSH2 0x137A JUMP JUMPDEST PUSH2 0x455 PUSH2 0x680 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0x1380 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x693 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0x13E7 JUMP JUMPDEST PUSH2 0x3EC PUSH2 0x146C JUMP JUMPDEST PUSH2 0x3EC PUSH2 0x1472 JUMP JUMPDEST PUSH2 0x390 PUSH2 0x1478 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x1487 JUMP JUMPDEST PUSH2 0x390 PUSH2 0x14F9 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x6CE CALLDATASIZE PUSH1 0x4 PUSH2 0x19A0 JUMP JUMPDEST PUSH2 0x1508 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x6E1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0x1592 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x6F4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0x162A JUMP JUMPDEST PUSH2 0x455 PUSH2 0x707 CALLDATASIZE PUSH1 0x4 PUSH2 0x18D4 JUMP JUMPDEST PUSH2 0x1696 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x71A CALLDATASIZE PUSH1 0x4 PUSH2 0x1919 JUMP JUMPDEST PUSH2 0x16FD JUMP JUMPDEST PUSH2 0x455 PUSH2 0x72D CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0x17BC JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE SWAP1 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 ISZERO PUSH2 0x802 JUMPI POP DUP2 PUSH1 0xFF AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x64E1FD55 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7D9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7FD SWAP2 SWAP1 PUSH2 0x1AEE JUMP JUMPDEST PUSH1 0xFF AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD DUP2 MLOAD PUSH4 0x8E15F473 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 MLOAD SWAP4 SWAP5 AND SWAP3 PUSH4 0x8E15F473 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x85C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x870 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x894 SWAP2 SWAP1 PUSH2 0x1A23 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 ISZERO PUSH2 0x95D JUMPI POP DUP2 PUSH1 0xFF AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x9D8AE446 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x920 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x934 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x958 SWAP2 SWAP1 PUSH2 0x1AEE JUMP JUMPDEST PUSH1 0xFF AND EQ JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x9B2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0xE DUP2 SWAP1 SSTORE POP PUSH18 0x4C505F57495448445241575F57494E444F57 PUSH1 0x70 SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xA21 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH2 0xA2A DUP2 PUSH2 0x1824 JUMP JUMPDEST DUP1 PUSH1 0xA DUP2 SWAP1 SSTORE POP PUSH15 0x4D494E5F4C4F414E5F455155495459 PUSH1 0x88 SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xA8B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST DUP1 PUSH1 0x6 DUP2 SWAP1 SSTORE POP PUSH14 0x11955391125391D7D411549253D1 PUSH1 0x92 SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xAEB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x10 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP6 ISZERO ISZERO OR SWAP1 SSTORE DUP2 MLOAD PUSH4 0x313CE567 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 MLOAD PUSH32 0x18D231995D1F7E4354B1786418AA8F34F99996DED9CC6B1D43C3815EB6F5AB79 SWAP4 DUP7 SWAP4 SWAP1 SWAP3 PUSH4 0x313CE567 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB7B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB9F SWAP2 SWAP1 PUSH2 0x1A23 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x95D89B41 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBEC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xC14 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1A3B JUMP JUMPDEST DUP5 PUSH1 0x40 MLOAD PUSH2 0xC25 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1B53 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xC5B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP6 ISZERO ISZERO OR SWAP1 SSTORE DUP2 MLOAD PUSH4 0x313CE567 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 MLOAD PUSH32 0xB9456501E6A30EEFBF8C4F9D199EF0C7AC7491ABB068D594BBAFBDEC85447CCC SWAP4 DUP7 SWAP4 SWAP1 SWAP3 PUSH4 0x313CE567 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xF SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xD25 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST DUP1 PUSH1 0x4 DUP2 SWAP1 SSTORE POP PUSH20 0x1111519055531517D1D49050D157D411549253D1 PUSH1 0x62 SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xD8B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP4 ISZERO ISZERO OR SWAP1 SSTORE MLOAD PUSH32 0x936E0E50587B3C03D3E833E5CC880E9A62AFB49D51808E96D00C4790ED037962 SWAP1 PUSH2 0xC25 SWAP1 DUP5 SWAP1 DUP5 SWAP1 PUSH2 0x1B38 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xE37 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1D2F JUMP JUMPDEST PUSH1 0xF DUP1 SLOAD PUSH1 0xFF NOT AND DUP3 ISZERO ISZERO OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x6E0CB5FA7A57C38EB7939C1104F95FCCB5B7A6A8C1A7CAB76934305439B639F5 SWAP1 PUSH2 0xE75 SWAP1 DUP4 SWAP1 PUSH2 0x1BA4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xEB0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH2 0xECC SWAP1 PUSH2 0xEC7 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1849 AND JUMP JUMPDEST PUSH2 0x1824 JUMP JUMPDEST DUP1 PUSH1 0x7 DUP2 SWAP1 SSTORE POP PUSH12 0x494E564553544F525F464545 PUSH1 0xA0 SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xF2A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xF7F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP3 DUP5 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD PUSH32 0xC1D3048301C0D23629A2532C8DEFA6D68F8E1A0E4157918769E9FB1B2EEB888E SWAP1 PUSH2 0xC25 SWAP1 DUP5 SWAP1 DUP5 SWAP1 PUSH2 0x1B1E JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x14 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1025 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x104B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CB9 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH14 0x4D41504C455F5452454153555259 PUSH1 0x90 SHL SWAP1 PUSH32 0x806B6F19DFA971F58FC9140115F19907B73E8336024786C79C2FFC56F6678EC1 SWAP1 PUSH2 0x9EC SWAP1 DUP5 SWAP1 PUSH2 0x1B0A JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x10D9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH2 0x10F0 SWAP1 PUSH2 0xEC7 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1849 AND JUMP JUMPDEST DUP1 PUSH1 0x8 DUP2 SWAP1 SSTORE POP PUSH12 0x54524541535552595F464545 PUSH1 0xA0 SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x114E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST DUP1 PUSH1 0xC DUP2 SWAP1 SSTORE POP PUSH18 0x131417D0D3D3D31113D5D397D411549253D1 PUSH1 0x72 SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0xE SLOAD SWAP1 SWAP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x18 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x124F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 ISZERO PUSH2 0x129C JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO ISZERO JUMPDEST PUSH2 0x12B8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1BD3 JUMP JUMPDEST PUSH1 0xF SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x12DB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1C63 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0xAD3F8FA73CE3985D027E4C3BBE1194701A23E635A746BCF73D8632F677AC3882 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x134F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x18 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x13AA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST DUP1 PUSH1 0xD DUP2 SWAP1 SSTORE POP PUSH21 0x5354414B45525F554E5354414B455F57494E444F57 PUSH1 0x58 SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1411 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH2 0x2710 DUP2 LT ISZERO PUSH2 0x1433 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1C8C JUMP JUMPDEST DUP1 PUSH1 0x5 DUP2 SWAP1 SSTORE POP PUSH17 0x14D5D05417D3D55517D491545552549151 PUSH1 0x7A SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH1 0xC SLOAD DUP2 JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x14B1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1C00 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND DUP2 OR SWAP1 SWAP3 SSTORE PUSH1 0x0 DUP1 SLOAD SWAP1 SWAP2 AND DUP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0xB7A4788848EBA3319C766BDD6428C7D7A10E4CBA4FD6ADE9B79B7102B7099B36 SWAP2 SWAP1 LOG2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1532 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP5 ISZERO ISZERO OR SWAP1 SSTORE MLOAD PUSH32 0xD2E6A599A52383178BE9BF2D0BE60C96615B89F8D9CF6C680F06962AA73679FC SWAP1 PUSH2 0x1586 SWAP1 DUP5 SWAP1 PUSH2 0x1BA4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x15BC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x15E2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CB9 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 PUSH32 0x56BDDFA0CEE9697CEBDDF9ACD7F23DC6583663B05E007B877056D05017994DEF SWAP2 LOG2 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1654 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH2 0x165D DUP2 PUSH2 0x1824 JUMP JUMPDEST DUP1 PUSH1 0x9 DUP2 SWAP1 SSTORE POP PUSH17 0x4D41585F535741505F534C495050414745 PUSH1 0x78 SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x16C0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x15 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP7 AND DUP4 MSTORE SWAP4 SWAP1 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1727 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x18 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x1766 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x1782 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1D03 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP6 AND DUP3 MSTORE SWAP3 SWAP1 SWAP3 MSTORE SWAP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x17E6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST DUP1 PUSH1 0xB DUP2 SWAP1 SSTORE POP PUSH22 0x14D51052D15497D0D3D3D31113D5D397D411549253D1 PUSH1 0x52 SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH2 0x2710 DUP2 GT ISZERO PUSH2 0x1846 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1BAF JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x95D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1C2C JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x894 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1896 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x95D DUP4 DUP4 PUSH2 0x186E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x18B2 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x18BC DUP5 DUP5 PUSH2 0x186E JUMP JUMPDEST SWAP2 POP PUSH2 0x18CB DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x186E JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x18E8 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x18F2 DUP6 DUP6 PUSH2 0x186E JUMP JUMPDEST SWAP3 POP PUSH2 0x1901 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x186E JUMP JUMPDEST SWAP2 POP PUSH2 0x1910 DUP6 PUSH1 0x40 DUP7 ADD PUSH2 0x186E JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x192D JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1938 DUP2 PUSH2 0x1D9C JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x1948 DUP2 PUSH2 0x1D9C JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x1958 DUP2 PUSH2 0x1DB1 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1977 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1981 DUP6 DUP6 PUSH2 0x186E JUMP JUMPDEST SWAP3 POP PUSH2 0x1990 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x186E JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x1958 DUP2 PUSH2 0x1DBF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x19B2 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x19BC DUP5 DUP5 PUSH2 0x186E JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x19D0 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x19ED JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x19F7 DUP5 DUP5 PUSH2 0x186E JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x19D0 DUP2 PUSH2 0x1DBF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A18 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x95D DUP2 PUSH2 0x1DB1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A34 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A4C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1A63 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP5 ADD DUP6 PUSH1 0x1F DUP3 ADD SLT PUSH2 0x1A74 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP1 MLOAD SWAP3 POP DUP2 DUP4 GT ISZERO PUSH2 0x1A84 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP5 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x20 ADD DUP4 DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1AA4 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE DUP2 DUP5 ADD PUSH1 0x20 ADD DUP8 LT ISZERO PUSH2 0x1ABB JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x1ACC DUP5 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP6 ADD PUSH2 0x1D6C JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1AE7 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1AFF JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x95D DUP2 PUSH2 0x1DBF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE ISZERO ISZERO PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP7 AND DUP3 MSTORE DUP5 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x40 DUP4 ADD MSTORE DUP4 MLOAD DUP1 PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x1B86 DUP2 PUSH1 0xA0 DUP6 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x1D6C JUMP JUMPDEST SWAP3 ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD PUSH1 0xA0 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xA SWAP1 DUP3 ADD MSTORE PUSH10 0x26A39D2821AA2FA7A7A1 PUSH1 0xB1 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH19 0x26A39D2727AA2FA3A7AB2FA7A92FA0A226A4A7 PUSH1 0x69 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x12 SWAP1 DUP3 ADD MSTORE PUSH18 0x26A39D2727AA2FA822A72224A723AFA3A7AB PUSH1 0x71 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xF SWAP1 DUP3 ADD MSTORE PUSH15 0x1351CE941493D513D7D4105554D151 PUSH1 0x8A SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH19 0x4D473A535741505F4F55545F544F4F5F4C4F57 PUSH1 0x68 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xC SWAP1 DUP3 ADD MSTORE PUSH12 0x26A39D2D22A927AFA0A22229 PUSH1 0xA1 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xA SWAP1 DUP3 ADD MSTORE PUSH10 0x26A39D2727AA2FA3A7AB PUSH1 0xB1 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x12 SWAP1 DUP3 ADD MSTORE PUSH18 0x26A39D24A72B20A624A22FA9AAA822A92FA3 PUSH1 0x71 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xC SWAP1 DUP3 ADD MSTORE PUSH12 0x26A39D2727AA2FA0A226A4A7 PUSH1 0xA1 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1D87 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1D6F JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1D96 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1846 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1846 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x1846 JUMPI PUSH1 0x0 DUP1 REVERT INVALID 0xD8 PUSH25 0xA041C72589F51AF8B3FADE9CC8A466D00ECEF64D45657DD6C 0xDE 0xBF 0x1E 0xCF SELFBALANCE LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADD CALLDATACOPY LOG2 0x4E PUSH14 0x83F2EFFF919FAD035876BD2AB689 SUB PUSH19 0x959AF09D2AA958EEDC1FB964736F6C63430006 SIGNEXTEND STOP CALLER ",
"sourceMap": "31087:9829:0:-:0;;;33115:744;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33199:8;:32;;-1:-1:-1;;;;;33199:32:0;;;-1:-1:-1;;;;;;33199:32:0;;;;;;;-1:-1:-1;;;;;;33241:27:0;;;;;;;33301:6;33278:15;:29;33369:7;33346:13;:30;;;33409:6;33386:18;:29;33448:2;33425:11;:25;;;33477:11;:25;33552:4;33529:15;:27;33603:4;33580:13;:27;33631:11;:35;;;;;;;;;;;;;;;33676:20;:30;;;33716:16;:30;33779:6;33756:19;:29;;;33795:16;:29;33839:13;;;;33199:8;;33839:13;33115:744;;;31087:9829;;146:535:-1;;;;295:2;283:9;274:7;270:23;266:32;263:2;;;-1:-1;;301:12;263:2;89:6;83:13;101:33;128:5;101:33;:::i;:::-;464:2;514:22;;83:13;353:74;;-1:-1;101:33;83:13;101:33;:::i;:::-;583:2;633:22;;83:13;472:74;;-1:-1;101:33;83:13;101:33;:::i;:::-;591:74;;;;257:424;;;;;:::o;914:117::-;-1:-1;;;;;848:54;;973:35;;963:2;;1022:1;;1012:12;963:2;957:74;:::o;:::-;31087:9829:0;;;;;;;;;;;"
},
"deployedBytecode": {
"immutableReferences": {
"820": [
{
"length": 32,
"start": 4542
}
]
},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50600436106103835760003560e01c80637303de25116101de578063c9c672401161010f578063e58bb639116100ad578063f33ef09a1161007c578063f33ef09a146106e6578063f3897663146106f9578063f85ee6f81461070c578063fd4a91211461071f57610383565b8063e58bb639146106b0578063ec9a9368146106b8578063efdb16fc146106c0578063f235757f146106d357610383565b8063dbc6c552116100e9578063dbc6c55214610685578063dd02e0ec14610698578063df3d02bd146106a0578063e3056a34146106a857610383565b8063c9c6724014610657578063cc32d1761461066a578063d1cdf3011461067257610383565b8063a05309461161017c578063aed019b911610156578063aed019b91461060b578063b53afda71461061e578063be44ed6b14610631578063c52bc31d1461064457610383565b8063a0530946146105f3578063a5a27605146105fb578063a965d6b51461060357610383565b80638608a6e1116101b85780638608a6e1146105a45780638695118a146105b75780638c14834b146105ca5780639f51290b146105dd57610383565b80637303de251461057657806374d7c62b1461058957806377e741c71461059157610383565b80633106374c116102b85780634e989118116102565780636597b899116102305780636597b8991461053557806367a74ddc14610548578063705d5f241461055b57806372a22d711461056357610383565b80634e98911814610507578063553231951461051a5780635e0454671461052257610383565b806344c14f711161029257806344c14f71146104c6578063490dae64146104d95780634a2697c4146104ec5780634d866592146104f457610383565b80633106374c146104a3578063372e3546146104ab578063425fad58146104be57610383565b80631beb84e711610325578063298b795d116102ff578063298b795d146104575780632a5aa2921461046a5780632daa0d891461047d5780632fa6c88f1461049057610383565b80631beb84e7146104275780632018b8701461043a578063267186061461044257610383565b806316345f181161036157806316345f18146103d957806316a12d7a146103f95780631b1804aa146104015780631b5833f71461041457610383565b80630c340a2414610388578063107c0240146103a657806313d459fb146103c6575b600080fd5b610390610732565b60405161039d9190611b0a565b60405180910390f35b6103b96103b4366004611885565b610741565b60405161039d9190611ba4565b6103b96103d4366004611963565b610756565b6103ec6103e7366004611885565b61080a565b60405161039d9190611d55565b6103ec61089a565b6103b961040f3660046118a0565b6108a0565b6103b96104223660046119db565b6108c0565b6103b9610435366004611885565b610964565b6103ec610979565b610455610450366004611ad6565b61097f565b005b610455610465366004611ad6565b6109f7565b610455610478366004611ad6565b610a61565b61045561048b3660046119a0565b610ac1565b61045561049e3660046119a0565b610c31565b6103ec610cd7565b6103b96104b9366004611885565b610cdd565b6103b9610cf2565b6104556104d4366004611ad6565b610cfb565b6104556104e73660046119a0565b610d61565b6103ec610de1565b6103906105023660046118a0565b610de7565b610455610515366004611a07565b610e0d565b6103ec610e80565b610455610530366004611ad6565b610e86565b6104556105433660046119a0565b610f00565b6104556105563660046118a0565b610f55565b6103ec610fe0565b6103b9610571366004611885565b610fe6565b610455610584366004611885565b610ffb565b6103ec6110a9565b61045561059f366004611ad6565b6110af565b6104556105b2366004611ad6565b611124565b6103b96105c5366004611885565b611188565b6103b96105d8366004611885565b61119d565b6105e56111b2565b60405161039d929190611d5e565b6103906111bc565b6103906111e0565b6103ec6111ef565b610390610619366004611885565b6111f5565b6103b961062c366004611885565b611210565b61045561063f3660046119a0565b611225565b610455610652366004611885565b61127a565b6104556106653660046119a0565b611325565b6103ec61137a565b610455610680366004611ad6565b611380565b610455610693366004611ad6565b6113e7565b6103ec61146c565b6103ec611472565b610390611478565b610455611487565b6103906114f9565b6104556106ce3660046119a0565b611508565b6104556106e1366004611885565b611592565b6104556106f4366004611ad6565b61162a565b6104556107073660046118d4565b611696565b61045561071a366004611919565b6116fd565b61045561072d366004611ad6565b6117bc565b6001546001600160a01b031681565b60176020526000908152604090205460ff1681565b6001600160a01b03808416600090815260196020908152604080832093861683529290529081205460ff16801561080257508160ff16836001600160a01b03166364e1fd556040518163ffffffff1660e01b815260040160206040518083038186803b1580156107c557600080fd5b505afa1580156107d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fd9190611aee565b60ff16145b949350505050565b6001600160a01b038082166000908152601660209081526040808320548151638e15f47360e01b8152915193941692638e15f47392600480840193919291829003018186803b15801561085c57600080fd5b505afa158015610870573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108949190611a23565b92915050565b60075481565b601960209081526000928352604080842090915290825290205460ff1681565b6001600160a01b03821660009081526012602052604081205460ff16801561095d57508160ff16836001600160a01b0316639d8ae4466040518163ffffffff1660e01b815260040160206040518083038186803b15801561092057600080fd5b505afa158015610934573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109589190611aee565b60ff16145b9392505050565b60126020526000908152604090205460ff1681565b600d5481565b6001546001600160a01b031633146109b25760405162461bcd60e51b81526004016109a990611cdf565b60405180910390fd5b80600e81905550714c505f57495448445241575f57494e444f5760701b600080516020611dcf833981519152826040516109ec9190611d55565b60405180910390a250565b6001546001600160a01b03163314610a215760405162461bcd60e51b81526004016109a990611cdf565b610a2a81611824565b80600a819055506e4d494e5f4c4f414e5f45515549545960881b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b03163314610a8b5760405162461bcd60e51b81526004016109a990611cdf565b806006819055506d11955391125391d7d411549253d160921b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b03163314610aeb5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b038216600081815260106020908152604091829020805460ff1916851515179055815163313ce56760e01b815291517f18d231995d1f7e4354b1786418aa8f34f99996ded9cc6b1d43c3815eb6f5ab79938693909263313ce56792600480840193829003018186803b158015610b6757600080fd5b505afa158015610b7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9f9190611a23565b846001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015610bd857600080fd5b505afa158015610bec573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c149190810190611a3b565b84604051610c259493929190611b53565b60405180910390a15050565b6001546001600160a01b03163314610c5b5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b038216600081815260116020908152604091829020805460ff1916851515179055815163313ce56760e01b815291517fb9456501e6a30eefbf8c4f9d199ef0c7ac7491abb068d594bbafbdec85447ccc938693909263313ce56792600480840193829003018186803b158015610b6757600080fd5b60055481565b60136020526000908152604090205460ff1681565b600f5460ff1681565b6001546001600160a01b03163314610d255760405162461bcd60e51b81526004016109a990611cdf565b80600481905550731111519055531517d1d49050d157d411549253d160621b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b03163314610d8b5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03821660009081526014602052604090819020805460ff1916831515179055517f936e0e50587b3c03d3e833e5cc880e9a62afb49d51808e96d00c4790ed03796290610c259084908490611b38565b600a5481565b60156020908152600092835260408084209091529082529020546001600160a01b031681565b6003546001600160a01b03163314610e375760405162461bcd60e51b81526004016109a990611d2f565b600f805460ff19168215151790556040517f6e0cb5fa7a57c38eb7939c1104f95fccb5b7a6a8c1a7cab76934305439b639f590610e75908390611ba4565b60405180910390a150565b60095481565b6001546001600160a01b03163314610eb05760405162461bcd60e51b81526004016109a990611cdf565b600854610ecc90610ec7908363ffffffff61184916565b611824565b806007819055506b494e564553544f525f46454560a01b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b03163314610f2a5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6001546001600160a01b03163314610f7f5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b038281166000908152601660205260409081902080546001600160a01b03191692841692909217909155517fc1d3048301c0d23629a2532c8defa6d68f8e1a0e4157918769e9fb1b2eeb888e90610c259084908490611b1e565b60045481565b60146020526000908152604090205460ff1681565b6001546001600160a01b031633146110255760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03811661104b5760405162461bcd60e51b81526004016109a990611cb9565b600280546001600160a01b0319166001600160a01b0383161790556040516d4d41504c455f545245415355525960901b907f806b6f19dfa971f58fc9140115f19907b73e8336024786c79c2ffc56f6678ec1906109ec908490611b0a565b60065481565b6001546001600160a01b031633146110d95760405162461bcd60e51b81526004016109a990611cdf565b6007546110f090610ec7908363ffffffff61184916565b806008819055506b54524541535552595f46454560a01b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b0316331461114e5760405162461bcd60e51b81526004016109a990611cdf565b80600c8190555071131417d0d3d3d31113d5d397d411549253d160721b600080516020611dcf833981519152826040516109ec9190611d55565b60106020526000908152604090205460ff1681565b60116020526000908152604090205460ff1681565b600c54600e549091565b7f000000000000000000000000000000000000000000000000000000000000000081565b6002546001600160a01b031681565b600b5481565b6016602052600090815260409020546001600160a01b031681565b60186020526000908152604090205460ff1681565b6001546001600160a01b0316331461124f5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b6001546001600160a01b03163314801561129c57506001600160a01b03811615155b6112b85760405162461bcd60e51b81526004016109a990611bd3565b600f5460ff16156112db5760405162461bcd60e51b81526004016109a990611c63565b600380546001600160a01b0319166001600160a01b0383169081179091556040517fad3f8fa73ce3985d027e4c3bbe1194701a23e635a746bcf73d8632f677ac388290600090a250565b6001546001600160a01b0316331461134f5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b60085481565b6001546001600160a01b031633146113aa5760405162461bcd60e51b81526004016109a990611cdf565b80600d81905550745354414b45525f554e5354414b455f57494e444f5760581b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b031633146114115760405162461bcd60e51b81526004016109a990611cdf565b6127108110156114335760405162461bcd60e51b81526004016109a990611c8c565b806005819055507014d5d05417d3d55517d491545552549151607a1b600080516020611dcf833981519152826040516109ec9190611d55565b600c5481565b600e5481565b6000546001600160a01b031681565b6000546001600160a01b031633146114b15760405162461bcd60e51b81526004016109a990611c00565b60018054336001600160a01b031991821681179092556000805490911681556040517fb7a4788848eba3319c766bdd6428c7d7a10e4cba4fd6ade9b79b7102b7099b369190a2565b6003546001600160a01b031681565b6001546001600160a01b031633146115325760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03821660008181526013602052604090819020805460ff1916841515179055517fd2e6a599a52383178be9bf2d0be60c96615b89f8d9cf6c680f06962aa73679fc90611586908490611ba4565b60405180910390a25050565b6001546001600160a01b031633146115bc5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b0381166115e25760405162461bcd60e51b81526004016109a990611cb9565b600080546001600160a01b0319166001600160a01b038316908117825560405190917f56bddfa0cee9697cebddf9acd7f23dc6583663b05e007b877056d05017994def91a250565b6001546001600160a01b031633146116545760405162461bcd60e51b81526004016109a990611cdf565b61165d81611824565b80600981905550704d41585f535741505f534c49505041474560781b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b031633146116c05760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03928316600090815260156020908152604080832094861683529390529190912080546001600160a01b03191691909216179055565b6001546001600160a01b031633146117275760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03831660009081526018602052604090205460ff168061176657506001600160a01b03831660009081526017602052604090205460ff165b6117825760405162461bcd60e51b81526004016109a990611d03565b6001600160a01b03928316600090815260196020908152604080832094909516825292909252919020805460ff1916911515919091179055565b6001546001600160a01b031633146117e65760405162461bcd60e51b81526004016109a990611cdf565b80600b819055507514d51052d15497d0d3d3d31113d5d397d411549253d160521b600080516020611dcf833981519152826040516109ec9190611d55565b6127108111156118465760405162461bcd60e51b81526004016109a990611baf565b50565b60008282018381101561095d5760405162461bcd60e51b81526004016109a990611c2c565b80356001600160a01b038116811461089457600080fd5b600060208284031215611896578081fd5b61095d838361186e565b600080604083850312156118b2578081fd5b6118bc848461186e565b91506118cb846020850161186e565b90509250929050565b6000806000606084860312156118e8578081fd5b6118f2858561186e565b9250611901856020860161186e565b9150611910856040860161186e565b90509250925092565b60008060006060848603121561192d578283fd5b833561193881611d9c565b9250602084013561194881611d9c565b9150604084013561195881611db1565b809150509250925092565b600080600060608486031215611977578283fd5b611981858561186e565b9250611990856020860161186e565b9150604084013561195881611dbf565b600080604083850312156119b2578182fd5b6119bc848461186e565b9150602083013580151581146119d0578182fd5b809150509250929050565b600080604083850312156119ed578182fd5b6119f7848461186e565b915060208301356119d081611dbf565b600060208284031215611a18578081fd5b813561095d81611db1565b600060208284031215611a34578081fd5b5051919050565b600060208284031215611a4c578081fd5b815167ffffffffffffffff80821115611a63578283fd5b81840185601f820112611a74578384fd5b8051925081831115611a84578384fd5b604051601f8401601f191681016020018381118282101715611aa4578586fd5b604052838152818401602001871015611abb578485fd5b611acc846020830160208501611d6c565b9695505050505050565b600060208284031215611ae7578081fd5b5035919050565b600060208284031215611aff578081fd5b815161095d81611dbf565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039290921682521515602082015260400190565b600060018060a01b0386168252846020830152608060408301528351806080840152611b868160a0850160208801611d6c565b921515606083015250601f91909101601f19160160a0019392505050565b901515815260200190565b6020808252600a908201526926a39d2821aa2fa7a7a160b11b604082015260600190565b60208082526013908201527226a39d2727aa2fa3a7ab2fa7a92fa0a226a4a760691b604082015260600190565b60208082526012908201527126a39d2727aa2fa822a72224a723afa3a7ab60711b604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252600f908201526e1351ce941493d513d7d4105554d151608a1b604082015260600190565b6020808252601390820152724d473a535741505f4f55545f544f4f5f4c4f5760681b604082015260600190565b6020808252600c908201526b26a39d2d22a927afa0a2222960a11b604082015260600190565b6020808252600a908201526926a39d2727aa2fa3a7ab60b11b604082015260600190565b60208082526012908201527126a39d24a72b20a624a22fa9aaa822a92fa360711b604082015260600190565b6020808252600c908201526b26a39d2727aa2fa0a226a4a760a11b604082015260600190565b90815260200190565b918252602082015260400190565b60005b83811015611d87578181015183820152602001611d6f565b83811115611d96576000848401525b50505050565b6001600160a01b038116811461184657600080fd5b801515811461184657600080fd5b60ff8116811461184657600080fdfed8780a041c72589f51af8b3fade9cc8a466d00ecef64d45657dd6cdebf1ecf47a26469706673582212200137a24e6d83f2efff919fad035876bd2ab6890372959af09d2aa958eedc1fb964736f6c634300060b0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x383 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7303DE25 GT PUSH2 0x1DE JUMPI DUP1 PUSH4 0xC9C67240 GT PUSH2 0x10F JUMPI DUP1 PUSH4 0xE58BB639 GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xF33EF09A GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xF33EF09A EQ PUSH2 0x6E6 JUMPI DUP1 PUSH4 0xF3897663 EQ PUSH2 0x6F9 JUMPI DUP1 PUSH4 0xF85EE6F8 EQ PUSH2 0x70C JUMPI DUP1 PUSH4 0xFD4A9121 EQ PUSH2 0x71F JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0xE58BB639 EQ PUSH2 0x6B0 JUMPI DUP1 PUSH4 0xEC9A9368 EQ PUSH2 0x6B8 JUMPI DUP1 PUSH4 0xEFDB16FC EQ PUSH2 0x6C0 JUMPI DUP1 PUSH4 0xF235757F EQ PUSH2 0x6D3 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0xDBC6C552 GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0xDBC6C552 EQ PUSH2 0x685 JUMPI DUP1 PUSH4 0xDD02E0EC EQ PUSH2 0x698 JUMPI DUP1 PUSH4 0xDF3D02BD EQ PUSH2 0x6A0 JUMPI DUP1 PUSH4 0xE3056A34 EQ PUSH2 0x6A8 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0xC9C67240 EQ PUSH2 0x657 JUMPI DUP1 PUSH4 0xCC32D176 EQ PUSH2 0x66A JUMPI DUP1 PUSH4 0xD1CDF301 EQ PUSH2 0x672 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0xA0530946 GT PUSH2 0x17C JUMPI DUP1 PUSH4 0xAED019B9 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0xAED019B9 EQ PUSH2 0x60B JUMPI DUP1 PUSH4 0xB53AFDA7 EQ PUSH2 0x61E JUMPI DUP1 PUSH4 0xBE44ED6B EQ PUSH2 0x631 JUMPI DUP1 PUSH4 0xC52BC31D EQ PUSH2 0x644 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0xA0530946 EQ PUSH2 0x5F3 JUMPI DUP1 PUSH4 0xA5A27605 EQ PUSH2 0x5FB JUMPI DUP1 PUSH4 0xA965D6B5 EQ PUSH2 0x603 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0x8608A6E1 GT PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x8608A6E1 EQ PUSH2 0x5A4 JUMPI DUP1 PUSH4 0x8695118A EQ PUSH2 0x5B7 JUMPI DUP1 PUSH4 0x8C14834B EQ PUSH2 0x5CA JUMPI DUP1 PUSH4 0x9F51290B EQ PUSH2 0x5DD JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0x7303DE25 EQ PUSH2 0x576 JUMPI DUP1 PUSH4 0x74D7C62B EQ PUSH2 0x589 JUMPI DUP1 PUSH4 0x77E741C7 EQ PUSH2 0x591 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0x3106374C GT PUSH2 0x2B8 JUMPI DUP1 PUSH4 0x4E989118 GT PUSH2 0x256 JUMPI DUP1 PUSH4 0x6597B899 GT PUSH2 0x230 JUMPI DUP1 PUSH4 0x6597B899 EQ PUSH2 0x535 JUMPI DUP1 PUSH4 0x67A74DDC EQ PUSH2 0x548 JUMPI DUP1 PUSH4 0x705D5F24 EQ PUSH2 0x55B JUMPI DUP1 PUSH4 0x72A22D71 EQ PUSH2 0x563 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0x4E989118 EQ PUSH2 0x507 JUMPI DUP1 PUSH4 0x55323195 EQ PUSH2 0x51A JUMPI DUP1 PUSH4 0x5E045467 EQ PUSH2 0x522 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0x44C14F71 GT PUSH2 0x292 JUMPI DUP1 PUSH4 0x44C14F71 EQ PUSH2 0x4C6 JUMPI DUP1 PUSH4 0x490DAE64 EQ PUSH2 0x4D9 JUMPI DUP1 PUSH4 0x4A2697C4 EQ PUSH2 0x4EC JUMPI DUP1 PUSH4 0x4D866592 EQ PUSH2 0x4F4 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0x3106374C EQ PUSH2 0x4A3 JUMPI DUP1 PUSH4 0x372E3546 EQ PUSH2 0x4AB JUMPI DUP1 PUSH4 0x425FAD58 EQ PUSH2 0x4BE JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0x1BEB84E7 GT PUSH2 0x325 JUMPI DUP1 PUSH4 0x298B795D GT PUSH2 0x2FF JUMPI DUP1 PUSH4 0x298B795D EQ PUSH2 0x457 JUMPI DUP1 PUSH4 0x2A5AA292 EQ PUSH2 0x46A JUMPI DUP1 PUSH4 0x2DAA0D89 EQ PUSH2 0x47D JUMPI DUP1 PUSH4 0x2FA6C88F EQ PUSH2 0x490 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0x1BEB84E7 EQ PUSH2 0x427 JUMPI DUP1 PUSH4 0x2018B870 EQ PUSH2 0x43A JUMPI DUP1 PUSH4 0x26718606 EQ PUSH2 0x442 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0x16345F18 GT PUSH2 0x361 JUMPI DUP1 PUSH4 0x16345F18 EQ PUSH2 0x3D9 JUMPI DUP1 PUSH4 0x16A12D7A EQ PUSH2 0x3F9 JUMPI DUP1 PUSH4 0x1B1804AA EQ PUSH2 0x401 JUMPI DUP1 PUSH4 0x1B5833F7 EQ PUSH2 0x414 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0xC340A24 EQ PUSH2 0x388 JUMPI DUP1 PUSH4 0x107C0240 EQ PUSH2 0x3A6 JUMPI DUP1 PUSH4 0x13D459FB EQ PUSH2 0x3C6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x390 PUSH2 0x732 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x39D SWAP2 SWAP1 PUSH2 0x1B0A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3B9 PUSH2 0x3B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0x741 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x39D SWAP2 SWAP1 PUSH2 0x1BA4 JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x3D4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1963 JUMP JUMPDEST PUSH2 0x756 JUMP JUMPDEST PUSH2 0x3EC PUSH2 0x3E7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0x80A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x39D SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH2 0x3EC PUSH2 0x89A JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x40F CALLDATASIZE PUSH1 0x4 PUSH2 0x18A0 JUMP JUMPDEST PUSH2 0x8A0 JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x422 CALLDATASIZE PUSH1 0x4 PUSH2 0x19DB JUMP JUMPDEST PUSH2 0x8C0 JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x435 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0x964 JUMP JUMPDEST PUSH2 0x3EC PUSH2 0x979 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x450 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0x97F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x455 PUSH2 0x465 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0x9F7 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x478 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0xA61 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x48B CALLDATASIZE PUSH1 0x4 PUSH2 0x19A0 JUMP JUMPDEST PUSH2 0xAC1 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x49E CALLDATASIZE PUSH1 0x4 PUSH2 0x19A0 JUMP JUMPDEST PUSH2 0xC31 JUMP JUMPDEST PUSH2 0x3EC PUSH2 0xCD7 JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x4B9 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0xCDD JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0xCF2 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x4D4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0xCFB JUMP JUMPDEST PUSH2 0x455 PUSH2 0x4E7 CALLDATASIZE PUSH1 0x4 PUSH2 0x19A0 JUMP JUMPDEST PUSH2 0xD61 JUMP JUMPDEST PUSH2 0x3EC PUSH2 0xDE1 JUMP JUMPDEST PUSH2 0x390 PUSH2 0x502 CALLDATASIZE PUSH1 0x4 PUSH2 0x18A0 JUMP JUMPDEST PUSH2 0xDE7 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x515 CALLDATASIZE PUSH1 0x4 PUSH2 0x1A07 JUMP JUMPDEST PUSH2 0xE0D JUMP JUMPDEST PUSH2 0x3EC PUSH2 0xE80 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x530 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0xE86 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x543 CALLDATASIZE PUSH1 0x4 PUSH2 0x19A0 JUMP JUMPDEST PUSH2 0xF00 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x556 CALLDATASIZE PUSH1 0x4 PUSH2 0x18A0 JUMP JUMPDEST PUSH2 0xF55 JUMP JUMPDEST PUSH2 0x3EC PUSH2 0xFE0 JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x571 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0xFE6 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x584 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0xFFB JUMP JUMPDEST PUSH2 0x3EC PUSH2 0x10A9 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x59F CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0x10AF JUMP JUMPDEST PUSH2 0x455 PUSH2 0x5B2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0x1124 JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x5C5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0x1188 JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x5D8 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0x119D JUMP JUMPDEST PUSH2 0x5E5 PUSH2 0x11B2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x39D SWAP3 SWAP2 SWAP1 PUSH2 0x1D5E JUMP JUMPDEST PUSH2 0x390 PUSH2 0x11BC JUMP JUMPDEST PUSH2 0x390 PUSH2 0x11E0 JUMP JUMPDEST PUSH2 0x3EC PUSH2 0x11EF JUMP JUMPDEST PUSH2 0x390 PUSH2 0x619 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0x11F5 JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x62C CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0x1210 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x63F CALLDATASIZE PUSH1 0x4 PUSH2 0x19A0 JUMP JUMPDEST PUSH2 0x1225 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x652 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0x127A JUMP JUMPDEST PUSH2 0x455 PUSH2 0x665 CALLDATASIZE PUSH1 0x4 PUSH2 0x19A0 JUMP JUMPDEST PUSH2 0x1325 JUMP JUMPDEST PUSH2 0x3EC PUSH2 0x137A JUMP JUMPDEST PUSH2 0x455 PUSH2 0x680 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0x1380 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x693 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0x13E7 JUMP JUMPDEST PUSH2 0x3EC PUSH2 0x146C JUMP JUMPDEST PUSH2 0x3EC PUSH2 0x1472 JUMP JUMPDEST PUSH2 0x390 PUSH2 0x1478 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x1487 JUMP JUMPDEST PUSH2 0x390 PUSH2 0x14F9 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x6CE CALLDATASIZE PUSH1 0x4 PUSH2 0x19A0 JUMP JUMPDEST PUSH2 0x1508 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x6E1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0x1592 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x6F4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0x162A JUMP JUMPDEST PUSH2 0x455 PUSH2 0x707 CALLDATASIZE PUSH1 0x4 PUSH2 0x18D4 JUMP JUMPDEST PUSH2 0x1696 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x71A CALLDATASIZE PUSH1 0x4 PUSH2 0x1919 JUMP JUMPDEST PUSH2 0x16FD JUMP JUMPDEST PUSH2 0x455 PUSH2 0x72D CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0x17BC JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE SWAP1 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 ISZERO PUSH2 0x802 JUMPI POP DUP2 PUSH1 0xFF AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x64E1FD55 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7D9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7FD SWAP2 SWAP1 PUSH2 0x1AEE JUMP JUMPDEST PUSH1 0xFF AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD DUP2 MLOAD PUSH4 0x8E15F473 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 MLOAD SWAP4 SWAP5 AND SWAP3 PUSH4 0x8E15F473 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x85C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x870 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x894 SWAP2 SWAP1 PUSH2 0x1A23 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 ISZERO PUSH2 0x95D JUMPI POP DUP2 PUSH1 0xFF AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x9D8AE446 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x920 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x934 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x958 SWAP2 SWAP1 PUSH2 0x1AEE JUMP JUMPDEST PUSH1 0xFF AND EQ JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x9B2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0xE DUP2 SWAP1 SSTORE POP PUSH18 0x4C505F57495448445241575F57494E444F57 PUSH1 0x70 SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xA21 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH2 0xA2A DUP2 PUSH2 0x1824 JUMP JUMPDEST DUP1 PUSH1 0xA DUP2 SWAP1 SSTORE POP PUSH15 0x4D494E5F4C4F414E5F455155495459 PUSH1 0x88 SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xA8B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST DUP1 PUSH1 0x6 DUP2 SWAP1 SSTORE POP PUSH14 0x11955391125391D7D411549253D1 PUSH1 0x92 SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xAEB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x10 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP6 ISZERO ISZERO OR SWAP1 SSTORE DUP2 MLOAD PUSH4 0x313CE567 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 MLOAD PUSH32 0x18D231995D1F7E4354B1786418AA8F34F99996DED9CC6B1D43C3815EB6F5AB79 SWAP4 DUP7 SWAP4 SWAP1 SWAP3 PUSH4 0x313CE567 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB7B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB9F SWAP2 SWAP1 PUSH2 0x1A23 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x95D89B41 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBEC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xC14 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1A3B JUMP JUMPDEST DUP5 PUSH1 0x40 MLOAD PUSH2 0xC25 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1B53 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xC5B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP6 ISZERO ISZERO OR SWAP1 SSTORE DUP2 MLOAD PUSH4 0x313CE567 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 MLOAD PUSH32 0xB9456501E6A30EEFBF8C4F9D199EF0C7AC7491ABB068D594BBAFBDEC85447CCC SWAP4 DUP7 SWAP4 SWAP1 SWAP3 PUSH4 0x313CE567 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xF SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xD25 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST DUP1 PUSH1 0x4 DUP2 SWAP1 SSTORE POP PUSH20 0x1111519055531517D1D49050D157D411549253D1 PUSH1 0x62 SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xD8B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP4 ISZERO ISZERO OR SWAP1 SSTORE MLOAD PUSH32 0x936E0E50587B3C03D3E833E5CC880E9A62AFB49D51808E96D00C4790ED037962 SWAP1 PUSH2 0xC25 SWAP1 DUP5 SWAP1 DUP5 SWAP1 PUSH2 0x1B38 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xE37 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1D2F JUMP JUMPDEST PUSH1 0xF DUP1 SLOAD PUSH1 0xFF NOT AND DUP3 ISZERO ISZERO OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x6E0CB5FA7A57C38EB7939C1104F95FCCB5B7A6A8C1A7CAB76934305439B639F5 SWAP1 PUSH2 0xE75 SWAP1 DUP4 SWAP1 PUSH2 0x1BA4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xEB0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH2 0xECC SWAP1 PUSH2 0xEC7 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1849 AND JUMP JUMPDEST PUSH2 0x1824 JUMP JUMPDEST DUP1 PUSH1 0x7 DUP2 SWAP1 SSTORE POP PUSH12 0x494E564553544F525F464545 PUSH1 0xA0 SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xF2A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xF7F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP3 DUP5 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD PUSH32 0xC1D3048301C0D23629A2532C8DEFA6D68F8E1A0E4157918769E9FB1B2EEB888E SWAP1 PUSH2 0xC25 SWAP1 DUP5 SWAP1 DUP5 SWAP1 PUSH2 0x1B1E JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x14 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1025 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x104B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CB9 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH14 0x4D41504C455F5452454153555259 PUSH1 0x90 SHL SWAP1 PUSH32 0x806B6F19DFA971F58FC9140115F19907B73E8336024786C79C2FFC56F6678EC1 SWAP1 PUSH2 0x9EC SWAP1 DUP5 SWAP1 PUSH2 0x1B0A JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x10D9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH2 0x10F0 SWAP1 PUSH2 0xEC7 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1849 AND JUMP JUMPDEST DUP1 PUSH1 0x8 DUP2 SWAP1 SSTORE POP PUSH12 0x54524541535552595F464545 PUSH1 0xA0 SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x114E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST DUP1 PUSH1 0xC DUP2 SWAP1 SSTORE POP PUSH18 0x131417D0D3D3D31113D5D397D411549253D1 PUSH1 0x72 SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0xE SLOAD SWAP1 SWAP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x18 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x124F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 ISZERO PUSH2 0x129C JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO ISZERO JUMPDEST PUSH2 0x12B8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1BD3 JUMP JUMPDEST PUSH1 0xF SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x12DB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1C63 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0xAD3F8FA73CE3985D027E4C3BBE1194701A23E635A746BCF73D8632F677AC3882 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x134F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x18 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x13AA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST DUP1 PUSH1 0xD DUP2 SWAP1 SSTORE POP PUSH21 0x5354414B45525F554E5354414B455F57494E444F57 PUSH1 0x58 SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1411 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH2 0x2710 DUP2 LT ISZERO PUSH2 0x1433 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1C8C JUMP JUMPDEST DUP1 PUSH1 0x5 DUP2 SWAP1 SSTORE POP PUSH17 0x14D5D05417D3D55517D491545552549151 PUSH1 0x7A SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH1 0xC SLOAD DUP2 JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x14B1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1C00 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND DUP2 OR SWAP1 SWAP3 SSTORE PUSH1 0x0 DUP1 SLOAD SWAP1 SWAP2 AND DUP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0xB7A4788848EBA3319C766BDD6428C7D7A10E4CBA4FD6ADE9B79B7102B7099B36 SWAP2 SWAP1 LOG2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1532 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP5 ISZERO ISZERO OR SWAP1 SSTORE MLOAD PUSH32 0xD2E6A599A52383178BE9BF2D0BE60C96615B89F8D9CF6C680F06962AA73679FC SWAP1 PUSH2 0x1586 SWAP1 DUP5 SWAP1 PUSH2 0x1BA4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x15BC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x15E2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CB9 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 PUSH32 0x56BDDFA0CEE9697CEBDDF9ACD7F23DC6583663B05E007B877056D05017994DEF SWAP2 LOG2 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1654 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH2 0x165D DUP2 PUSH2 0x1824 JUMP JUMPDEST DUP1 PUSH1 0x9 DUP2 SWAP1 SSTORE POP PUSH17 0x4D41585F535741505F534C495050414745 PUSH1 0x78 SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x16C0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x15 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP7 AND DUP4 MSTORE SWAP4 SWAP1 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1727 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x18 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x1766 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x1782 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1D03 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP6 AND DUP3 MSTORE SWAP3 SWAP1 SWAP3 MSTORE SWAP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x17E6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST DUP1 PUSH1 0xB DUP2 SWAP1 SSTORE POP PUSH22 0x14D51052D15497D0D3D3D31113D5D397D411549253D1 PUSH1 0x52 SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH2 0x2710 DUP2 GT ISZERO PUSH2 0x1846 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1BAF JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x95D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1C2C JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x894 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1896 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x95D DUP4 DUP4 PUSH2 0x186E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x18B2 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x18BC DUP5 DUP5 PUSH2 0x186E JUMP JUMPDEST SWAP2 POP PUSH2 0x18CB DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x186E JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x18E8 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x18F2 DUP6 DUP6 PUSH2 0x186E JUMP JUMPDEST SWAP3 POP PUSH2 0x1901 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x186E JUMP JUMPDEST SWAP2 POP PUSH2 0x1910 DUP6 PUSH1 0x40 DUP7 ADD PUSH2 0x186E JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x192D JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1938 DUP2 PUSH2 0x1D9C JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x1948 DUP2 PUSH2 0x1D9C JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x1958 DUP2 PUSH2 0x1DB1 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1977 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1981 DUP6 DUP6 PUSH2 0x186E JUMP JUMPDEST SWAP3 POP PUSH2 0x1990 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x186E JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x1958 DUP2 PUSH2 0x1DBF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x19B2 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x19BC DUP5 DUP5 PUSH2 0x186E JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x19D0 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x19ED JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x19F7 DUP5 DUP5 PUSH2 0x186E JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x19D0 DUP2 PUSH2 0x1DBF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A18 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x95D DUP2 PUSH2 0x1DB1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A34 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A4C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1A63 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP5 ADD DUP6 PUSH1 0x1F DUP3 ADD SLT PUSH2 0x1A74 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP1 MLOAD SWAP3 POP DUP2 DUP4 GT ISZERO PUSH2 0x1A84 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP5 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x20 ADD DUP4 DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1AA4 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE DUP2 DUP5 ADD PUSH1 0x20 ADD DUP8 LT ISZERO PUSH2 0x1ABB JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x1ACC DUP5 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP6 ADD PUSH2 0x1D6C JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1AE7 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1AFF JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x95D DUP2 PUSH2 0x1DBF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE ISZERO ISZERO PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP7 AND DUP3 MSTORE DUP5 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x40 DUP4 ADD MSTORE DUP4 MLOAD DUP1 PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x1B86 DUP2 PUSH1 0xA0 DUP6 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x1D6C JUMP JUMPDEST SWAP3 ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD PUSH1 0xA0 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xA SWAP1 DUP3 ADD MSTORE PUSH10 0x26A39D2821AA2FA7A7A1 PUSH1 0xB1 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH19 0x26A39D2727AA2FA3A7AB2FA7A92FA0A226A4A7 PUSH1 0x69 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x12 SWAP1 DUP3 ADD MSTORE PUSH18 0x26A39D2727AA2FA822A72224A723AFA3A7AB PUSH1 0x71 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xF SWAP1 DUP3 ADD MSTORE PUSH15 0x1351CE941493D513D7D4105554D151 PUSH1 0x8A SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH19 0x4D473A535741505F4F55545F544F4F5F4C4F57 PUSH1 0x68 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xC SWAP1 DUP3 ADD MSTORE PUSH12 0x26A39D2D22A927AFA0A22229 PUSH1 0xA1 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xA SWAP1 DUP3 ADD MSTORE PUSH10 0x26A39D2727AA2FA3A7AB PUSH1 0xB1 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x12 SWAP1 DUP3 ADD MSTORE PUSH18 0x26A39D24A72B20A624A22FA9AAA822A92FA3 PUSH1 0x71 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xC SWAP1 DUP3 ADD MSTORE PUSH12 0x26A39D2727AA2FA0A226A4A7 PUSH1 0xA1 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1D87 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1D6F JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1D96 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1846 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1846 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x1846 JUMPI PUSH1 0x0 DUP1 REVERT INVALID 0xD8 PUSH25 0xA041C72589F51AF8B3FADE9CC8A466D00ECEF64D45657DD6C 0xDE 0xBF 0x1E 0xCF SELFBALANCE LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADD CALLDATACOPY LOG2 0x4E PUSH14 0x83F2EFFF919FAD035876BD2AB689 SUB PUSH19 0x959AF09D2AA958EEDC1FB964736F6C63430006 SIGNEXTEND STOP CALLER ",
"sourceMap": "31087:9829:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31255:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32394:79;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;40039:249::-;;;;;;:::i;:::-;;:::i;39878:155::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;31514:35::-;;;:::i;32564:78::-;;;;;;:::i;:::-;;:::i;40294:167::-;;;;;;:::i;:::-;;:::i;32055:51::-;;;;;;:::i;:::-;;:::i;31780:43::-;;;:::i;34622:215::-;;;;;;:::i;:::-;;:::i;:::-;;38307:238;;;;;;:::i;:::-;;:::i;38551:190::-;;;;;;:::i;:::-;;:::i;37020:246::-;;;;;;:::i;:::-;;:::i;36765:249::-;;;;;;:::i;:::-;;:::i;31426:39::-;;;:::i;32112:60::-;;;;;;:::i;:::-;;:::i;31876:35::-;;;:::i;38080:221::-;;;;;;:::i;:::-;;:::i;35404:202::-;;;;;;:::i;:::-;;:::i;31641:37::-;;;:::i;32245:82::-;;;;;;:::i;:::-;;:::i;35612:191::-;;;;;;:::i;:::-;;:::i;31596:39::-;;;:::i;37391:208::-;;;;;;:::i;:::-;;:::i;35809:147::-;;;;;;:::i;:::-;;:::i;38981:165::-;;;;;;:::i;:::-;;:::i;31378:42::-;;;:::i;32178:60::-;;;;;;:::i;:::-;;:::i;37819:255::-;;;;;;:::i;:::-;;:::i;31471:37::-;;;:::i;37605:208::-;;;;;;:::i;:::-;;:::i;34186:209::-;;;;;;:::i;:::-;;:::i;31918:62::-;;;;;;:::i;:::-;;:::i;31986:63::-;;;;;;:::i;:::-;;:::i;40467:141::-;;;:::i;:::-;;;;;;;;:::i;31166:37::-;;;:::i;31293:::-;;;:::i;31684:44::-;;;:::i;32334:53::-;;;;;;:::i;:::-;;:::i;32479:79::-;;;;;;:::i;:::-;;:::i;37272:113::-;;;;;;:::i;:::-;;:::i;35093:305::-;;;;;;:::i;:::-;;:::i;35962:147::-;;;;;;:::i;:::-;;:::i;31555:35::-;;;:::i;34401:215::-;;;;;;:::i;:::-;;:::i;38747:228::-;;;;;;:::i;:::-;;:::i;31734:40::-;;;:::i;31829:::-;;;:::i;31210:39::-;;;:::i;39538:240::-;;;:::i;31336:35::-;;;:::i;36565:194::-;;;;;;:::i;:::-;;:::i;39282:250::-;;;;;;:::i;:::-;;:::i;34843:244::-;;;;;;:::i;:::-;;:::i;36409:150::-;;;;;;:::i;:::-;;:::i;36115:288::-;;;;;;:::i;:::-;;:::i;33959:221::-;;;;;;:::i;:::-;;:::i;31255:32::-;;;-1:-1:-1;;;;;31255:32:0;;:::o;32394:79::-;;;;;;;;;;;;;;;:::o;40039:249::-;-1:-1:-1;;;;;40182:31:0;;;40159:4;40182:31;;;:17;:31;;;;;;;;:43;;;;;;;;;;;;;;:99;;;;;40270:11;40229:52;;40241:10;-1:-1:-1;;;;;40229:35:0;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:52;;;40182:99;40175:106;40039:249;-1:-1:-1;;;;40039:249:0:o;39878:155::-;-1:-1:-1;;;;;39991:16:0;;;39949:7;39991:16;;;:9;:16;;;;;;;;;39983:42;;-1:-1:-1;;;39983:42:0;;;;39949:7;;39991:16;;39983:40;;:42;;;;;39991:16;;39983:42;;;;;;39991:16;39983:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;39968:58;39878:155;-1:-1:-1;;39878:155:0:o;31514:35::-;;;;:::o;32564:78::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;40294:167::-;-1:-1:-1;;;;;40400:16:0;;40377:4;40400:16;;;:10;:16;;;;;;;;:54;;;;;40446:8;40420:34;;40426:4;-1:-1:-1;;;;;40420:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:34;;;40400:54;40393:61;40294:167;-1:-1:-1;;;40294:167:0:o;32055:51::-;;;;;;;;;;;;;;;:::o;31780:43::-;;;;:::o;34622:215::-;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;;;;;;;;;34738:19:::1;34719:16;:38;;;;-1:-1:-1::0;;;;;;;;;;;;;;34810:19:0::1;34772:58;;;;;;:::i;:::-;;;;;;;;34622:215:::0;:::o;38307:238::-;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;38396:37:::1;38418:14;38396:21;:37::i;:::-;38459:14;38443:13;:30;;;;-1:-1:-1::0;;;;;;;;;;;;;;38523:14:0::1;38488:50;;;;;;:::i;38551:190::-:0;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;38656:14:::1;38640:13;:30;;;;-1:-1:-1::0;;;;;;;;;;;;;;38719:14:0::1;38685:49;;;;;;:::i;37020:246::-:0;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37113:28:0;::::1;;::::0;;;:21:::1;:28;::::0;;;;;;;;:36;;-1:-1:-1;;37113:36:0::1;::::0;::::1;;;::::0;;37189:31;;-1:-1:-1;;;37189:31:0;;;;37164:95:::1;::::0;37113:28;;;;37189:29:::1;::::0;:31:::1;::::0;;::::1;::::0;;;;;;37113:28;37189:31;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37236:5;-1:-1:-1::0;;;;;37222:27:0::1;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;37222:29:0::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;37253:5;37164:95;;;;;;;;;:::i;:::-;;;;;;;;37020:246:::0;;:::o;36765:249::-;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36859:29:0;::::1;;::::0;;;:22:::1;:29;::::0;;;;;;;;:37;;-1:-1:-1;;36859:37:0::1;::::0;::::1;;;::::0;;36937:31;;-1:-1:-1;;;36937:31:0;;;;36911:96:::1;::::0;36859:29;;;;36937::::1;::::0;:31:::1;::::0;;::::1;::::0;;;;;;36859:29;36937:31;::::1;;::::0;::::1;;;;::::0;::::1;31426:39:::0;;;;:::o;32112:60::-;;;;;;;;;;;;;;;:::o;31876:35::-;;;;;;:::o;38080:221::-;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;38200:19:::1;38179:18;:40;;;;-1:-1:-1::0;;;;;;;;;;;;;;38274:19:0::1;38234:60;;;;;;:::i;35404:202::-:0;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35507:33:0;::::1;;::::0;;;:19:::1;:33;::::0;;;;;;:41;;-1:-1:-1;;35507:41:0::1;::::0;::::1;;;::::0;;35563:36;::::1;::::0;::::1;::::0;35507:33;;:41;;35563:36:::1;:::i;31641:37::-:0;;;;:::o;32245:82::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;32245:82:0;;:::o;35612:191::-;35700:11;;-1:-1:-1;;;;;35700:11:0;35686:10;:25;35678:50;;;;-1:-1:-1;;;35678:50:0;;;;;;;:::i;:::-;35738:14;:22;;-1:-1:-1;;35738:22:0;;;;;;;35775:21;;;;;;35738:22;;35775:21;:::i;:::-;;;;;;;;35612:191;:::o;31596:39::-;;;;:::o;37391:208::-;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;37490:11:::1;::::0;37468:44:::1;::::0;37490:21:::1;::::0;37506:4;37490:21:::1;:15;:21;:::i;:::-;37468;:44::i;:::-;37536:4;37522:11;:18;;;;-1:-1:-1::0;;;;;;;;;;;;;;37587:4:0::1;37555:37;;;;;;:::i;35809:147::-:0;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35910:31:0;;;::::1;;::::0;;;:18:::1;:31;::::0;;;;:39;;-1:-1:-1;;35910:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;35809:147::o;38981:165::-;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;39075:16:0;;::::1;;::::0;;;:9:::1;:16;::::0;;;;;;:25;;-1:-1:-1;;;;;;39075:25:0::1;::::0;;::::1;::::0;;;::::1;::::0;;;39115:24;::::1;::::0;::::1;::::0;39075:16;;:25;;39115:24:::1;:::i;31378:42::-:0;;;;:::o;32178:60::-;;;;;;;;;;;;;;;:::o;37819:255::-;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37916:28:0;::::1;37908:53;;;;-1:-1:-1::0;;;37908:53:0::1;;;;;;;:::i;:::-;37971:13;:30:::0;;-1:-1:-1;;;;;;37971:30:0::1;-1:-1:-1::0;;;;;37971:30:0;::::1;;::::0;;38016:51:::1;::::0;-1:-1:-1;;;38016:51:0;::::1;::::0;::::1;::::0;37971:30;;38016:51:::1;:::i;31471:37::-:0;;;;:::o;37605:208::-;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;37704:11:::1;::::0;37682:44:::1;::::0;37704:21:::1;::::0;37720:4;37704:21:::1;:15;:21;:::i;37682:44::-;37750:4;37736:11;:18;;;;-1:-1:-1::0;;;;;;;;;;;;;;37801:4:0::1;37769:37;;;;;;:::i;34186:209::-:0;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;34300:17:::1;34281:16;:36;;;;-1:-1:-1::0;;;;;;;;;;;;;;34370:17:0::1;34332:56;;;;;;:::i;31918:62::-:0;;;;;;;;;;;;;;;:::o;31986:63::-;;;;;;;;;;;;;;;:::o;40467:141::-;40566:16;;40584;;40467:141;;:::o;31166:37::-;;;:::o;31293:::-;;;-1:-1:-1;;;;;31293:37:0;;:::o;31684:44::-;;;;:::o;32334:53::-;;;;;;;;;;;;-1:-1:-1;;;;;32334:53:0;;:::o;32479:79::-;;;;;;;;;;;;;;;:::o;37272:113::-;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37354:16:0;;;::::1;;::::0;;;:10:::1;:16;::::0;;;;:24;;-1:-1:-1;;37354:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;37272:113::o;35093:305::-;35191:8;;-1:-1:-1;;;;;35191:8:0;35177:10;:22;:54;;;;-1:-1:-1;;;;;;35203:28:0;;;;35177:54;35169:86;;;;-1:-1:-1;;;35169:86:0;;;;;;;:::i;:::-;35274:14;;;;35273:15;35265:43;;;;-1:-1:-1;;;35265:43:0;;;;;;;:::i;:::-;35318:11;:28;;-1:-1:-1;;;;;;35318:28:0;-1:-1:-1;;;;;35318:28:0;;;;;;;;35361:30;;;;-1:-1:-1;;35361:30:0;35093:305;:::o;35962:147::-;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36063:31:0;;;::::1;;::::0;;;:18:::1;:31;::::0;;;;:39;;-1:-1:-1;;36063:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;35962:147::o;31555:35::-;;;;:::o;34401:215::-;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;34520:16:::1;34498:19;:38;;;;-1:-1:-1::0;;;;;;;;;;;;;;34592:16:0::1;34551:58;;;;;;:::i;38747:228::-:0;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;38850:6:::1;38835:3;:22;;38827:54;;;;-1:-1:-1::0;;;38827:54:0::1;;;;;;;:::i;:::-;38909:3;38891:15;:21;;;;-1:-1:-1::0;;;;;;;;;;;;;;38964:3:0::1;38927:41;;;;;;:::i;31734:40::-:0;;;;:::o;31829:::-;;;;:::o;31210:39::-;;;-1:-1:-1;;;;;31210:39:0;;:::o;39538:240::-;39614:15;;-1:-1:-1;;;;;39614:15:0;39600:10;:29;39592:60;;;;-1:-1:-1;;;39592:60:0;;;;;;;:::i;:::-;39662:8;:28;;39680:10;-1:-1:-1;;;;;;39662:28:0;;;;;;;;-1:-1:-1;39700:28:0;;;;;;;39743;;;;-1:-1:-1;39743:28:0;39538:240::o;31336:35::-;;;-1:-1:-1;;;;;31336:35:0;;:::o;36565:194::-;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36668:29:0;::::1;;::::0;;;:19:::1;:29;::::0;;;;;;:37;;-1:-1:-1;;36668:37:0::1;::::0;::::1;;;::::0;;36720:32;::::1;::::0;::::1;::::0;36668:37;;36720:32:::1;:::i;:::-;;;;;;;;36565:194:::0;;:::o;39282:250::-;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;39383:30:0;::::1;39375:55;;;;-1:-1:-1::0;;;39375:55:0::1;;;;;;;:::i;:::-;39440:15;:34:::0;;-1:-1:-1;;;;;;39440:34:0::1;-1:-1:-1::0;;;;;39440:34:0;::::1;::::0;;::::1;::::0;;39489:36:::1;::::0;39440:34;;39489:36:::1;::::0;::::1;39282:250:::0;:::o;34843:244::-;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;34934:37:::1;34956:14;34934:21;:37::i;:::-;34999:14;34981:15;:32;;;;-1:-1:-1::0;;;;;;;;;;;;;;35065:14:0::1;35028:52;;;;;;:::i;36409:150::-:0;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36518:24:0;;::::1;;::::0;;;:18:::1;:24;::::0;;;;;;;:28;;::::1;::::0;;;;;;;;;:34;;-1:-1:-1;;;;;;36518:34:0::1;::::0;;;::::1;;::::0;;36409:150::o;36115:288::-;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36244:32:0;::::1;;::::0;;;:18:::1;:32;::::0;;;;;::::1;;::::0;:68:::1;;-1:-1:-1::0;;;;;;36280:32:0;::::1;;::::0;;;:18:::1;:32;::::0;;;;;::::1;;36244:68;36236:99;;;;-1:-1:-1::0;;;36236:99:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;36345:31:0;;::::1;;::::0;;;:17:::1;:31;::::0;;;;;;;:43;;;::::1;::::0;;;;;;;;;:51;;-1:-1:-1;;36345:51:0::1;::::0;::::1;;::::0;;;::::1;::::0;;36115:288::o;33959:221::-;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;34081:17:::1;34058:20;:40;;;;-1:-1:-1::0;;;;;;;;;;;;;;34155:17:0::1;34113:60;;;;;;:::i;40779:134::-:0;40884:6;40862:10;:29;;40854:52;;;;-1:-1:-1;;;40854:52:0;;;;;;;:::i;:::-;40779:134;:::o;26035:176::-;26093:7;26124:5;;;26147:6;;;;26139:46;;;;-1:-1:-1;;;26139:46:0;;;;;;;:::i;5:130:-1:-;72:20;;-1:-1;;;;;17647:54;;18321:35;;18311:2;;18370:1;;18360:12;1413:241;;1517:2;1505:9;1496:7;1492:23;1488:32;1485:2;;;-1:-1;;1523:12;1485:2;1585:53;1630:7;1606:22;1585:53;:::i;1661:366::-;;;1782:2;1770:9;1761:7;1757:23;1753:32;1750:2;;;-1:-1;;1788:12;1750:2;1850:53;1895:7;1871:22;1850:53;:::i;:::-;1840:63;;1958:53;2003:7;1940:2;1983:9;1979:22;1958:53;:::i;:::-;1948:63;;1744:283;;;;;:::o;2034:491::-;;;;2172:2;2160:9;2151:7;2147:23;2143:32;2140:2;;;-1:-1;;2178:12;2140:2;2240:53;2285:7;2261:22;2240:53;:::i;:::-;2230:63;;2348:53;2393:7;2330:2;2373:9;2369:22;2348:53;:::i;:::-;2338:63;;2456:53;2501:7;2438:2;2481:9;2477:22;2456:53;:::i;:::-;2446:63;;2134:391;;;;;:::o;2532:485::-;;;;2667:2;2655:9;2646:7;2642:23;2638:32;2635:2;;;-1:-1;;2673:12;2635:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;2725:63;-1:-1;2825:2;2864:22;;72:20;97:33;72:20;97:33;:::i;:::-;2833:63;-1:-1;2933:2;2969:22;;206:20;231:30;206:20;231:30;:::i;:::-;2941:60;;;;2629:388;;;;;:::o;3024:487::-;;;;3160:2;3148:9;3139:7;3135:23;3131:32;3128:2;;;-1:-1;;3166:12;3128:2;3228:53;3273:7;3249:22;3228:53;:::i;:::-;3218:63;;3336:53;3381:7;3318:2;3361:9;3357:22;3336:53;:::i;:::-;3326:63;;3426:2;3467:9;3463:22;1208:20;1233:31;1258:5;1233:31;:::i;3518:360::-;;;3636:2;3624:9;3615:7;3611:23;3607:32;3604:2;;;-1:-1;;3642:12;3604:2;3704:53;3749:7;3725:22;3704:53;:::i;:::-;3694:63;;3794:2;3834:9;3830:22;206:20;18467:5;17481:13;17474:21;18445:5;18442:32;18432:2;;-1:-1;;18478:12;18432:2;3802:60;;;;3598:280;;;;;:::o;3885:362::-;;;4004:2;3992:9;3983:7;3979:23;3975:32;3972:2;;;-1:-1;;4010:12;3972:2;4072:53;4117:7;4093:22;4072:53;:::i;:::-;4062:63;;4162:2;4203:9;4199:22;1208:20;1233:31;1258:5;1233:31;:::i;4254:235::-;;4355:2;4343:9;4334:7;4330:23;4326:32;4323:2;;;-1:-1;;4361:12;4323:2;219:6;206:20;231:30;255:5;231:30;:::i;4496:261::-;;4610:2;4598:9;4589:7;4585:23;4581:32;4578:2;;;-1:-1;;4616:12;4578:2;-1:-1;350:13;;4572:185;-1:-1;4572:185::o;4764:362::-;;4889:2;4877:9;4868:7;4864:23;4860:32;4857:2;;;-1:-1;;4895:12;4857:2;4946:17;4940:24;4984:18;;4976:6;4973:30;4970:2;;;-1:-1;;5006:12;4970:2;5093:6;5082:9;5078:22;526:3;519:4;511:6;507:17;503:27;493:2;;-1:-1;;534:12;493:2;574:6;568:13;554:27;;4984:18;16823:6;16820:30;16817:2;;;-1:-1;;16853:12;16817:2;16486;16480:9;16926;16907:17;;-1:-1;;16903:33;16512:17;;4889:2;16512:17;16572:34;;;16608:22;;;16569:62;16566:2;;;-1:-1;;16634:12;16566:2;16486;16653:22;667:21;;;767:16;;;4889:2;767:16;764:25;-1:-1;761:2;;;-1:-1;;792:12;761:2;812:39;844:6;4889:2;743:5;739:16;4889:2;709:6;705:17;812:39;:::i;:::-;5026:84;4851:275;-1:-1;;;;;;4851:275::o;5133:241::-;;5237:2;5225:9;5216:7;5212:23;5208:32;5205:2;;;-1:-1;;5243:12;5205:2;-1:-1;932:20;;5199:175;-1:-1;5199:175::o;5651:259::-;;5764:2;5752:9;5743:7;5739:23;5735:32;5732:2;;;-1:-1;;5770:12;5732:2;1358:6;1352:13;1370:31;1395:5;1370:31;:::i;9872:222::-;-1:-1;;;;;17647:54;;;;5988:37;;9999:2;9984:18;;9970:124::o;10101:333::-;-1:-1;;;;;17647:54;;;5988:37;;17647:54;;10420:2;10405:18;;5988:37;10256:2;10241:18;;10227:207::o;10441:321::-;-1:-1;;;;;17647:54;;;;5988:37;;17481:13;17474:21;10748:2;10733:18;;6102:34;10590:2;10575:18;;10561:201::o;10769:632::-;;17658:42;;;;;17651:5;17647:54;5995:3;5988:37;9853:5;11159:2;11148:9;11144:18;9823:37;10994:3;11196:2;11185:9;11181:18;11174:48;6293:5;17104:12;17261:6;10994:3;10983:9;10979:19;17249;6387:52;6432:6;17289:14;10983:9;17289:14;11159:2;6413:5;6409:16;6387:52;:::i;:::-;17481:13;;17474:21;11387:2;11372:18;;6102:34;-1:-1;16926:9;18225:14;;;;-1:-1;;18221:28;6451:39;17289:14;6451:39;;10965:436;-1:-1;;;10965:436::o;11408:210::-;17481:13;;17474:21;6102:34;;11529:2;11514:18;;11500:118::o;11625:416::-;11825:2;11839:47;;;6727:2;11810:18;;;17249:19;-1:-1;;;17289:14;;;6743:33;6795:12;;;11796:245::o;12048:416::-;12248:2;12262:47;;;7046:2;12233:18;;;17249:19;-1:-1;;;17289:14;;;7062:42;7123:12;;;12219:245::o;12471:416::-;12671:2;12685:47;;;7374:2;12656:18;;;17249:19;-1:-1;;;17289:14;;;7390:41;7450:12;;;12642:245::o;12894:416::-;13094:2;13108:47;;;7701:2;13079:18;;;17249:19;7737:29;17289:14;;;7717:50;7786:12;;;13065:245::o;13317:416::-;13517:2;13531:47;;;8037:2;13502:18;;;17249:19;-1:-1;;;17289:14;;;8053:38;8110:12;;;13488:245::o;13740:416::-;13940:2;13954:47;;;8361:2;13925:18;;;17249:19;-1:-1;;;17289:14;;;8377:42;8438:12;;;13911:245::o;14163:416::-;14363:2;14377:47;;;8689:2;14348:18;;;17249:19;-1:-1;;;17289:14;;;8705:35;8759:12;;;14334:245::o;14586:416::-;14786:2;14800:47;;;9010:2;14771:18;;;17249:19;-1:-1;;;17289:14;;;9026:33;9078:12;;;14757:245::o;15009:416::-;15209:2;15223:47;;;9329:2;15194:18;;;17249:19;-1:-1;;;17289:14;;;9345:41;9405:12;;;15180:245::o;15432:416::-;15632:2;15646:47;;;9656:2;15617:18;;;17249:19;-1:-1;;;17289:14;;;9672:35;9726:12;;;15603:245::o;15855:222::-;9823:37;;;15982:2;15967:18;;15953:124::o;16084:333::-;9823:37;;;16403:2;16388:18;;9823:37;16239:2;16224:18;;16210:207::o;17881:268::-;17946:1;17953:101;17967:6;17964:1;17961:13;17953:101;;;18034:11;;;18028:18;18015:11;;;18008:39;17989:2;17982:10;17953:101;;;18069:6;18066:1;18063:13;18060:2;;;17946:1;18125:6;18120:3;18116:16;18109:27;18060:2;;17930:219;;;:::o;18262:117::-;-1:-1;;;;;17647:54;;18321:35;;18311:2;;18370:1;;18360:12;18386:111;18467:5;17481:13;17474:21;18445:5;18442:32;18432:2;;18488:1;;18478:12;18750:113;17863:4;18833:5;17852:16;18810:5;18807:33;18797:2;;18854:1;;18844:12"
},
"methodIdentifiers": {
"acceptGovernor()": "e58bb639",
"defaultGracePeriod()": "705d5f24",
"defaultUniswapPath(address,address)": "4d866592",
"fundingPeriod()": "74d7c62b",
"getLatestPrice(address)": "16345f18",
"getLpCooldownParams()": "9f51290b",
"globalAdmin()": "ec9a9368",
"governor()": "0c340a24",
"investorFee()": "16a12d7a",
"isValidBalancerPool(address)": "72a22d71",
"isValidCalc(address,uint8)": "1b5833f7",
"isValidCollateralAsset(address)": "8c14834b",
"isValidLiquidityAsset(address)": "8695118a",
"isValidLoanFactory(address)": "b53afda7",
"isValidPoolDelegate(address)": "372e3546",
"isValidPoolFactory(address)": "107c0240",
"isValidSubFactory(address,address,uint8)": "13d459fb",
"lpCooldownPeriod()": "dd02e0ec",
"lpWithdrawWindow()": "df3d02bd",
"mapleTreasury()": "a5a27605",
"maxSwapSlippage()": "55323195",
"minLoanEquity()": "4a2697c4",
"mpl()": "a0530946",
"oracleFor(address)": "aed019b9",
"pendingGovernor()": "e3056a34",
"protocolPaused()": "425fad58",
"setCalc(address,bool)": "be44ed6b",
"setCollateralAsset(address,bool)": "2fa6c88f",
"setDefaultGracePeriod(uint256)": "44c14f71",
"setDefaultUniswapPath(address,address,address)": "f3897663",
"setFundingPeriod(uint256)": "2a5aa292",
"setGlobalAdmin(address)": "c52bc31d",
"setInvestorFee(uint256)": "5e045467",
"setLiquidityAsset(address,bool)": "2daa0d89",
"setLpCooldownPeriod(uint256)": "8608a6e1",
"setLpWithdrawWindow(uint256)": "26718606",
"setMapleTreasury(address)": "7303de25",
"setMaxSwapSlippage(uint256)": "f33ef09a",
"setMinLoanEquity(uint256)": "298b795d",
"setPendingGovernor(address)": "f235757f",
"setPoolDelegateAllowlist(address,bool)": "efdb16fc",
"setPriceOracle(address,address)": "67a74ddc",
"setProtocolPause(bool)": "4e989118",
"setStakerCooldownPeriod(uint256)": "fd4a9121",
"setStakerUnstakeWindow(uint256)": "d1cdf301",
"setSwapOutRequired(uint256)": "dbc6c552",
"setTreasuryFee(uint256)": "77e741c7",
"setValidBalancerPool(address,bool)": "490dae64",
"setValidLoanFactory(address,bool)": "c9c67240",
"setValidPoolFactory(address,bool)": "6597b899",
"setValidSubFactory(address,address,bool)": "f85ee6f8",
"stakerCooldownPeriod()": "a965d6b5",
"stakerUnstakeWindow()": "2018b870",
"swapOutRequired()": "3106374c",
"treasuryFee()": "cc32d176",
"validCalcs(address)": "1beb84e7",
"validSubFactories(address,address)": "1b1804aa"
}
}
},
"SafeMath": {
"abi": [],
"evm": {
"bytecode": {
"linkReferences": {},
"object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220623a37c15f8f76f54452df6aba8127c60616902279faeda2182dae47b45ac85764736f6c634300060b0033",
"opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH3 0x3A37C1 0x5F DUP16 PUSH23 0xF54452DF6ABA8127C60616902279FAEDA2182DAE47B45A 0xC8 JUMPI PUSH5 0x736F6C6343 STOP MOD SIGNEXTEND STOP CALLER ",
"sourceMap": "25783:4578:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"immutableReferences": {},
"linkReferences": {},
"object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220623a37c15f8f76f54452df6aba8127c60616902279faeda2182dae47b45ac85764736f6c634300060b0033",
"opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH3 0x3A37C1 0x5F DUP16 PUSH23 0xF54452DF6ABA8127C60616902279FAEDA2182DAE47B45A 0xC8 JUMPI PUSH5 0x736F6C6343 STOP MOD SIGNEXTEND STOP CALLER ",
"sourceMap": "25783:4578:0:-:0;;;;;;;;"
},
"methodIdentifiers": {}
}
}
}
},
"sources": {
"contracts/core/globals/v1/MapleGlobals.sol": {
"ast": {
"absolutePath": "contracts/core/globals/v1/MapleGlobals.sol",
"exportedSymbols": {
"ICalc": [
16
],
"IERC20": [
599
],
"IERC20Details": [
617
],
"IMapleGlobals": [
507
],
"IOracle": [
515
],
"ISubFactory": [
523
],
"MapleGlobals": [
1714
],
"SafeMath": [
811
]
},
"id": 1715,
"license": "AGPL-3.0-or-later",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 1,
"literals": [
"solidity",
"=",
"0.6",
".11",
">=",
"0.6",
".0",
"<",
"0.8",
".0"
],
"nodeType": "PragmaDirective",
"src": "119:39:0"
},
{
"id": 2,
"literals": [
"experimental",
"ABIEncoderV2"
],
"nodeType": "PragmaDirective",
"src": "159:33:0"
},
{
"abstract": false,
"baseContracts": [],
"contractDependencies": [],
"contractKind": "interface",
"documentation": {
"id": 3,
"nodeType": "StructuredDocumentation",
"src": "282:28:0",
"text": "@title Calc calculates."
},
"fullyImplemented": false,
"id": 16,
"linearizedBaseContracts": [
16
],
"name": "ICalc",
"nodeType": "ContractDefinition",
"nodes": [
{
"body": null,
"documentation": {
"id": 4,
"nodeType": "StructuredDocumentation",
"src": "333:45:0",
"text": "@dev The Calculator type."
},
"functionSelector": "9d8ae446",
"id": 9,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "calcType",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 5,
"nodeType": "ParameterList",
"parameters": [],
"src": "400:2:0"
},
"returnParameters": {
"id": 8,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 7,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 9,
"src": "426:5:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 6,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "426:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "425:7:0"
},
"scope": 16,
"src": "383:50:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 10,
"nodeType": "StructuredDocumentation",
"src": "439:45:0",
"text": "@dev The Calculator name."
},
"functionSelector": "06fdde03",
"id": 15,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "name",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 11,
"nodeType": "ParameterList",
"parameters": [],
"src": "502:2:0"
},
"returnParameters": {
"id": 14,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 13,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 15,
"src": "528:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 12,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "528:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "527:9:0"
},
"scope": 16,
"src": "489:48:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "external"
}
],
"scope": 1715,
"src": "310:230:0"
},
{
"abstract": false,
"baseContracts": [],
"contractDependencies": [],
"contractKind": "interface",
"documentation": {
"id": 17,
"nodeType": "StructuredDocumentation",
"src": "635:104:0",
"text": "@title MapleGlobals maintains a central source of parameters and allowlists for the Maple protocol."
},
"fullyImplemented": false,
"id": 507,
"linearizedBaseContracts": [
507
],
"name": "IMapleGlobals",
"nodeType": "ContractDefinition",
"nodes": [
{
"anonymous": false,
"documentation": {
"id": 18,
"nodeType": "StructuredDocumentation",
"src": "770:91:0",
"text": "@dev Emits an event indicating the MapleGlobals contract was created."
},
"id": 20,
"name": "Initialized",
"nodeType": "EventDefinition",
"parameters": {
"id": 19,
"nodeType": "ParameterList",
"parameters": [],
"src": "883:2:0"
},
"src": "866:20:0"
},
{
"anonymous": false,
"documentation": {
"id": 21,
"nodeType": "StructuredDocumentation",
"src": "892:336:0",
"text": "@dev Emits an event indicating the validity of a Collateral Asset was set.\n@param asset The Collateral Asset to assign validity to.\n@param decimals The number of decimal places of `asset`.\n@param symbol The symbol of `asset`.\n@param valid The new validity status of `asset`."
},
"id": 31,
"name": "CollateralAssetSet",
"nodeType": "EventDefinition",
"parameters": {
"id": 30,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 23,
"indexed": false,
"mutability": "mutable",
"name": "asset",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 31,
"src": "1258:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 22,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1258:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 25,
"indexed": false,
"mutability": "mutable",
"name": "decimals",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 31,
"src": "1273:16:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 24,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1273:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 27,
"indexed": false,
"mutability": "mutable",
"name": "symbol",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 31,
"src": "1291:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 26,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "1291:6:0",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 29,
"indexed": false,
"mutability": "mutable",
"name": "valid",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 31,
"src": "1306:10:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 28,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "1306:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1257:60:0"
},
"src": "1233:85:0"
},
{
"anonymous": false,
"documentation": {
"id": 32,
"nodeType": "StructuredDocumentation",
"src": "1324:334:0",
"text": "@dev Emits an event indicating the validity of a Liquidity Asset was set.\n@param asset The Liquidity Asset to assign validity to.\n@param decimals The number of decimal places of `asset`.\n@param symbol The symbol of `asset`.\n@param valid The new validity status of `asset`."
},
"id": 42,
"name": "LiquidityAssetSet",
"nodeType": "EventDefinition",
"parameters": {
"id": 41,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 34,
"indexed": false,
"mutability": "mutable",
"name": "asset",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 42,
"src": "1687:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 33,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1687:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 36,
"indexed": false,
"mutability": "mutable",
"name": "decimals",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 42,
"src": "1702:16:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 35,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1702:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 38,
"indexed": false,
"mutability": "mutable",
"name": "symbol",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 42,
"src": "1720:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 37,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "1720:6:0",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 40,
"indexed": false,
"mutability": "mutable",
"name": "valid",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 42,
"src": "1735:10:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 39,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "1735:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1686:60:0"
},
"src": "1663:84:0"
},
{
"anonymous": false,
"documentation": {
"id": 43,
"nodeType": "StructuredDocumentation",
"src": "1753:183:0",
"text": "@dev Emits an event indicating the Oracle for an asset was set.\n@param asset The asset to update price for.\n@param oracle The new Oracle to use."
},
"id": 49,
"name": "OracleSet",
"nodeType": "EventDefinition",
"parameters": {
"id": 48,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 45,
"indexed": false,
"mutability": "mutable",
"name": "asset",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 49,
"src": "1957:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 44,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1957:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 47,
"indexed": false,
"mutability": "mutable",
"name": "oracle",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 49,
"src": "1972:14:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 46,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1972:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1956:31:0"
},
"src": "1941:47:0"
},
{
"anonymous": false,
"documentation": {
"id": 50,
"nodeType": "StructuredDocumentation",
"src": "1994:40:0",
"text": "@dev This is unused."
},
"id": 56,
"name": "TransferRestrictionExemptionSet",
"nodeType": "EventDefinition",
"parameters": {
"id": 55,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 52,
"indexed": true,
"mutability": "mutable",
"name": "exemptedContract",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 56,
"src": "2077:32:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 51,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2077:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 54,
"indexed": false,
"mutability": "mutable",
"name": "valid",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 56,
"src": "2111:10:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 53,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "2111:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2076:46:0"
},
"src": "2039:84:0"
},
{
"anonymous": false,
"documentation": {
"id": 57,
"nodeType": "StructuredDocumentation",
"src": "2129:232:0",
"text": "@dev Emits an event indicating the validity of a Balancer Pool was set.\n@param balancerPool The address of Balancer Pool contract.\n@param valid The new validity status of a Balancer Pool."
},
"id": 63,
"name": "BalancerPoolSet",
"nodeType": "EventDefinition",
"parameters": {
"id": 62,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 59,
"indexed": false,
"mutability": "mutable",
"name": "balancerPool",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 63,
"src": "2388:20:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 58,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2388:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 61,
"indexed": false,
"mutability": "mutable",
"name": "valid",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 63,
"src": "2410:10:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 60,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "2410:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2387:34:0"
},
"src": "2366:56:0"
},
{
"anonymous": false,
"documentation": {
"id": 64,
"nodeType": "StructuredDocumentation",
"src": "2428:151:0",
"text": "@dev Emits an event indicating a PendingGovernor was set.\n@param pendingGovernor The address of the new Pending Governor."
},
"id": 68,
"name": "PendingGovernorSet",
"nodeType": "EventDefinition",
"parameters": {
"id": 67,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 66,
"indexed": true,
"mutability": "mutable",
"name": "pendingGovernor",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 68,
"src": "2609:31:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 65,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2609:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2608:33:0"
},
"src": "2584:58:0"
},
{
"anonymous": false,
"documentation": {
"id": 69,
"nodeType": "StructuredDocumentation",
"src": "2648:164:0",
"text": "@dev Emits an event indicating Governorship was accepted by a new account.\n@param governor The account that has accepted Governorship."
},
"id": 73,
"name": "GovernorAccepted",
"nodeType": "EventDefinition",
"parameters": {
"id": 72,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 71,
"indexed": true,
"mutability": "mutable",
"name": "governor",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 73,
"src": "2840:24:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 70,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2840:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2839:26:0"
},
"src": "2817:49:0"
},
{
"anonymous": false,
"documentation": {
"id": 74,
"nodeType": "StructuredDocumentation",
"src": "2872:225:0",
"text": "@dev Emits an event indicating that some Governor controlled parameter was set.\n@param which The identifier of the parameter that was set.\n@param value The value the parameter was set to."
},
"id": 80,
"name": "GlobalsParamSet",
"nodeType": "EventDefinition",
"parameters": {
"id": 79,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 76,
"indexed": true,
"mutability": "mutable",
"name": "which",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 80,
"src": "3124:21:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 75,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "3124:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 78,
"indexed": false,
"mutability": "mutable",
"name": "value",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 80,
"src": "3147:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 77,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3147:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3123:38:0"
},
"src": "3102:60:0"
},
{
"anonymous": false,
"documentation": {
"id": 81,
"nodeType": "StructuredDocumentation",
"src": "3168:211:0",
"text": "@dev Emits an event indicating that some Governor controlled address was set.\n@param which The identifier of the address that was set.\n@param addr The address that was set."
},
"id": 87,
"name": "GlobalsAddressSet",
"nodeType": "EventDefinition",
"parameters": {
"id": 86,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 83,
"indexed": true,
"mutability": "mutable",
"name": "which",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 87,
"src": "3408:21:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 82,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "3408:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 85,
"indexed": false,
"mutability": "mutable",
"name": "addr",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 87,
"src": "3431:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 84,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3431:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3407:37:0"
},
"src": "3384:61:0"
},
{
"anonymous": false,
"documentation": {
"id": 88,
"nodeType": "StructuredDocumentation",
"src": "3451:148:0",
"text": "@dev Emits an event indicating the protocol's paused state has been set.\n@param pause Whether the protocol was paused."
},
"id": 92,
"name": "ProtocolPaused",
"nodeType": "EventDefinition",
"parameters": {
"id": 91,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 90,
"indexed": false,
"mutability": "mutable",
"name": "pause",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 92,
"src": "3625:10:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 89,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "3625:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3624:12:0"
},
"src": "3604:33:0"
},
{
"anonymous": false,
"documentation": {
"id": 93,
"nodeType": "StructuredDocumentation",
"src": "3643:143:0",
"text": "@dev Emits an event indicating the GlobalAdmin was set.\n@param newGlobalAdmin The address of the new GlobalAdmin."
},
"id": 97,
"name": "GlobalAdminSet",
"nodeType": "EventDefinition",
"parameters": {
"id": 96,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 95,
"indexed": true,
"mutability": "mutable",
"name": "newGlobalAdmin",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 97,
"src": "3812:30:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 94,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3812:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3811:32:0"
},
"src": "3791:53:0"
},
{
"anonymous": false,
"documentation": {
"id": 98,
"nodeType": "StructuredDocumentation",
"src": "3850:230:0",
"text": "@dev Emits an event indicating the validity of a Pool Delegate was set.\n@param poolDelegate The address of a Pool Delegate.\n@param valid Whether `poolDelegate` is a valid Pool Delegate."
},
"id": 104,
"name": "PoolDelegateSet",
"nodeType": "EventDefinition",
"parameters": {
"id": 103,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 100,
"indexed": true,
"mutability": "mutable",
"name": "poolDelegate",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 104,
"src": "4107:28:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 99,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4107:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 102,
"indexed": false,
"mutability": "mutable",
"name": "valid",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 104,
"src": "4137:10:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 101,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "4137:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4106:42:0"
},
"src": "4085:64:0"
},
{
"body": null,
"documentation": {
"id": 105,
"nodeType": "StructuredDocumentation",
"src": "4155:73:0",
"text": "@dev The ERC-2222 Maple Token for the Maple protocol."
},
"functionSelector": "a0530946",
"id": 110,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "mpl",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 106,
"nodeType": "ParameterList",
"parameters": [],
"src": "4245:2:0"
},
"returnParameters": {
"id": 109,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 108,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 110,
"src": "4271:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 107,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4271:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4270:9:0"
},
"scope": 507,
"src": "4233:47:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 111,
"nodeType": "StructuredDocumentation",
"src": "4286:142:0",
"text": "@dev The Governor that is declared for governorship transfer. \n@dev Must be accepted for transfer to take effect. "
},
"functionSelector": "e3056a34",
"id": 116,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "pendingGovernor",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 112,
"nodeType": "ParameterList",
"parameters": [],
"src": "4457:2:0"
},
"returnParameters": {
"id": 115,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 114,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 116,
"src": "4483:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 113,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4483:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4482:9:0"
},
"scope": 507,
"src": "4433:59:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 117,
"nodeType": "StructuredDocumentation",
"src": "4498:91:0",
"text": "@dev The Governor responsible for management of global Maple variables."
},
"functionSelector": "0c340a24",
"id": 122,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "governor",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 118,
"nodeType": "ParameterList",
"parameters": [],
"src": "4611:2:0"
},
"returnParameters": {
"id": 121,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 120,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 122,
"src": "4637:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 119,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4637:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4636:9:0"
},
"scope": 507,
"src": "4594:52:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 123,
"nodeType": "StructuredDocumentation",
"src": "4652:125:0",
"text": "@dev The MapleTreasury is the Treasury where all fees pass through for conversion, prior to distribution."
},
"functionSelector": "a5a27605",
"id": 128,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "mapleTreasury",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 124,
"nodeType": "ParameterList",
"parameters": [],
"src": "4804:2:0"
},
"returnParameters": {
"id": 127,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 126,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 128,
"src": "4830:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 125,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4830:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4829:9:0"
},
"scope": 507,
"src": "4782:57:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 129,
"nodeType": "StructuredDocumentation",
"src": "4845:147:0",
"text": "@dev The Global Admin of the whole network. \n@dev Has the power to switch off/on the functionality of entire protocol. "
},
"functionSelector": "ec9a9368",
"id": 134,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "globalAdmin",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 130,
"nodeType": "ParameterList",
"parameters": [],
"src": "5017:2:0"
},
"returnParameters": {
"id": 133,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 132,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 134,
"src": "5043:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 131,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5043:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5042:9:0"
},
"scope": 507,
"src": "4997:55:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 135,
"nodeType": "StructuredDocumentation",
"src": "5058:119:0",
"text": "@dev The amount of time a Borrower has to make a missed payment before a default can be triggered. "
},
"functionSelector": "705d5f24",
"id": 140,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "defaultGracePeriod",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 136,
"nodeType": "ParameterList",
"parameters": [],
"src": "5209:2:0"
},
"returnParameters": {
"id": 139,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 138,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 140,
"src": "5235:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 137,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5235:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5234:9:0"
},
"scope": 507,
"src": "5182:62:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 141,
"nodeType": "StructuredDocumentation",
"src": "5250:126:0",
"text": "@dev The minimum amount of Pool cover that a Pool Delegate has to provide before they can finalize a Pool."
},
"functionSelector": "3106374c",
"id": 146,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "swapOutRequired",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 142,
"nodeType": "ParameterList",
"parameters": [],
"src": "5405:2:0"
},
"returnParameters": {
"id": 145,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 144,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 146,
"src": "5431:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 143,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5431:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5430:9:0"
},
"scope": 507,
"src": "5381:59:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 147,
"nodeType": "StructuredDocumentation",
"src": "5446:116:0",
"text": "@dev The amount of time to allow a Borrower to drawdown on their Loan after funding period ends."
},
"functionSelector": "74d7c62b",
"id": 152,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "fundingPeriod",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 148,
"nodeType": "ParameterList",
"parameters": [],
"src": "5589:2:0"
},
"returnParameters": {
"id": 151,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 150,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 152,
"src": "5615:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 149,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5615:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5614:9:0"
},
"scope": 507,
"src": "5567:57:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 153,
"nodeType": "StructuredDocumentation",
"src": "5630:104:0",
"text": "@dev The portion of drawdown that goes to the Pool Delegates and individual Lenders."
},
"functionSelector": "16a12d7a",
"id": 158,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "investorFee",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 154,
"nodeType": "ParameterList",
"parameters": [],
"src": "5759:2:0"
},
"returnParameters": {
"id": 157,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 156,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 158,
"src": "5785:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 155,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5785:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5784:9:0"
},
"scope": 507,
"src": "5739:55:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 159,
"nodeType": "StructuredDocumentation",
"src": "5800:80:0",
"text": "@dev The portion of drawdown that goes to the MapleTreasury."
},
"functionSelector": "cc32d176",
"id": 164,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "treasuryFee",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 160,
"nodeType": "ParameterList",
"parameters": [],
"src": "5905:2:0"
},
"returnParameters": {
"id": 163,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 162,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 164,
"src": "5931:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 161,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5931:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5930:9:0"
},
"scope": 507,
"src": "5885:55:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 165,
"nodeType": "StructuredDocumentation",
"src": "5946:81:0",
"text": "@dev The maximum amount of slippage for Uniswap transactions."
},
"functionSelector": "55323195",
"id": 170,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "maxSwapSlippage",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 166,
"nodeType": "ParameterList",
"parameters": [],
"src": "6056:2:0"
},
"returnParameters": {
"id": 169,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 168,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 170,
"src": "6082:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 167,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6082:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6081:9:0"
},
"scope": 507,
"src": "6032:59:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 171,
"nodeType": "StructuredDocumentation",
"src": "6097:130:0",
"text": "@dev The minimum amount of LoanFDTs required to trigger liquidations (basis points percentage of totalSupply)."
},
"functionSelector": "4a2697c4",
"id": 176,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "minLoanEquity",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 172,
"nodeType": "ParameterList",
"parameters": [],
"src": "6254:2:0"
},
"returnParameters": {
"id": 175,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 174,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 176,
"src": "6280:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 173,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6280:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6279:9:0"
},
"scope": 507,
"src": "6232:57:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 177,
"nodeType": "StructuredDocumentation",
"src": "6295:119:0",
"text": "@dev The period (in secs) after which Stakers are allowed to unstake their BPTs from a StakeLocker."
},
"functionSelector": "a965d6b5",
"id": 182,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "stakerCooldownPeriod",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 178,
"nodeType": "ParameterList",
"parameters": [],
"src": "6448:2:0"
},
"returnParameters": {
"id": 181,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 180,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 182,
"src": "6474:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 179,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6474:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6473:9:0"
},
"scope": 507,
"src": "6419:64:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 183,
"nodeType": "StructuredDocumentation",
"src": "6489:110:0",
"text": "@dev The period (in secs) after which LPs are allowed to withdraw their funds from a Pool."
},
"functionSelector": "dd02e0ec",
"id": 188,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "lpCooldownPeriod",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 184,
"nodeType": "ParameterList",
"parameters": [],
"src": "6629:2:0"
},
"returnParameters": {
"id": 187,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 186,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 188,
"src": "6655:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 185,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6655:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6654:9:0"
},
"scope": 507,
"src": "6604:60:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 189,
"nodeType": "StructuredDocumentation",
"src": "6670:161:0",
"text": "@dev The window of time (in secs) after `stakerCooldownPeriod` that an account has to withdraw before their intent to unstake is invalidated."
},
"functionSelector": "2018b870",
"id": 194,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "stakerUnstakeWindow",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 190,
"nodeType": "ParameterList",
"parameters": [],
"src": "6864:2:0"
},
"returnParameters": {
"id": 193,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 192,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 194,
"src": "6890:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 191,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6890:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6889:9:0"
},
"scope": 507,
"src": "6836:63:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 195,
"nodeType": "StructuredDocumentation",
"src": "6905:158:0",
"text": "@dev The window of time (in secs) after `lpCooldownPeriod` that an account has to withdraw before their intent to withdraw is invalidated."
},
"functionSelector": "df3d02bd",
"id": 200,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "lpWithdrawWindow",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 196,
"nodeType": "ParameterList",
"parameters": [],
"src": "7093:2:0"
},
"returnParameters": {
"id": 199,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 198,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 200,
"src": "7119:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 197,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7119:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7118:9:0"
},
"scope": 507,
"src": "7068:60:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 201,
"nodeType": "StructuredDocumentation",
"src": "7134:84:0",
"text": "@dev Whether the functionality of the entire protocol is paused."
},
"functionSelector": "425fad58",
"id": 206,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "protocolPaused",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 202,
"nodeType": "ParameterList",
"parameters": [],
"src": "7246:2:0"
},
"returnParameters": {
"id": 205,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 204,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 206,
"src": "7272:4:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 203,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "7272:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7271:6:0"
},
"scope": 507,
"src": "7223:55:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 207,
"nodeType": "StructuredDocumentation",
"src": "7284:127:0",
"text": "@param liquidityAsset The address of a Liquidity Asset.\n@return Whether `liquidityAsset` is valid."
},
"functionSelector": "8695118a",
"id": 214,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "isValidLiquidityAsset",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 210,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 209,
"mutability": "mutable",
"name": "liquidityAsset",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 214,
"src": "7447:22:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 208,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7447:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7446:24:0"
},
"returnParameters": {
"id": 213,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 212,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 214,
"src": "7494:4:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 211,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "7494:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7493:6:0"
},
"scope": 507,
"src": "7416:84:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 215,
"nodeType": "StructuredDocumentation",
"src": "7506:130:0",
"text": "@param collateralAsset The address of a Collateral Asset.\n@return Whether `collateralAsset` is valid."
},
"functionSelector": "8c14834b",
"id": 222,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "isValidCollateralAsset",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 218,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 217,
"mutability": "mutable",
"name": "collateralAsset",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 222,
"src": "7673:23:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 216,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7673:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7672:25:0"
},
"returnParameters": {
"id": 221,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 220,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 222,
"src": "7721:4:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 219,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "7721:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7720:6:0"
},
"scope": 507,
"src": "7641:86:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 223,
"nodeType": "StructuredDocumentation",
"src": "7733:102:0",
"text": "@param calc The address of a Calculator.\n@return Whether `calc` is valid."
},
"functionSelector": "1beb84e7",
"id": 230,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "validCalcs",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 226,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 225,
"mutability": "mutable",
"name": "calc",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 230,
"src": "7860:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 224,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7860:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7859:14:0"
},
"returnParameters": {
"id": 229,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 228,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 230,
"src": "7897:4:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 227,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "7897:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7896:6:0"
},
"scope": 507,
"src": "7840:63:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 231,
"nodeType": "StructuredDocumentation",
"src": "7909:198:0",
"text": "@dev Prevents unauthorized/unknown addresses from creating Pools.\n@param poolDelegate The address of a Pool Delegate.\n@return Whether `poolDelegate` is valid."
},
"functionSelector": "372e3546",
"id": 238,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "isValidPoolDelegate",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 234,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 233,
"mutability": "mutable",
"name": "poolDelegate",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 238,
"src": "8141:20:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 232,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8141:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8140:22:0"
},
"returnParameters": {
"id": 237,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 236,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 238,
"src": "8186:4:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 235,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "8186:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8185:6:0"
},
"scope": 507,
"src": "8112:80:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 239,
"nodeType": "StructuredDocumentation",
"src": "8198:147:0",
"text": "@param balancerPool The address of a Balancer Pool.\n@return Whether Maple has approved `balancerPool` for BPT staking."
},
"functionSelector": "72a22d71",
"id": 246,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "isValidBalancerPool",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 242,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 241,
"mutability": "mutable",
"name": "balancerPool",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 246,
"src": "8379:20:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 240,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8379:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8378:22:0"
},
"returnParameters": {
"id": 245,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 244,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 246,
"src": "8424:4:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 243,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "8424:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8423:6:0"
},
"scope": 507,
"src": "8350:80:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 247,
"nodeType": "StructuredDocumentation",
"src": "8436:768:0",
"text": "@dev Determines the liquidation path of various assets in Loans and the Treasury. \n@dev The value provided will determine whether or not to perform a bilateral or triangular swap on Uniswap. \n@dev For example, `defaultUniswapPath[WBTC][USDC]` value would indicate what asset to convert WBTC into before conversion to USDC. \n@dev If `defaultUniswapPath[WBTC][USDC] == USDC`, then the swap is bilateral and no middle asset is swapped. \n@dev If `defaultUniswapPath[WBTC][USDC] == WETH`, then swap WBTC for WETH, then WETH for USDC. \n@param tokenA The address of the asset being swapped.\n@param tokenB The address of the final asset to receive.\n@return The intermediary asset for swaps, if any."
},
"functionSelector": "4d866592",
"id": 256,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "defaultUniswapPath",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 252,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 249,
"mutability": "mutable",
"name": "tokenA",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 256,
"src": "9237:14:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 248,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9237:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 251,
"mutability": "mutable",
"name": "tokenB",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 256,
"src": "9253:14:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 250,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9253:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "9236:32:0"
},
"returnParameters": {
"id": 255,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 254,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 256,
"src": "9292:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 253,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9292:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "9291:9:0"
},
"scope": 507,
"src": "9209:92:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 257,
"nodeType": "StructuredDocumentation",
"src": "9307:123:0",
"text": "@param asset The address of some token.\n@return The Chainlink Oracle for the price of `asset`."
},
"functionSelector": "aed019b9",
"id": 264,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "oracleFor",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 260,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 259,
"mutability": "mutable",
"name": "asset",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 264,
"src": "9454:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 258,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9454:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "9453:15:0"
},
"returnParameters": {
"id": 263,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 262,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 264,
"src": "9492:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 261,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9492:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "9491:9:0"
},
"scope": 507,
"src": "9435:66:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 265,
"nodeType": "StructuredDocumentation",
"src": "9511:118:0",
"text": "@param poolFactory The address of a Pool Factory.\n@return Whether `poolFactory` is valid."
},
"functionSelector": "107c0240",
"id": 272,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "isValidPoolFactory",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 268,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 267,
"mutability": "mutable",
"name": "poolFactory",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 272,
"src": "9662:19:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 266,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9662:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "9661:21:0"
},
"returnParameters": {
"id": 271,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 270,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 272,
"src": "9706:4:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 269,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "9706:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "9705:6:0"
},
"scope": 507,
"src": "9634:78:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 273,
"nodeType": "StructuredDocumentation",
"src": "9718:118:0",
"text": "@param loanFactory The address of a Loan Factory.\n@return Whether `loanFactory` is valid."
},
"functionSelector": "b53afda7",
"id": 280,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "isValidLoanFactory",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 276,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 275,
"mutability": "mutable",
"name": "loanFactory",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 280,
"src": "9869:19:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 274,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9869:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "9868:21:0"
},
"returnParameters": {
"id": 279,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 278,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 280,
"src": "9913:4:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 277,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "9913:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "9912:6:0"
},
"scope": 507,
"src": "9841:78:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 281,
"nodeType": "StructuredDocumentation",
"src": "9929:266:0",
"text": "@param superFactory The core factory (e.g. PoolFactory, LoanFactory).\n@param subFactory The sub factory used by core factory (e.g. LiquidityLockerFactory).\n@return Whether `subFactory` is valid as it relates to `superFactory`."
},
"functionSelector": "1b1804aa",
"id": 290,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "validSubFactories",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 286,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 283,
"mutability": "mutable",
"name": "superFactory",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 290,
"src": "10227:20:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 282,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "10227:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 285,
"mutability": "mutable",
"name": "subFactory",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 290,
"src": "10249:18:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 284,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "10249:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "10226:42:0"
},
"returnParameters": {
"id": 289,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 288,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 290,
"src": "10292:4:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 287,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "10292:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "10291:6:0"
},
"scope": 507,
"src": "10200:98:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 291,
"nodeType": "StructuredDocumentation",
"src": "10308:363:0",
"text": "@dev Sets the Staker cooldown period. \n@dev This change will affect the existing cool down period for the Stakers that already intended to unstake. \n@dev Only the Governor can call this function. \n@dev It emits a `GlobalsParamSet` event. \n@param newCooldownPeriod The new value for the cool down period."
},
"functionSelector": "fd4a9121",
"id": 296,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "setStakerCooldownPeriod",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 294,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 293,
"mutability": "mutable",
"name": "newCooldownPeriod",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 296,
"src": "10709:25:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 292,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "10709:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "10708:27:0"
},
"returnParameters": {
"id": 295,
"nodeType": "ParameterList",
"parameters": [],
"src": "10744:0:0"
},
"scope": 507,
"src": "10676:69:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 297,
"nodeType": "StructuredDocumentation",
"src": "10751:368:0",
"text": "@dev Sets the Liquidity Pool cooldown period. \n@dev This change will affect the existing cool down period for the LPs that already intended to withdraw. \n@dev Only the Governor can call this function. \n@dev It emits a `GlobalsParamSet` event. \n@param newCooldownPeriod The new value for the cool down period."
},
"functionSelector": "8608a6e1",
"id": 302,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "setLpCooldownPeriod",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 300,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 299,
"mutability": "mutable",
"name": "newCooldownPeriod",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 302,
"src": "11153:25:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 298,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "11153:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "11152:27:0"
},
"returnParameters": {
"id": 301,
"nodeType": "ParameterList",
"parameters": [],
"src": "11188:0:0"
},
"scope": 507,
"src": "11124:65:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 303,
"nodeType": "StructuredDocumentation",
"src": "11195:349:0",
"text": "@dev Sets the Staker unstake window. \n@dev This change will affect the existing window for the Stakers that already intended to unstake. \n@dev Only the Governor can call this function. \n@dev It emits a `GlobalsParamSet` event. \n@param newUnstakeWindow The new value for the unstake window."
},
"functionSelector": "d1cdf301",
"id": 308,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "setStakerUnstakeWindow",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 306,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 305,
"mutability": "mutable",
"name": "newUnstakeWindow",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 308,
"src": "11581:24:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 304,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "11581:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "11580:26:0"
},
"returnParameters": {
"id": 307,
"nodeType": "ParameterList",
"parameters": [],
"src": "11615:0:0"
},
"scope": 507,
"src": "11549:67:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 309,
"nodeType": "StructuredDocumentation",
"src": "11622:359:0",
"text": "@dev Sets the Liquidity Pool withdraw window. \n@dev This change will affect the existing window for the LPs that already intended to withdraw. \n@dev Only the Governor can call this function. \n@dev It emits a `GlobalsParamSet` event. \n@param newLpWithdrawWindow The new value for the withdraw window."
},
"functionSelector": "26718606",
"id": 314,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "setLpWithdrawWindow",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 312,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 311,
"mutability": "mutable",
"name": "newLpWithdrawWindow",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 314,
"src": "12015:27:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 310,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "12015:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "12014:29:0"
},
"returnParameters": {
"id": 313,
"nodeType": "ParameterList",
"parameters": [],
"src": "12052:0:0"
},
"scope": 507,
"src": "11986:67:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 315,
"nodeType": "StructuredDocumentation",
"src": "12059:280:0",
"text": "@dev Sets the allowed Uniswap slippage percentage, in basis points. \n@dev Only the Governor can call this function. \n@dev It emits a `GlobalsParamSet` event. \n@param newMaxSlippage The new max slippage percentage (in basis points)"
},
"functionSelector": "f33ef09a",
"id": 320,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "setMaxSwapSlippage",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 318,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 317,
"mutability": "mutable",
"name": "newMaxSlippage",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 320,
"src": "12372:22:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 316,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "12372:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "12371:24:0"
},
"returnParameters": {
"id": 319,
"nodeType": "ParameterList",
"parameters": [],
"src": "12404:0:0"
},
"scope": 507,
"src": "12344:61:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 321,
"nodeType": "StructuredDocumentation",
"src": "12411:211:0",
"text": "@dev Sets the Global Admin. \n@dev Only the Governor can call this function. \n@dev It emits a `GlobalAdminSet` event. \n@param newGlobalAdmin The new global admin address."
},
"functionSelector": "c52bc31d",
"id": 326,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "setGlobalAdmin",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 324,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 323,
"mutability": "mutable",
"name": "newGlobalAdmin",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 326,
"src": "12651:22:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 322,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "12651:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "12650:24:0"
},
"returnParameters": {
"id": 325,
"nodeType": "ParameterList",
"parameters": [],
"src": "12683:0:0"
},
"scope": 507,
"src": "12627:57:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 327,
"nodeType": "StructuredDocumentation",
"src": "12690:314:0",
"text": "@dev Sets the validity of a Balancer Pool. \n@dev Only the Governor can call this function. \n@dev It emits a `BalancerPoolSet` event. \n@param balancerPool The address of Balancer Pool contract.\n@param valid The new validity status of a Balancer Pool."
},
"functionSelector": "490dae64",
"id": 334,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "setValidBalancerPool",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 332,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 329,
"mutability": "mutable",
"name": "balancerPool",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 334,
"src": "13039:20:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 328,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "13039:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 331,
"mutability": "mutable",
"name": "valid",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 334,
"src": "13061:10:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 330,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "13061:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "13038:34:0"
},
"returnParameters": {
"id": 333,
"nodeType": "ParameterList",
"parameters": [],
"src": "13081:0:0"
},
"scope": 507,
"src": "13009:73:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 335,
"nodeType": "StructuredDocumentation",
"src": "13088:290:0",
"text": "@dev Sets the paused/unpaused state of the protocol. \n@dev Only the Global Admin can call this function. \n@dev It emits a `ProtocolPaused` event. \n@param pause A boolean flag to switch externally facing functionality in the protocol on/off."
},
"functionSelector": "4e989118",
"id": 340,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "setProtocolPause",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 338,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 337,
"mutability": "mutable",
"name": "pause",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 340,
"src": "13409:10:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 336,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "13409:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "13408:12:0"
},
"returnParameters": {
"id": 339,
"nodeType": "ParameterList",
"parameters": [],
"src": "13429:0:0"
},
"scope": 507,
"src": "13383:47:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 341,
"nodeType": "StructuredDocumentation",
"src": "13436:247:0",
"text": "@dev Sets the validity of a PoolFactory. \n@dev Only the Governor can call this function. \n@param poolFactory The address of a PoolFactory.\n@param valid The new validity status of `poolFactory`."
},
"functionSelector": "6597b899",
"id": 348,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "setValidPoolFactory",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 346,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 343,
"mutability": "mutable",
"name": "poolFactory",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 348,
"src": "13717:19:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 342,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "13717:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 345,
"mutability": "mutable",
"name": "valid",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 348,
"src": "13738:10:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 344,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "13738:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "13716:33:0"
},
"returnParameters": {
"id": 347,
"nodeType": "ParameterList",
"parameters": [],
"src": "13758:0:0"
},
"scope": 507,
"src": "13688:71:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 349,
"nodeType": "StructuredDocumentation",
"src": "13765:247:0",
"text": "@dev Sets the validity of a LoanFactory. \n@dev Only the Governor can call this function. \n@param loanFactory The address of a LoanFactory.\n@param valid The new validity status of `loanFactory`."
},
"functionSelector": "c9c67240",
"id": 356,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "setValidLoanFactory",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 354,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 351,
"mutability": "mutable",
"name": "loanFactory",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 356,
"src": "14046:19:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 350,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "14046:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 353,
"mutability": "mutable",
"name": "valid",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 356,
"src": "14067:10:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 352,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "14067:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "14045:33:0"
},
"returnParameters": {
"id": 355,
"nodeType": "ParameterList",
"parameters": [],
"src": "14087:0:0"
},
"scope": 507,
"src": "14017:71:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 357,
"nodeType": "StructuredDocumentation",
"src": "14094:428:0",
"text": "@dev Sets the validity of `subFactory` as it relates to `superFactory`. \n@dev Only the Governor can call this function. \n@param superFactory The core factory (e.g. PoolFactory, LoanFactory).\n@param subFactory The sub factory used by core factory (e.g. LiquidityLockerFactory).\n@param valid The new validity status of `subFactory` within context of `superFactory`."
},
"functionSelector": "f85ee6f8",
"id": 366,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "setValidSubFactory",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 364,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 359,
"mutability": "mutable",
"name": "superFactory",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 366,
"src": "14555:20:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 358,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "14555:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 361,
"mutability": "mutable",
"name": "subFactory",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 366,
"src": "14577:18:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 360,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "14577:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 363,
"mutability": "mutable",
"name": "valid",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 366,
"src": "14597:10:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 362,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "14597:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "14554:54:0"
},
"returnParameters": {
"id": 365,
"nodeType": "ParameterList",
"parameters": [],
"src": "14617:0:0"
},
"scope": 507,
"src": "14527:91:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 367,
"nodeType": "StructuredDocumentation",
"src": "14624:472:0",
"text": "@dev Sets the path to swap an asset through Uniswap. \n@dev Only the Governor can call this function. \n@dev Set to == mid to enable a bilateral swap (single path swap). \n@dev Set to != mid to enable a triangular swap (multi path swap). \n@param from The address of the asset being swapped.\n@param to The address of the final asset to receive.\n@param mid The intermediary asset for swaps, if any."
},
"functionSelector": "f3897663",
"id": 376,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "setDefaultUniswapPath",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 374,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 369,
"mutability": "mutable",
"name": "from",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 376,
"src": "15132:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 368,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "15132:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 371,
"mutability": "mutable",
"name": "to",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 376,
"src": "15146:10:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 370,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "15146:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 373,
"mutability": "mutable",
"name": "mid",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 376,
"src": "15158:11:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 372,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "15158:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "15131:39:0"
},
"returnParameters": {
"id": 375,
"nodeType": "ParameterList",
"parameters": [],
"src": "15179:0:0"
},
"scope": 507,
"src": "15101:79:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 377,
"nodeType": "StructuredDocumentation",
"src": "15186:346:0",
"text": "@dev Sets the validity of a Pool Delegate (those allowed to create Pools). \n@dev Only the Governor can call this function. \n@dev It emits a `PoolDelegateSet` event. \n@param poolDelegate The address to manage permissions for.\n@param valid The new validity status of a Pool Delegate."
},
"functionSelector": "efdb16fc",
"id": 384,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "setPoolDelegateAllowlist",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 382,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 379,
"mutability": "mutable",
"name": "poolDelegate",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 384,
"src": "15571:20:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 378,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "15571:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 381,
"mutability": "mutable",
"name": "valid",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 384,
"src": "15593:10:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 380,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "15593:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "15570:34:0"
},
"returnParameters": {
"id": 383,
"nodeType": "ParameterList",
"parameters": [],
"src": "15613:0:0"
},
"scope": 507,
"src": "15537:77:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 385,
"nodeType": "StructuredDocumentation",
"src": "15620:308:0",
"text": "@dev Sets the validity of an asset for collateral. \n@dev Only the Governor can call this function. \n@dev It emits a `CollateralAssetSet` event. \n@param asset The asset to assign validity to.\n@param valid The new validity status of a Collateral Asset."
},
"functionSelector": "2fa6c88f",
"id": 392,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "setCollateralAsset",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 390,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 387,
"mutability": "mutable",
"name": "asset",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 392,
"src": "15961:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 386,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "15961:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 389,
"mutability": "mutable",
"name": "valid",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 392,
"src": "15976:10:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 388,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "15976:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "15960:27:0"
},
"returnParameters": {
"id": 391,
"nodeType": "ParameterList",
"parameters": [],
"src": "15996:0:0"
},
"scope": 507,
"src": "15933:64:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 393,
"nodeType": "StructuredDocumentation",
"src": "16003:320:0",
"text": "@dev Sets the validity of an asset for liquidity in Pools. \n@dev Only the Governor can call this function. \n@dev It emits a `LiquidityAssetSet` event. \n@param asset The asset to assign validity to.\n@param valid The new validity status a Liquidity Asset in Pools."
},
"functionSelector": "2daa0d89",
"id": 400,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "setLiquidityAsset",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 398,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 395,
"mutability": "mutable",
"name": "asset",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 400,
"src": "16355:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 394,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "16355:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 397,
"mutability": "mutable",
"name": "valid",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 400,
"src": "16370:10:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 396,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "16370:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "16354:27:0"
},
"returnParameters": {
"id": 399,
"nodeType": "ParameterList",
"parameters": [],
"src": "16390:0:0"
},
"scope": 507,
"src": "16328:63:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 401,
"nodeType": "StructuredDocumentation",
"src": "16397:236:0",
"text": "@dev Sets the validity of a calculator contract. \n@dev Only the Governor can call this function. \n@param calc The Calculator address.\n@param valid The new validity status of a Calculator."
},
"functionSelector": "be44ed6b",
"id": 408,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "setCalc",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 406,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 403,
"mutability": "mutable",
"name": "calc",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 408,
"src": "16655:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 402,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "16655:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 405,
"mutability": "mutable",
"name": "valid",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 408,
"src": "16669:10:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 404,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "16669:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "16654:26:0"
},
"returnParameters": {
"id": 407,
"nodeType": "ParameterList",
"parameters": [],
"src": "16689:0:0"
},
"scope": 507,
"src": "16638:52:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 409,
"nodeType": "StructuredDocumentation",
"src": "16696:225:0",
"text": "@dev Sets the investor fee (in basis points). \n@dev Only the Governor can call this function. \n@dev It emits a `GlobalsParamSet` event. \n@param _fee The fee, e.g., 50 = 0.50%."
},
"functionSelector": "5e045467",
"id": 414,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "setInvestorFee",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 412,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 411,
"mutability": "mutable",
"name": "_fee",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 414,
"src": "16950:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 410,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "16950:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "16949:14:0"
},
"returnParameters": {
"id": 413,
"nodeType": "ParameterList",
"parameters": [],
"src": "16972:0:0"
},
"scope": 507,
"src": "16926:47:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 415,
"nodeType": "StructuredDocumentation",
"src": "16979:225:0",
"text": "@dev Sets the treasury fee (in basis points). \n@dev Only the Governor can call this function. \n@dev It emits a `GlobalsParamSet` event. \n@param _fee The fee, e.g., 50 = 0.50%."
},
"functionSelector": "77e741c7",
"id": 420,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "setTreasuryFee",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 418,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 417,
"mutability": "mutable",
"name": "_fee",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 420,
"src": "17233:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 416,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "17233:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "17232:14:0"
},
"returnParameters": {
"id": 419,
"nodeType": "ParameterList",
"parameters": [],
"src": "17255:0:0"
},
"scope": 507,
"src": "17209:47:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 421,
"nodeType": "StructuredDocumentation",
"src": "17262:220:0",
"text": "@dev Sets the MapleTreasury. \n@dev Only the Governor can call this function. \n@dev It emits a `GlobalsParamSet` event. \n@param _mapleTreasury A new MapleTreasury address."
},
"functionSelector": "7303de25",
"id": 426,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "setMapleTreasury",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 424,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 423,
"mutability": "mutable",
"name": "_mapleTreasury",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 426,
"src": "17513:22:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 422,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "17513:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "17512:24:0"
},
"returnParameters": {
"id": 425,
"nodeType": "ParameterList",
"parameters": [],
"src": "17545:0:0"
},
"scope": 507,
"src": "17487:59:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 427,
"nodeType": "StructuredDocumentation",
"src": "17552:257:0",
"text": "@dev Sets the default grace period. \n@dev Only the Governor can call this function. \n@dev It emits a `GlobalsParamSet` event. \n@param _defaultGracePeriod The new number of seconds to set the grace period to."
},
"functionSelector": "44c14f71",
"id": 432,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "setDefaultGracePeriod",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 430,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 429,
"mutability": "mutable",
"name": "_defaultGracePeriod",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 432,
"src": "17845:27:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 428,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "17845:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "17844:29:0"
},
"returnParameters": {
"id": 431,
"nodeType": "ParameterList",
"parameters": [],
"src": "17882:0:0"
},
"scope": 507,
"src": "17814:69:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 433,
"nodeType": "StructuredDocumentation",
"src": "17889:285:0",
"text": "@dev Sets the minimum Loan equity. \n@dev Only the Governor can call this function. \n@dev It emits a `GlobalsParamSet` event. \n@param _minLoanEquity The new minimum percentage of Loan equity an account must have to trigger liquidations."
},
"functionSelector": "298b795d",
"id": 438,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "setMinLoanEquity",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 436,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 435,
"mutability": "mutable",
"name": "_minLoanEquity",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 438,
"src": "18205:22:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 434,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "18205:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "18204:24:0"
},
"returnParameters": {
"id": 437,
"nodeType": "ParameterList",
"parameters": [],
"src": "18237:0:0"
},
"scope": 507,
"src": "18179:59:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 439,
"nodeType": "StructuredDocumentation",
"src": "18244:251:0",
"text": "@dev Sets the funding period. \n@dev Only the Governor can call this function. \n@dev It emits a `GlobalsParamSet` event. \n@param _fundingPeriod The number of seconds to set the drawdown grace period to."
},
"functionSelector": "2a5aa292",
"id": 444,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "setFundingPeriod",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 442,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 441,
"mutability": "mutable",
"name": "_fundingPeriod",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 444,
"src": "18526:22:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 440,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "18526:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "18525:24:0"
},
"returnParameters": {
"id": 443,
"nodeType": "ParameterList",
"parameters": [],
"src": "18558:0:0"
},
"scope": 507,
"src": "18500:59:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 445,
"nodeType": "StructuredDocumentation",
"src": "18565:252:0",
"text": "@dev Sets the the minimum Pool cover required to finalize a Pool. \n@dev Only the Governor can call this function. \n@dev It emits a `GlobalsParamSet` event. \n@param amt The new minimum swap out required."
},
"functionSelector": "dbc6c552",
"id": 450,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "setSwapOutRequired",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 448,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 447,
"mutability": "mutable",
"name": "amt",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 450,
"src": "18850:11:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 446,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "18850:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "18849:13:0"
},
"returnParameters": {
"id": 449,
"nodeType": "ParameterList",
"parameters": [],
"src": "18871:0:0"
},
"scope": 507,
"src": "18822:50:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 451,
"nodeType": "StructuredDocumentation",
"src": "18878:282:0",
"text": "@dev Sets a price feed's oracle. \n@dev Only the Governor can call this function. \n@dev It emits a `OracleSet` event. \n@param asset The asset to update price for.\n@param oracle The new Oracle to use for the price of `asset`."
},
"functionSelector": "67a74ddc",
"id": 458,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "setPriceOracle",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 456,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 453,
"mutability": "mutable",
"name": "asset",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 458,
"src": "19189:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 452,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "19189:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 455,
"mutability": "mutable",
"name": "oracle",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 458,
"src": "19204:14:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 454,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "19204:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "19188:31:0"
},
"returnParameters": {
"id": 457,
"nodeType": "ParameterList",
"parameters": [],
"src": "19228:0:0"
},
"scope": 507,
"src": "19165:64:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 459,
"nodeType": "StructuredDocumentation",
"src": "19235:305:0",
"text": "@dev Sets a new Pending Governor. \n@dev This address can become Governor if they accept. \n@dev Only the Governor can call this function. \n@dev It emits a `PendingGovernorSet` event. \n@param _pendingGovernor The address of a new Pending Governor."
},
"functionSelector": "f235757f",
"id": 464,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "setPendingGovernor",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 462,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 461,
"mutability": "mutable",
"name": "_pendingGovernor",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 464,
"src": "19573:24:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 460,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "19573:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "19572:26:0"
},
"returnParameters": {
"id": 463,
"nodeType": "ParameterList",
"parameters": [],
"src": "19607:0:0"
},
"scope": 507,
"src": "19545:63:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 465,
"nodeType": "StructuredDocumentation",
"src": "19614:170:0",
"text": "@dev Accept the Governor position. \n@dev Only the Pending Governor can call this function. \n@dev It emits a `GovernorAccepted` event. "
},
"functionSelector": "e58bb639",
"id": 468,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "acceptGovernor",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 466,
"nodeType": "ParameterList",
"parameters": [],
"src": "19812:2:0"
},
"returnParameters": {
"id": 467,
"nodeType": "ParameterList",
"parameters": [],
"src": "19823:0:0"
},
"scope": 507,
"src": "19789:35:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 469,
"nodeType": "StructuredDocumentation",
"src": "19830:171:0",
"text": "@dev Fetch price for asset from Chainlink oracles.\n@param asset The asset to fetch the price of.\n@return The price of asset in USD."
},
"functionSelector": "16345f18",
"id": 476,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "getLatestPrice",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 472,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 471,
"mutability": "mutable",
"name": "asset",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 476,
"src": "20030:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 470,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "20030:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "20029:15:0"
},
"returnParameters": {
"id": 475,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 474,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 476,
"src": "20068:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 473,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "20068:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "20067:9:0"
},
"scope": 507,
"src": "20006:71:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 477,
"nodeType": "StructuredDocumentation",
"src": "20083:641:0",
"text": "@dev Checks that a `subFactory` is valid as it relates to `superFactory`.\n@param superFactory The core factory (e.g. PoolFactory, LoanFactory).\n@param subFactory The sub factory used by core factory (e.g. LiquidityLockerFactory).\n@param factoryType The type expected for the subFactory. \n0 = COLLATERAL_LOCKER_FACTORY, \n1 = DEBT_LOCKER_FACTORY, \n2 = FUNDING_LOCKER_FACTORY, \n3 = LIQUIDITY_LOCKER_FACTORY, \n4 = STAKE_LOCKER_FACTORY. "
},
"functionSelector": "13d459fb",
"id": 488,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "isValidSubFactory",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 484,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 479,
"mutability": "mutable",
"name": "superFactory",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 488,
"src": "20756:20:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 478,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "20756:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 481,
"mutability": "mutable",
"name": "subFactory",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 488,
"src": "20778:18:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 480,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "20778:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 483,
"mutability": "mutable",
"name": "factoryType",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 488,
"src": "20798:17:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 482,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "20798:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "20755:61:0"
},
"returnParameters": {
"id": 487,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 486,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 488,
"src": "20840:4:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 485,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "20840:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "20839:6:0"
},
"scope": 507,
"src": "20729:117:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 489,
"nodeType": "StructuredDocumentation",
"src": "20852:154:0",
"text": "@dev Checks that a Calculator is valid.\n@param calc The Calculator address.\n@param calcType The Calculator type."
},
"functionSelector": "1b5833f7",
"id": 498,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "isValidCalc",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 494,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 491,
"mutability": "mutable",
"name": "calc",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 498,
"src": "21032:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 490,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "21032:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 493,
"mutability": "mutable",
"name": "calcType",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 498,
"src": "21046:14:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 492,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "21046:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "21031:30:0"
},
"returnParameters": {
"id": 497,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 496,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 498,
"src": "21085:4:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 495,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "21085:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "21084:6:0"
},
"scope": 507,
"src": "21011:80:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 499,
"nodeType": "StructuredDocumentation",
"src": "21097:208:0",
"text": "@dev Returns the `lpCooldownPeriod` and `lpWithdrawWindow` as a tuple, for convenience.\n@return The value of `lpCooldownPeriod`.\n@return The value of `lpWithdrawWindow`."
},
"functionSelector": "9f51290b",
"id": 506,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "getLpCooldownParams",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 500,
"nodeType": "ParameterList",
"parameters": [],
"src": "21338:2:0"
},
"returnParameters": {
"id": 505,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 502,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 506,
"src": "21364:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 501,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "21364:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 504,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 506,
"src": "21373:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 503,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "21373:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "21363:18:0"
},
"scope": 507,
"src": "21310:72:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
}
],
"scope": 1715,
"src": "739:20646:0"
},
{
"abstract": false,
"baseContracts": [],
"contractDependencies": [],
"contractKind": "interface",
"documentation": {
"id": 508,
"nodeType": "StructuredDocumentation",
"src": "21473:42:0",
"text": "@title Oracle is a price oracle feed."
},
"fullyImplemented": false,
"id": 515,
"linearizedBaseContracts": [
515
],
"name": "IOracle",
"nodeType": "ContractDefinition",
"nodes": [
{
"body": null,
"documentation": {
"id": 509,
"nodeType": "StructuredDocumentation",
"src": "21540:56:0",
"text": "@dev Returns the price of the asset."
},
"functionSelector": "8e15f473",
"id": 514,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "getLatestPrice",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 510,
"nodeType": "ParameterList",
"parameters": [],
"src": "21624:2:0"
},
"returnParameters": {
"id": 513,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 512,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 514,
"src": "21650:6:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_int256",
"typeString": "int256"
},
"typeName": {
"id": 511,
"name": "int256",
"nodeType": "ElementaryTypeName",
"src": "21650:6:0",
"typeDescriptions": {
"typeIdentifier": "t_int256",
"typeString": "int256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "21649:8:0"
},
"scope": 515,
"src": "21601:57:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
}
],
"scope": 1715,
"src": "21515:146:0"
},
{
"abstract": false,
"baseContracts": [],
"contractDependencies": [],
"contractKind": "interface",
"documentation": {
"id": 516,
"nodeType": "StructuredDocumentation",
"src": "21757:71:0",
"text": "@title SubFactory creates instances downstream of another factory."
},
"fullyImplemented": false,
"id": 523,
"linearizedBaseContracts": [
523
],
"name": "ISubFactory",
"nodeType": "ContractDefinition",
"nodes": [
{
"body": null,
"documentation": {
"id": 517,
"nodeType": "StructuredDocumentation",
"src": "21857:48:0",
"text": "@dev The type of the factory"
},
"functionSelector": "64e1fd55",
"id": 522,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "factoryType",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 518,
"nodeType": "ParameterList",
"parameters": [],
"src": "21930:2:0"
},
"returnParameters": {
"id": 521,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 520,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 522,
"src": "21956:5:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 519,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "21956:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "21955:7:0"
},
"scope": 523,
"src": "21910:53:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "external"
}
],
"scope": 1715,
"src": "21828:138:0"
},
{
"abstract": false,
"baseContracts": [],
"contractDependencies": [],
"contractKind": "interface",
"documentation": {
"id": 524,
"nodeType": "StructuredDocumentation",
"src": "22074:70:0",
"text": " @dev Interface of the ERC20 standard as defined in the EIP."
},
"fullyImplemented": false,
"id": 599,
"linearizedBaseContracts": [
599
],
"name": "IERC20",
"nodeType": "ContractDefinition",
"nodes": [
{
"body": null,
"documentation": {
"id": 525,
"nodeType": "StructuredDocumentation",
"src": "22168:66:0",
"text": " @dev Returns the amount of tokens in existence."
},
"functionSelector": "18160ddd",
"id": 530,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "totalSupply",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 526,
"nodeType": "ParameterList",
"parameters": [],
"src": "22259:2:0"
},
"returnParameters": {
"id": 529,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 528,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 530,
"src": "22285:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 527,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "22285:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "22284:9:0"
},
"scope": 599,
"src": "22239:55:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 531,
"nodeType": "StructuredDocumentation",
"src": "22300:72:0",
"text": " @dev Returns the amount of tokens owned by `account`."
},
"functionSelector": "70a08231",
"id": 538,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "balanceOf",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 534,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 533,
"mutability": "mutable",
"name": "account",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 538,
"src": "22396:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 532,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "22396:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "22395:17:0"
},
"returnParameters": {
"id": 537,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 536,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 538,
"src": "22436:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 535,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "22436:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "22435:9:0"
},
"scope": 599,
"src": "22377:68:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 539,
"nodeType": "StructuredDocumentation",
"src": "22451:209:0",
"text": " @dev Moves `amount` tokens from the caller's account to `recipient`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."
},
"functionSelector": "a9059cbb",
"id": 548,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "transfer",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 544,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 541,
"mutability": "mutable",
"name": "recipient",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 548,
"src": "22683:17:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 540,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "22683:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 543,
"mutability": "mutable",
"name": "amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 548,
"src": "22702:14:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 542,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "22702:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "22682:35:0"
},
"returnParameters": {
"id": 547,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 546,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 548,
"src": "22736:4:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 545,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "22736:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "22735:6:0"
},
"scope": 599,
"src": "22665:77:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 549,
"nodeType": "StructuredDocumentation",
"src": "22748:264:0",
"text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."
},
"functionSelector": "dd62ed3e",
"id": 558,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "allowance",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 554,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 551,
"mutability": "mutable",
"name": "owner",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 558,
"src": "23036:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 550,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "23036:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 553,
"mutability": "mutable",
"name": "spender",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 558,
"src": "23051:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 552,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "23051:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "23035:32:0"
},
"returnParameters": {
"id": 557,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 556,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 558,
"src": "23091:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 555,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "23091:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "23090:9:0"
},
"scope": 599,
"src": "23017:83:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 559,
"nodeType": "StructuredDocumentation",
"src": "23106:642:0",
"text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."
},
"functionSelector": "095ea7b3",
"id": 568,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "approve",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 564,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 561,
"mutability": "mutable",
"name": "spender",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 568,
"src": "23770:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 560,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "23770:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 563,
"mutability": "mutable",
"name": "amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 568,
"src": "23787:14:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 562,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "23787:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "23769:33:0"
},
"returnParameters": {
"id": 567,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 566,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 568,
"src": "23821:4:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 565,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "23821:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "23820:6:0"
},
"scope": 599,
"src": "23753:74:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 569,
"nodeType": "StructuredDocumentation",
"src": "23833:296:0",
"text": " @dev Moves `amount` tokens from `sender` to `recipient` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."
},
"functionSelector": "23b872dd",
"id": 580,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "transferFrom",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 576,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 571,
"mutability": "mutable",
"name": "sender",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 580,
"src": "24156:14:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 570,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "24156:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 573,
"mutability": "mutable",
"name": "recipient",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 580,
"src": "24172:17:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 572,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "24172:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 575,
"mutability": "mutable",
"name": "amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 580,
"src": "24191:14:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 574,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "24191:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "24155:51:0"
},
"returnParameters": {
"id": 579,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 578,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 580,
"src": "24225:4:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 577,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "24225:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "24224:6:0"
},
"scope": 599,
"src": "24134:97:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"anonymous": false,
"documentation": {
"id": 581,
"nodeType": "StructuredDocumentation",
"src": "24237:158:0",
"text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."
},
"id": 589,
"name": "Transfer",
"nodeType": "EventDefinition",
"parameters": {
"id": 588,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 583,
"indexed": true,
"mutability": "mutable",
"name": "from",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 589,
"src": "24415:20:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 582,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "24415:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 585,
"indexed": true,
"mutability": "mutable",
"name": "to",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 589,
"src": "24437:18:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 584,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "24437:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 587,
"indexed": false,
"mutability": "mutable",
"name": "value",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 589,
"src": "24457:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 586,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "24457:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "24414:57:0"
},
"src": "24400:72:0"
},
{
"anonymous": false,
"documentation": {
"id": 590,
"nodeType": "StructuredDocumentation",
"src": "24478:148:0",
"text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."
},
"id": 598,
"name": "Approval",
"nodeType": "EventDefinition",
"parameters": {
"id": 597,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 592,
"indexed": true,
"mutability": "mutable",
"name": "owner",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 598,
"src": "24646:21:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 591,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "24646:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 594,
"indexed": true,
"mutability": "mutable",
"name": "spender",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 598,
"src": "24669:23:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 593,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "24669:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 596,
"indexed": false,
"mutability": "mutable",
"name": "value",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 598,
"src": "24694:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 595,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "24694:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "24645:63:0"
},
"src": "24631:78:0"
}
],
"scope": 1715,
"src": "22145:2566:0"
},
{
"abstract": false,
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 600,
"name": "IERC20",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 599,
"src": "24925:6:0",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$599",
"typeString": "contract IERC20"
}
},
"id": 601,
"nodeType": "InheritanceSpecifier",
"src": "24925:6:0"
}
],
"contractDependencies": [
599
],
"contractKind": "interface",
"documentation": null,
"fullyImplemented": false,
"id": 617,
"linearizedBaseContracts": [
617,
599
],
"name": "IERC20Details",
"nodeType": "ContractDefinition",
"nodes": [
{
"body": null,
"documentation": null,
"functionSelector": "06fdde03",
"id": 606,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "name",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 602,
"nodeType": "ParameterList",
"parameters": [],
"src": "24952:2:0"
},
"returnParameters": {
"id": 605,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 604,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 606,
"src": "24978:13:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 603,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "24978:6:0",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "24977:15:0"
},
"scope": 617,
"src": "24939:54:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": null,
"functionSelector": "95d89b41",
"id": 611,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "symbol",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 607,
"nodeType": "ParameterList",
"parameters": [],
"src": "25014:2:0"
},
"returnParameters": {
"id": 610,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 609,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 611,
"src": "25040:13:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 608,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "25040:6:0",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "25039:15:0"
},
"scope": 617,
"src": "24999:56:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": null,
"functionSelector": "313ce567",
"id": 616,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "decimals",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 612,
"nodeType": "ParameterList",
"parameters": [],
"src": "25078:2:0"
},
"returnParameters": {
"id": 615,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 614,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 616,
"src": "25104:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 613,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "25104:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "25103:9:0"
},
"scope": 617,
"src": "25061:52:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
}
],
"scope": 1715,
"src": "24898:218:0"
},
{
"abstract": false,
"baseContracts": [],
"contractDependencies": [],
"contractKind": "library",
"documentation": {
"id": 618,
"nodeType": "StructuredDocumentation",
"src": "25219:563:0",
"text": " @dev Wrappers over Solidity's arithmetic operations with added overflow\n checks.\n Arithmetic operations in Solidity wrap on overflow. This can easily result\n in bugs, because programmers usually assume that an overflow raises an\n error, which is the standard behavior in high level programming languages.\n `SafeMath` restores this intuition by reverting the transaction when an\n operation overflows.\n Using this library instead of the unchecked operations eliminates an entire\n class of bugs, so it's recommended to use it always."
},
"fullyImplemented": true,
"id": 811,
"linearizedBaseContracts": [
811
],
"name": "SafeMath",
"nodeType": "ContractDefinition",
"nodes": [
{
"body": {
"id": 643,
"nodeType": "Block",
"src": "26102:109:0",
"statements": [
{
"assignments": [
629
],
"declarations": [
{
"constant": false,
"id": 629,
"mutability": "mutable",
"name": "c",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 643,
"src": "26112:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 628,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "26112:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 633,
"initialValue": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 632,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 630,
"name": "a",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 621,
"src": "26124:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"argumentTypes": null,
"id": 631,
"name": "b",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 623,
"src": "26128:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "26124:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "26112:17:0"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 637,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 635,
"name": "c",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 629,
"src": "26147:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">=",
"rightExpression": {
"argumentTypes": null,
"id": 636,
"name": "a",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 621,
"src": "26152:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "26147:6:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "536166654d6174683a206164646974696f6e206f766572666c6f77",
"id": 638,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "26155:29:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a",
"typeString": "literal_string \"SafeMath: addition overflow\""
},
"value": "SafeMath: addition overflow"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a",
"typeString": "literal_string \"SafeMath: addition overflow\""
}
],
"id": 634,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "26139:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 639,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "26139:46:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 640,
"nodeType": "ExpressionStatement",
"src": "26139:46:0"
},
{
"expression": {
"argumentTypes": null,
"id": 641,
"name": "c",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 629,
"src": "26203:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 627,
"id": 642,
"nodeType": "Return",
"src": "26196:8:0"
}
]
},
"documentation": {
"id": 619,
"nodeType": "StructuredDocumentation",
"src": "25806:224:0",
"text": " @dev Returns the addition of two unsigned integers, reverting on\n overflow.\n Counterpart to Solidity's `+` operator.\n Requirements:\n - Addition cannot overflow."
},
"id": 644,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "add",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 624,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 621,
"mutability": "mutable",
"name": "a",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 644,
"src": "26048:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 620,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "26048:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 623,
"mutability": "mutable",
"name": "b",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 644,
"src": "26059:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 622,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "26059:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "26047:22:0"
},
"returnParameters": {
"id": 627,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 626,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 644,
"src": "26093:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 625,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "26093:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "26092:9:0"
},
"scope": 811,
"src": "26035:176:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 660,
"nodeType": "Block",
"src": "26549:67:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 655,
"name": "a",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 647,
"src": "26570:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 656,
"name": "b",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 649,
"src": "26573:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"hexValue": "536166654d6174683a207375627472616374696f6e206f766572666c6f77",
"id": 657,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "26576:32:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862",
"typeString": "literal_string \"SafeMath: subtraction overflow\""
},
"value": "SafeMath: subtraction overflow"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862",
"typeString": "literal_string \"SafeMath: subtraction overflow\""
}
],
"id": 654,
"name": "sub",
"nodeType": "Identifier",
"overloadedDeclarations": [
661,
689
],
"referencedDeclaration": 689,
"src": "26566:3:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$",
"typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
}
},
"id": 658,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "26566:43:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 653,
"id": 659,
"nodeType": "Return",
"src": "26559:50:0"
}
]
},
"documentation": {
"id": 645,
"nodeType": "StructuredDocumentation",
"src": "26217:260:0",
"text": " @dev Returns the subtraction of two unsigned integers, reverting on\n overflow (when the result is negative).\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow."
},
"id": 661,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "sub",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 650,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 647,
"mutability": "mutable",
"name": "a",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 661,
"src": "26495:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 646,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "26495:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 649,
"mutability": "mutable",
"name": "b",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 661,
"src": "26506:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 648,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "26506:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "26494:22:0"
},
"returnParameters": {
"id": 653,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 652,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 661,
"src": "26540:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 651,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "26540:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "26539:9:0"
},
"scope": 811,
"src": "26482:134:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 688,
"nodeType": "Block",
"src": "27002:92:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 676,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 674,
"name": "b",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 666,
"src": "27020:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<=",
"rightExpression": {
"argumentTypes": null,
"id": 675,
"name": "a",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 664,
"src": "27025:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "27020:6:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"id": 677,
"name": "errorMessage",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 668,
"src": "27028:12:0",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 673,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "27012:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 678,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "27012:29:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 679,
"nodeType": "ExpressionStatement",
"src": "27012:29:0"
},
{
"assignments": [
681
],
"declarations": [
{
"constant": false,
"id": 681,
"mutability": "mutable",
"name": "c",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 688,
"src": "27051:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 680,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "27051:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 685,
"initialValue": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 684,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 682,
"name": "a",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 664,
"src": "27063:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"id": 683,
"name": "b",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 666,
"src": "27067:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "27063:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "27051:17:0"
},
{
"expression": {
"argumentTypes": null,
"id": 686,
"name": "c",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 681,
"src": "27086:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 672,
"id": 687,
"nodeType": "Return",
"src": "27079:8:0"
}
]
},
"documentation": {
"id": 662,
"nodeType": "StructuredDocumentation",
"src": "26622:280:0",
"text": " @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n overflow (when the result is negative).\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow."
},
"id": 689,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "sub",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 669,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 664,
"mutability": "mutable",
"name": "a",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 689,
"src": "26920:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 663,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "26920:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 666,
"mutability": "mutable",
"name": "b",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 689,
"src": "26931:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 665,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "26931:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 668,
"mutability": "mutable",
"name": "errorMessage",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 689,
"src": "26942:26:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 667,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "26942:6:0",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "26919:50:0"
},
"returnParameters": {
"id": 672,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 671,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 689,
"src": "26993:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 670,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "26993:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "26992:9:0"
},
"scope": 811,
"src": "26907:187:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 723,
"nodeType": "Block",
"src": "27408:392:0",
"statements": [
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 701,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 699,
"name": "a",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 692,
"src": "27640:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 700,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "27645:1:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "27640:6:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 705,
"nodeType": "IfStatement",
"src": "27636:45:0",
"trueBody": {
"id": 704,
"nodeType": "Block",
"src": "27648:33:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"hexValue": "30",
"id": 702,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "27669:1:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"functionReturnParameters": 698,
"id": 703,
"nodeType": "Return",
"src": "27662:8:0"
}
]
}
},
{
"assignments": [
707
],
"declarations": [
{
"constant": false,
"id": 707,
"mutability": "mutable",
"name": "c",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 723,
"src": "27691:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 706,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "27691:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 711,
"initialValue": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 710,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 708,
"name": "a",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 692,
"src": "27703:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "*",
"rightExpression": {
"argumentTypes": null,
"id": 709,
"name": "b",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 694,
"src": "27707:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "27703:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "27691:17:0"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 717,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 715,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 713,
"name": "c",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 707,
"src": "27726:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "/",
"rightExpression": {
"argumentTypes": null,
"id": 714,
"name": "a",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 692,
"src": "27730:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "27726:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 716,
"name": "b",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 694,
"src": "27735:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "27726:10:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77",
"id": 718,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "27738:35:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3",
"typeString": "literal_string \"SafeMath: multiplication overflow\""
},
"value": "SafeMath: multiplication overflow"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3",
"typeString": "literal_string \"SafeMath: multiplication overflow\""
}
],
"id": 712,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "27718:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 719,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "27718:56:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 720,
"nodeType": "ExpressionStatement",
"src": "27718:56:0"
},
{
"expression": {
"argumentTypes": null,
"id": 721,
"name": "c",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 707,
"src": "27792:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 698,
"id": 722,
"nodeType": "Return",
"src": "27785:8:0"
}
]
},
"documentation": {
"id": 690,
"nodeType": "StructuredDocumentation",
"src": "27100:236:0",
"text": " @dev Returns the multiplication of two unsigned integers, reverting on\n overflow.\n Counterpart to Solidity's `*` operator.\n Requirements:\n - Multiplication cannot overflow."
},
"id": 724,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "mul",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 695,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 692,
"mutability": "mutable",
"name": "a",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 724,
"src": "27354:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 691,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "27354:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 694,
"mutability": "mutable",
"name": "b",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 724,
"src": "27365:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 693,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "27365:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "27353:22:0"
},
"returnParameters": {
"id": 698,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 697,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 724,
"src": "27399:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 696,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "27399:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "27398:9:0"
},
"scope": 811,
"src": "27341:459:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 740,
"nodeType": "Block",
"src": "28329:63:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 735,
"name": "a",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 727,
"src": "28350:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 736,
"name": "b",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 729,
"src": "28353:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"hexValue": "536166654d6174683a206469766973696f6e206279207a65726f",
"id": 737,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "28356:28:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f",
"typeString": "literal_string \"SafeMath: division by zero\""
},
"value": "SafeMath: division by zero"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f",
"typeString": "literal_string \"SafeMath: division by zero\""
}
],
"id": 734,
"name": "div",
"nodeType": "Identifier",
"overloadedDeclarations": [
741,
769
],
"referencedDeclaration": 769,
"src": "28346:3:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$",
"typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
}
},
"id": 738,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "28346:39:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 733,
"id": 739,
"nodeType": "Return",
"src": "28339:46:0"
}
]
},
"documentation": {
"id": 725,
"nodeType": "StructuredDocumentation",
"src": "27806:451:0",
"text": " @dev Returns the integer division of two unsigned integers. Reverts on\n division by zero. The result is rounded towards zero.\n Counterpart to Solidity's `/` operator. Note: this function uses a\n `revert` opcode (which leaves remaining gas untouched) while Solidity\n uses an invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero."
},
"id": 741,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "div",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 730,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 727,
"mutability": "mutable",
"name": "a",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 741,
"src": "28275:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 726,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "28275:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 729,
"mutability": "mutable",
"name": "b",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 741,
"src": "28286:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 728,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "28286:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "28274:22:0"
},
"returnParameters": {
"id": 733,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 732,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 741,
"src": "28320:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 731,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "28320:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "28319:9:0"
},
"scope": 811,
"src": "28262:130:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 768,
"nodeType": "Block",
"src": "28969:177:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 756,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 754,
"name": "b",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 746,
"src": "28987:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 755,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "28991:1:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "28987:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"id": 757,
"name": "errorMessage",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 748,
"src": "28994:12:0",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 753,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "28979:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 758,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "28979:28:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 759,
"nodeType": "ExpressionStatement",
"src": "28979:28:0"
},
{
"assignments": [
761
],
"declarations": [
{
"constant": false,
"id": 761,
"mutability": "mutable",
"name": "c",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 768,
"src": "29017:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 760,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "29017:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 765,
"initialValue": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 764,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 762,
"name": "a",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 744,
"src": "29029:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "/",
"rightExpression": {
"argumentTypes": null,
"id": 763,
"name": "b",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 746,
"src": "29033:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "29029:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "29017:17:0"
},
{
"expression": {
"argumentTypes": null,
"id": 766,
"name": "c",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 761,
"src": "29138:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 752,
"id": 767,
"nodeType": "Return",
"src": "29131:8:0"
}
]
},
"documentation": {
"id": 742,
"nodeType": "StructuredDocumentation",
"src": "28398:471:0",
"text": " @dev Returns the integer division of two unsigned integers. Reverts with custom message on\n division by zero. The result is rounded towards zero.\n Counterpart to Solidity's `/` operator. Note: this function uses a\n `revert` opcode (which leaves remaining gas untouched) while Solidity\n uses an invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero."
},
"id": 769,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "div",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 749,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 744,
"mutability": "mutable",
"name": "a",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 769,
"src": "28887:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 743,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "28887:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 746,
"mutability": "mutable",
"name": "b",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 769,
"src": "28898:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 745,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "28898:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 748,
"mutability": "mutable",
"name": "errorMessage",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 769,
"src": "28909:26:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 747,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "28909:6:0",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "28886:50:0"
},
"returnParameters": {
"id": 752,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 751,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 769,
"src": "28960:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 750,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "28960:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "28959:9:0"
},
"scope": 811,
"src": "28874:272:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 785,
"nodeType": "Block",
"src": "29664:61:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 780,
"name": "a",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 772,
"src": "29685:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 781,
"name": "b",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 774,
"src": "29688:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"hexValue": "536166654d6174683a206d6f64756c6f206279207a65726f",
"id": 782,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "29691:26:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832",
"typeString": "literal_string \"SafeMath: modulo by zero\""
},
"value": "SafeMath: modulo by zero"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832",
"typeString": "literal_string \"SafeMath: modulo by zero\""
}
],
"id": 779,
"name": "mod",
"nodeType": "Identifier",
"overloadedDeclarations": [
786,
810
],
"referencedDeclaration": 810,
"src": "29681:3:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$",
"typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
}
},
"id": 783,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "29681:37:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 778,
"id": 784,
"nodeType": "Return",
"src": "29674:44:0"
}
]
},
"documentation": {
"id": 770,
"nodeType": "StructuredDocumentation",
"src": "29152:440:0",
"text": " @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n Reverts when dividing by zero.\n Counterpart to Solidity's `%` operator. This function uses a `revert`\n opcode (which leaves remaining gas untouched) while Solidity uses an\n invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero."
},
"id": 786,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "mod",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 775,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 772,
"mutability": "mutable",
"name": "a",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 786,
"src": "29610:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 771,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "29610:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 774,
"mutability": "mutable",
"name": "b",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 786,
"src": "29621:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 773,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "29621:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "29609:22:0"
},
"returnParameters": {
"id": 778,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 777,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 786,
"src": "29655:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 776,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "29655:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "29654:9:0"
},
"scope": 811,
"src": "29597:128:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 809,
"nodeType": "Block",
"src": "30291:68:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 801,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 799,
"name": "b",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 791,
"src": "30309:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 800,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "30314:1:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "30309:6:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"id": 802,
"name": "errorMessage",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 793,
"src": "30317:12:0",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 798,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "30301:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 803,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "30301:29:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 804,
"nodeType": "ExpressionStatement",
"src": "30301:29:0"
},
{
"expression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 807,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 805,
"name": "a",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 789,
"src": "30347:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "%",
"rightExpression": {
"argumentTypes": null,
"id": 806,
"name": "b",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 791,
"src": "30351:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "30347:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 797,
"id": 808,
"nodeType": "Return",
"src": "30340:12:0"
}
]
},
"documentation": {
"id": 787,
"nodeType": "StructuredDocumentation",
"src": "29731:460:0",
"text": " @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n Reverts with custom message when dividing by zero.\n Counterpart to Solidity's `%` operator. This function uses a `revert`\n opcode (which leaves remaining gas untouched) while Solidity uses an\n invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero."
},
"id": 810,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "mod",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 794,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 789,
"mutability": "mutable",
"name": "a",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 810,
"src": "30209:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 788,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "30209:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 791,
"mutability": "mutable",
"name": "b",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 810,
"src": "30220:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 790,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "30220:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 793,
"mutability": "mutable",
"name": "errorMessage",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 810,
"src": "30231:26:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 792,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "30231:6:0",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "30208:50:0"
},
"returnParameters": {
"id": 797,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 796,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 810,
"src": "30282:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 795,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "30282:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "30281:9:0"
},
"scope": 811,
"src": "30196:163:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
}
],
"scope": 1715,
"src": "25783:4578:0"
},
{
"abstract": false,
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 813,
"name": "IMapleGlobals",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 507,
"src": "31112:13:0",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IMapleGlobals_$507",
"typeString": "contract IMapleGlobals"
}
},
"id": 814,
"nodeType": "InheritanceSpecifier",
"src": "31112:13:0"
}
],
"contractDependencies": [
507
],
"contractKind": "contract",
"documentation": {
"id": 812,
"nodeType": "StructuredDocumentation",
"src": "30983:104:0",
"text": "@title MapleGlobals maintains a central source of parameters and allowlists for the Maple protocol."
},
"fullyImplemented": true,
"id": 1714,
"linearizedBaseContracts": [
1714,
507
],
"name": "MapleGlobals",
"nodeType": "ContractDefinition",
"nodes": [
{
"id": 817,
"libraryName": {
"contractScope": null,
"id": 815,
"name": "SafeMath",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 811,
"src": "31139:8:0",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SafeMath_$811",
"typeString": "library SafeMath"
}
},
"nodeType": "UsingForDirective",
"src": "31133:27:0",
"typeName": {
"id": 816,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "31152:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
},
{
"baseFunctions": [
110
],
"constant": false,
"functionSelector": "a0530946",
"id": 820,
"mutability": "immutable",
"name": "mpl",
"nodeType": "VariableDeclaration",
"overrides": {
"id": 819,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "31181:8:0"
},
"scope": 1714,
"src": "31166:37:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 818,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "31166:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "public"
},
{
"baseFunctions": [
116
],
"constant": false,
"functionSelector": "e3056a34",
"id": 823,
"mutability": "mutable",
"name": "pendingGovernor",
"nodeType": "VariableDeclaration",
"overrides": {
"id": 822,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "31225:8:0"
},
"scope": 1714,
"src": "31210:39:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 821,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "31210:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "public"
},
{
"baseFunctions": [
122
],
"constant": false,
"functionSelector": "0c340a24",
"id": 826,
"mutability": "mutable",
"name": "governor",
"nodeType": "VariableDeclaration",
"overrides": {
"id": 825,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "31270:8:0"
},
"scope": 1714,
"src": "31255:32:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 824,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "31255:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "public"
},
{
"baseFunctions": [
128
],
"constant": false,
"functionSelector": "a5a27605",
"id": 829,
"mutability": "mutable",
"name": "mapleTreasury",
"nodeType": "VariableDeclaration",
"overrides": {
"id": 828,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "31308:8:0"
},
"scope": 1714,
"src": "31293:37:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 827,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "31293:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "public"
},
{
"baseFunctions": [
134
],
"constant": false,
"functionSelector": "ec9a9368",
"id": 832,
"mutability": "mutable",
"name": "globalAdmin",
"nodeType": "VariableDeclaration",
"overrides": {
"id": 831,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "31351:8:0"
},
"scope": 1714,
"src": "31336:35:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 830,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "31336:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "public"
},
{
"baseFunctions": [
140
],
"constant": false,
"functionSelector": "705d5f24",
"id": 835,
"mutability": "mutable",
"name": "defaultGracePeriod",
"nodeType": "VariableDeclaration",
"overrides": {
"id": 834,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "31393:8:0"
},
"scope": 1714,
"src": "31378:42:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 833,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "31378:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "public"
},
{
"baseFunctions": [
146
],
"constant": false,
"functionSelector": "3106374c",
"id": 838,
"mutability": "mutable",
"name": "swapOutRequired",
"nodeType": "VariableDeclaration",
"overrides": {
"id": 837,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "31441:8:0"
},
"scope": 1714,
"src": "31426:39:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 836,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "31426:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "public"
},
{
"baseFunctions": [
152
],
"constant": false,
"functionSelector": "74d7c62b",
"id": 841,
"mutability": "mutable",
"name": "fundingPeriod",
"nodeType": "VariableDeclaration",
"overrides": {
"id": 840,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "31486:8:0"
},
"scope": 1714,
"src": "31471:37:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 839,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "31471:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "public"
},
{
"baseFunctions": [
158
],
"constant": false,
"functionSelector": "16a12d7a",
"id": 844,
"mutability": "mutable",
"name": "investorFee",
"nodeType": "VariableDeclaration",
"overrides": {
"id": 843,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "31529:8:0"
},
"scope": 1714,
"src": "31514:35:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 842,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "31514:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "public"
},
{
"baseFunctions": [
164
],
"constant": false,
"functionSelector": "cc32d176",
"id": 847,
"mutability": "mutable",
"name": "treasuryFee",
"nodeType": "VariableDeclaration",
"overrides": {
"id": 846,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "31570:8:0"
},
"scope": 1714,
"src": "31555:35:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 845,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "31555:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "public"
},
{
"baseFunctions": [
170
],
"constant": false,
"functionSelector": "55323195",
"id": 850,
"mutability": "mutable",
"name": "maxSwapSlippage",
"nodeType": "VariableDeclaration",
"overrides": {
"id": 849,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "31611:8:0"
},
"scope": 1714,
"src": "31596:39:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 848,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "31596:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "public"
},
{
"baseFunctions": [
176
],
"constant": false,
"functionSelector": "4a2697c4",
"id": 853,
"mutability": "mutable",
"name": "minLoanEquity",
"nodeType": "VariableDeclaration",
"overrides": {
"id": 852,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "31656:8:0"
},
"scope": 1714,
"src": "31641:37:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 851,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "31641:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "public"
},
{
"baseFunctions": [
182
],
"constant": false,
"functionSelector": "a965d6b5",
"id": 856,
"mutability": "mutable",
"name": "stakerCooldownPeriod",
"nodeType": "VariableDeclaration",
"overrides": {
"id": 855,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "31699:8:0"
},
"scope": 1714,
"src": "31684:44:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 854,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "31684:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "public"
},
{
"baseFunctions": [
188
],
"constant": false,
"functionSelector": "dd02e0ec",
"id": 859,
"mutability": "mutable",
"name": "lpCooldownPeriod",
"nodeType": "VariableDeclaration",
"overrides": {
"id": 858,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "31749:8:0"
},
"scope": 1714,
"src": "31734:40:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 857,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "31734:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "public"
},
{
"baseFunctions": [
194
],
"constant": false,
"functionSelector": "2018b870",
"id": 862,
"mutability": "mutable",
"name": "stakerUnstakeWindow",
"nodeType": "VariableDeclaration",
"overrides": {
"id": 861,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "31795:8:0"
},
"scope": 1714,
"src": "31780:43:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 860,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "31780:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "public"
},
{
"baseFunctions": [
200
],
"constant": false,
"functionSelector": "df3d02bd",
"id": 865,
"mutability": "mutable",
"name": "lpWithdrawWindow",
"nodeType": "VariableDeclaration",
"overrides": {
"id": 864,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "31844:8:0"
},
"scope": 1714,
"src": "31829:40:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 863,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "31829:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "public"
},
{
"baseFunctions": [
206
],
"constant": false,
"functionSelector": "425fad58",
"id": 868,
"mutability": "mutable",
"name": "protocolPaused",
"nodeType": "VariableDeclaration",
"overrides": {
"id": 867,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "31888:8:0"
},
"scope": 1714,
"src": "31876:35:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 866,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "31876:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "public"
},
{
"baseFunctions": [
214
],
"constant": false,
"functionSelector": "8695118a",
"id": 873,
"mutability": "mutable",
"name": "isValidLiquidityAsset",
"nodeType": "VariableDeclaration",
"overrides": {
"id": 872,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "31950:8:0"
},
"scope": 1714,
"src": "31918:62:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"typeName": {
"id": 871,
"keyType": {
"id": 869,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "31926:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "31918:24:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"valueType": {
"id": 870,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "31937:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
},
"value": null,
"visibility": "public"
},
{
"baseFunctions": [
222
],
"constant": false,
"functionSelector": "8c14834b",
"id": 878,
"mutability": "mutable",
"name": "isValidCollateralAsset",
"nodeType": "VariableDeclaration",
"overrides": {
"id": 877,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "32018:8:0"
},
"scope": 1714,
"src": "31986:63:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"typeName": {
"id": 876,
"keyType": {
"id": 874,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "31994:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "31986:24:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"valueType": {
"id": 875,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "32005:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
},
"value": null,
"visibility": "public"
},
{
"baseFunctions": [
230
],
"constant": false,
"functionSelector": "1beb84e7",
"id": 883,
"mutability": "mutable",
"name": "validCalcs",
"nodeType": "VariableDeclaration",
"overrides": {
"id": 882,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "32087:8:0"
},
"scope": 1714,
"src": "32055:51:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"typeName": {
"id": 881,
"keyType": {
"id": 879,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "32063:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "32055:24:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"valueType": {
"id": 880,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "32074:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
},
"value": null,
"visibility": "public"
},
{
"baseFunctions": [
238
],
"constant": false,
"functionSelector": "372e3546",
"id": 888,
"mutability": "mutable",
"name": "isValidPoolDelegate",
"nodeType": "VariableDeclaration",
"overrides": {
"id": 887,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "32144:8:0"
},
"scope": 1714,
"src": "32112:60:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"typeName": {
"id": 886,
"keyType": {
"id": 884,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "32120:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "32112:24:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"valueType": {
"id": 885,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "32131:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
},
"value": null,
"visibility": "public"
},
{
"baseFunctions": [
246
],
"constant": false,
"functionSelector": "72a22d71",
"id": 893,
"mutability": "mutable",
"name": "isValidBalancerPool",
"nodeType": "VariableDeclaration",
"overrides": {
"id": 892,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "32210:8:0"
},
"scope": 1714,
"src": "32178:60:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"typeName": {
"id": 891,
"keyType": {
"id": 889,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "32186:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "32178:24:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"valueType": {
"id": 890,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "32197:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
},
"value": null,
"visibility": "public"
},
{
"baseFunctions": [
256
],
"constant": false,
"functionSelector": "4d866592",
"id": 900,
"mutability": "mutable",
"name": "defaultUniswapPath",
"nodeType": "VariableDeclaration",
"overrides": {
"id": 899,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "32300:8:0"
},
"scope": 1714,
"src": "32245:82:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$",
"typeString": "mapping(address => mapping(address => address))"
},
"typeName": {
"id": 898,
"keyType": {
"id": 894,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "32253:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "32245:47:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$",
"typeString": "mapping(address => mapping(address => address))"
},
"valueType": {
"id": 897,
"keyType": {
"id": 895,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "32272:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "32264:27:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
},
"valueType": {
"id": 896,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "32283:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
}
},
"value": null,
"visibility": "public"
},
{
"baseFunctions": [
264
],
"constant": false,
"functionSelector": "aed019b9",
"id": 905,
"mutability": "mutable",
"name": "oracleFor",
"nodeType": "VariableDeclaration",
"overrides": {
"id": 904,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "32369:8:0"
},
"scope": 1714,
"src": "32334:53:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
},
"typeName": {
"id": 903,
"keyType": {
"id": 901,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "32342:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "32334:27:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
},
"valueType": {
"id": 902,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "32353:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
},
"value": null,
"visibility": "public"
},
{
"baseFunctions": [
272
],
"constant": false,
"functionSelector": "107c0240",
"id": 910,
"mutability": "mutable",
"name": "isValidPoolFactory",
"nodeType": "VariableDeclaration",
"overrides": {
"id": 909,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "32446:8:0"
},
"scope": 1714,
"src": "32394:79:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"typeName": {
"id": 908,
"keyType": {
"id": 906,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "32402:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "32394:24:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"valueType": {
"id": 907,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "32413:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
},
"value": null,
"visibility": "public"
},
{
"baseFunctions": [
280
],
"constant": false,
"functionSelector": "b53afda7",
"id": 915,
"mutability": "mutable",
"name": "isValidLoanFactory",
"nodeType": "VariableDeclaration",
"overrides": {
"id": 914,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "32531:8:0"
},
"scope": 1714,
"src": "32479:79:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"typeName": {
"id": 913,
"keyType": {
"id": 911,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "32487:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "32479:24:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"valueType": {
"id": 912,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "32498:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
},
"value": null,
"visibility": "public"
},
{
"baseFunctions": [
290
],
"constant": false,
"functionSelector": "1b1804aa",
"id": 922,
"mutability": "mutable",
"name": "validSubFactories",
"nodeType": "VariableDeclaration",
"overrides": {
"id": 921,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "32616:8:0"
},
"scope": 1714,
"src": "32564:78:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
"typeString": "mapping(address => mapping(address => bool))"
},
"typeName": {
"id": 920,
"keyType": {
"id": 916,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "32572:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "32564:44:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
"typeString": "mapping(address => mapping(address => bool))"
},
"valueType": {
"id": 919,
"keyType": {
"id": 917,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "32591:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "32583:24:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"valueType": {
"id": 918,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "32602:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
}
},
"value": null,
"visibility": "public"
},
{
"body": {
"id": 934,
"nodeType": "Block",
"src": "32742:73:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 929,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 926,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "32760:3:0",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 927,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "32760:10:0",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 928,
"name": "governor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 826,
"src": "32774:8:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "32760:22:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4d473a4e4f545f474f56",
"id": 930,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "32784:12:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_a336bfafe0b60a43cc9195c4abac027d7e608994423bd3dc4e16a7f23d60c2d0",
"typeString": "literal_string \"MG:NOT_GOV\""
},
"value": "MG:NOT_GOV"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_a336bfafe0b60a43cc9195c4abac027d7e608994423bd3dc4e16a7f23d60c2d0",
"typeString": "literal_string \"MG:NOT_GOV\""
}
],
"id": 925,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "32752:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 931,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "32752:45:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 932,
"nodeType": "ExpressionStatement",
"src": "32752:45:0"
},
{
"id": 933,
"nodeType": "PlaceholderStatement",
"src": "32807:1:0"
}
]
},
"documentation": {
"id": 923,
"nodeType": "StructuredDocumentation",
"src": "32649:66:0",
"text": "@dev Checks that `msg.sender` is the Governor."
},
"id": 935,
"name": "isGovernor",
"nodeType": "ModifierDefinition",
"overrides": null,
"parameters": {
"id": 924,
"nodeType": "ParameterList",
"parameters": [],
"src": "32739:2:0"
},
"src": "32720:95:0",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 1004,
"nodeType": "Block",
"src": "33189:670:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 947,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 945,
"name": "governor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 826,
"src": "33199:8:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 946,
"name": "_governor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 938,
"src": "33222:9:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "33199:32:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 948,
"nodeType": "ExpressionStatement",
"src": "33199:32:0"
},
{
"expression": {
"argumentTypes": null,
"id": 951,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 949,
"name": "mpl",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 820,
"src": "33241:3:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 950,
"name": "_mpl",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 940,
"src": "33264:4:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "33241:27:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 952,
"nodeType": "ExpressionStatement",
"src": "33241:27:0"
},
{
"expression": {
"argumentTypes": null,
"id": 955,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 953,
"name": "swapOutRequired",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 838,
"src": "33278:15:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "31305f303030",
"id": 954,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "33301:6:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_10000_by_1",
"typeString": "int_const 10000"
},
"value": "10_000"
},
"src": "33278:29:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 956,
"nodeType": "ExpressionStatement",
"src": "33278:29:0"
},
{
"expression": {
"argumentTypes": null,
"id": 959,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 957,
"name": "fundingPeriod",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 841,
"src": "33346:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "3130",
"id": 958,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "33369:7:0",
"subdenomination": "days",
"typeDescriptions": {
"typeIdentifier": "t_rational_864000_by_1",
"typeString": "int_const 864000"
},
"value": "10"
},
"src": "33346:30:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 960,
"nodeType": "ExpressionStatement",
"src": "33346:30:0"
},
{
"expression": {
"argumentTypes": null,
"id": 963,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 961,
"name": "defaultGracePeriod",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 835,
"src": "33386:18:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "35",
"id": 962,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "33409:6:0",
"subdenomination": "days",
"typeDescriptions": {
"typeIdentifier": "t_rational_432000_by_1",
"typeString": "int_const 432000"
},
"value": "5"
},
"src": "33386:29:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 964,
"nodeType": "ExpressionStatement",
"src": "33386:29:0"
},
{
"expression": {
"argumentTypes": null,
"id": 967,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 965,
"name": "investorFee",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 844,
"src": "33425:11:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "3530",
"id": 966,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "33448:2:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_50_by_1",
"typeString": "int_const 50"
},
"value": "50"
},
"src": "33425:25:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 968,
"nodeType": "ExpressionStatement",
"src": "33425:25:0"
},
{
"expression": {
"argumentTypes": null,
"id": 971,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 969,
"name": "treasuryFee",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 847,
"src": "33477:11:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "3530",
"id": 970,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "33500:2:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_50_by_1",
"typeString": "int_const 50"
},
"value": "50"
},
"src": "33477:25:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 972,
"nodeType": "ExpressionStatement",
"src": "33477:25:0"
},
{
"expression": {
"argumentTypes": null,
"id": 975,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 973,
"name": "maxSwapSlippage",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 850,
"src": "33529:15:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "31303030",
"id": 974,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "33552:4:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1000_by_1",
"typeString": "int_const 1000"
},
"value": "1000"
},
"src": "33529:27:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 976,
"nodeType": "ExpressionStatement",
"src": "33529:27:0"
},
{
"expression": {
"argumentTypes": null,
"id": 979,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 977,
"name": "minLoanEquity",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 853,
"src": "33580:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "32303030",
"id": 978,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "33603:4:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_2000_by_1",
"typeString": "int_const 2000"
},
"value": "2000"
},
"src": "33580:27:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 980,
"nodeType": "ExpressionStatement",
"src": "33580:27:0"
},
{
"expression": {
"argumentTypes": null,
"id": 983,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 981,
"name": "globalAdmin",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 832,
"src": "33631:11:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 982,
"name": "_globalAdmin",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 942,
"src": "33654:12:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "33631:35:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 984,
"nodeType": "ExpressionStatement",
"src": "33631:35:0"
},
{
"expression": {
"argumentTypes": null,
"id": 987,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 985,
"name": "stakerCooldownPeriod",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 856,
"src": "33676:20:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "3130",
"id": 986,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "33699:7:0",
"subdenomination": "days",
"typeDescriptions": {
"typeIdentifier": "t_rational_864000_by_1",
"typeString": "int_const 864000"
},
"value": "10"
},
"src": "33676:30:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 988,
"nodeType": "ExpressionStatement",
"src": "33676:30:0"
},
{
"expression": {
"argumentTypes": null,
"id": 991,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 989,
"name": "lpCooldownPeriod",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 859,
"src": "33716:16:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "3130",
"id": 990,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "33739:7:0",
"subdenomination": "days",
"typeDescriptions": {
"typeIdentifier": "t_rational_864000_by_1",
"typeString": "int_const 864000"
},
"value": "10"
},
"src": "33716:30:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 992,
"nodeType": "ExpressionStatement",
"src": "33716:30:0"
},
{
"expression": {
"argumentTypes": null,
"id": 995,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 993,
"name": "stakerUnstakeWindow",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 862,
"src": "33756:19:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "32",
"id": 994,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "33779:6:0",
"subdenomination": "days",
"typeDescriptions": {
"typeIdentifier": "t_rational_172800_by_1",
"typeString": "int_const 172800"
},
"value": "2"
},
"src": "33756:29:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 996,
"nodeType": "ExpressionStatement",
"src": "33756:29:0"
},
{
"expression": {
"argumentTypes": null,
"id": 999,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 997,
"name": "lpWithdrawWindow",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 865,
"src": "33795:16:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "32",
"id": 998,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "33818:6:0",
"subdenomination": "days",
"typeDescriptions": {
"typeIdentifier": "t_rational_172800_by_1",
"typeString": "int_const 172800"
},
"value": "2"
},
"src": "33795:29:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1000,
"nodeType": "ExpressionStatement",
"src": "33795:29:0"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 1001,
"name": "Initialized",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 20,
"src": "33839:11:0",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$__$returns$__$",
"typeString": "function ()"
}
},
"id": 1002,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "33839:13:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1003,
"nodeType": "EmitStatement",
"src": "33834:18:0"
}
]
},
"documentation": {
"id": 936,
"nodeType": "StructuredDocumentation",
"src": "32821:289:0",
"text": "@dev Constructor function. \n@dev It emits an `Initialized` event. \n@param _governor Address of Governor.\n@param _mpl Address of the ERC-2222 Maple Token for the Maple protocol.\n@param _globalAdmin Address the Global Admin."
},
"id": 1005,
"implemented": true,
"kind": "constructor",
"modifiers": [],
"name": "",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 943,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 938,
"mutability": "mutable",
"name": "_governor",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1005,
"src": "33127:17:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 937,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "33127:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 940,
"mutability": "mutable",
"name": "_mpl",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1005,
"src": "33146:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 939,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "33146:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 942,
"mutability": "mutable",
"name": "_globalAdmin",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1005,
"src": "33160:20:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 941,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "33160:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "33126:55:0"
},
"returnParameters": {
"id": 944,
"nodeType": "ParameterList",
"parameters": [],
"src": "33189:0:0"
},
"scope": 1714,
"src": "33115:744:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
296
],
"body": {
"id": 1022,
"nodeType": "Block",
"src": "34048:132:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1015,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1013,
"name": "stakerCooldownPeriod",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 856,
"src": "34058:20:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1014,
"name": "newCooldownPeriod",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1007,
"src": "34081:17:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "34058:40:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1016,
"nodeType": "ExpressionStatement",
"src": "34058:40:0"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "5354414b45525f434f4f4c444f574e5f504552494f44",
"id": 1018,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "34129:24:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_ef56b13285c587464edaf6e43104ab5e837cf3c2f6325e8c98276a1e43a66237",
"typeString": "literal_string \"STAKER_COOLDOWN_PERIOD\""
},
"value": "STAKER_COOLDOWN_PERIOD"
},
{
"argumentTypes": null,
"id": 1019,
"name": "newCooldownPeriod",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1007,
"src": "34155:17:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_stringliteral_ef56b13285c587464edaf6e43104ab5e837cf3c2f6325e8c98276a1e43a66237",
"typeString": "literal_string \"STAKER_COOLDOWN_PERIOD\""
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1017,
"name": "GlobalsParamSet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 80,
"src": "34113:15:0",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
"typeString": "function (bytes32,uint256)"
}
},
"id": 1020,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "34113:60:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1021,
"nodeType": "EmitStatement",
"src": "34108:65:0"
}
]
},
"documentation": null,
"functionSelector": "fd4a9121",
"id": 1023,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 1011,
"modifierName": {
"argumentTypes": null,
"id": 1010,
"name": "isGovernor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 935,
"src": "34037:10:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "34037:10:0"
}
],
"name": "setStakerCooldownPeriod",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 1009,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "34028:8:0"
},
"parameters": {
"id": 1008,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1007,
"mutability": "mutable",
"name": "newCooldownPeriod",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1023,
"src": "33992:25:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1006,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "33992:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "33991:27:0"
},
"returnParameters": {
"id": 1012,
"nodeType": "ParameterList",
"parameters": [],
"src": "34048:0:0"
},
"scope": 1714,
"src": "33959:221:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
302
],
"body": {
"id": 1040,
"nodeType": "Block",
"src": "34271:124:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1033,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1031,
"name": "lpCooldownPeriod",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 859,
"src": "34281:16:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1032,
"name": "newCooldownPeriod",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1025,
"src": "34300:17:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "34281:36:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1034,
"nodeType": "ExpressionStatement",
"src": "34281:36:0"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "4c505f434f4f4c444f574e5f504552494f44",
"id": 1036,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "34348:20:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_a33332c6bfc68ef4e9954771036433b5f6577ab93253e87d3ab1877948ba5ec7",
"typeString": "literal_string \"LP_COOLDOWN_PERIOD\""
},
"value": "LP_COOLDOWN_PERIOD"
},
{
"argumentTypes": null,
"id": 1037,
"name": "newCooldownPeriod",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1025,
"src": "34370:17:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_stringliteral_a33332c6bfc68ef4e9954771036433b5f6577ab93253e87d3ab1877948ba5ec7",
"typeString": "literal_string \"LP_COOLDOWN_PERIOD\""
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1035,
"name": "GlobalsParamSet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 80,
"src": "34332:15:0",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
"typeString": "function (bytes32,uint256)"
}
},
"id": 1038,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "34332:56:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1039,
"nodeType": "EmitStatement",
"src": "34327:61:0"
}
]
},
"documentation": null,
"functionSelector": "8608a6e1",
"id": 1041,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 1029,
"modifierName": {
"argumentTypes": null,
"id": 1028,
"name": "isGovernor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 935,
"src": "34260:10:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "34260:10:0"
}
],
"name": "setLpCooldownPeriod",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 1027,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "34251:8:0"
},
"parameters": {
"id": 1026,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1025,
"mutability": "mutable",
"name": "newCooldownPeriod",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1041,
"src": "34215:25:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1024,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "34215:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "34214:27:0"
},
"returnParameters": {
"id": 1030,
"nodeType": "ParameterList",
"parameters": [],
"src": "34271:0:0"
},
"scope": 1714,
"src": "34186:209:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
308
],
"body": {
"id": 1058,
"nodeType": "Block",
"src": "34488:128:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1051,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1049,
"name": "stakerUnstakeWindow",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 862,
"src": "34498:19:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1050,
"name": "newUnstakeWindow",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1043,
"src": "34520:16:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "34498:38:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1052,
"nodeType": "ExpressionStatement",
"src": "34498:38:0"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "5354414b45525f554e5354414b455f57494e444f57",
"id": 1054,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "34567:23:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_4733ccca31b1557d7693ad10530a7a06070e43999bec4404d094a6dd2e732693",
"typeString": "literal_string \"STAKER_UNSTAKE_WINDOW\""
},
"value": "STAKER_UNSTAKE_WINDOW"
},
{
"argumentTypes": null,
"id": 1055,
"name": "newUnstakeWindow",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1043,
"src": "34592:16:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_stringliteral_4733ccca31b1557d7693ad10530a7a06070e43999bec4404d094a6dd2e732693",
"typeString": "literal_string \"STAKER_UNSTAKE_WINDOW\""
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1053,
"name": "GlobalsParamSet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 80,
"src": "34551:15:0",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
"typeString": "function (bytes32,uint256)"
}
},
"id": 1056,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "34551:58:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1057,
"nodeType": "EmitStatement",
"src": "34546:63:0"
}
]
},
"documentation": null,
"functionSelector": "d1cdf301",
"id": 1059,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 1047,
"modifierName": {
"argumentTypes": null,
"id": 1046,
"name": "isGovernor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 935,
"src": "34477:10:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "34477:10:0"
}
],
"name": "setStakerUnstakeWindow",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 1045,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "34468:8:0"
},
"parameters": {
"id": 1044,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1043,
"mutability": "mutable",
"name": "newUnstakeWindow",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1059,
"src": "34433:24:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1042,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "34433:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "34432:26:0"
},
"returnParameters": {
"id": 1048,
"nodeType": "ParameterList",
"parameters": [],
"src": "34488:0:0"
},
"scope": 1714,
"src": "34401:215:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
314
],
"body": {
"id": 1076,
"nodeType": "Block",
"src": "34709:128:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1069,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1067,
"name": "lpWithdrawWindow",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 865,
"src": "34719:16:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1068,
"name": "newLpWithdrawWindow",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1061,
"src": "34738:19:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "34719:38:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1070,
"nodeType": "ExpressionStatement",
"src": "34719:38:0"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "4c505f57495448445241575f57494e444f57",
"id": 1072,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "34788:20:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_861d5452a16224655a5ec22396d5a36e8e577cfd4460f0cadd3d04a9f11349cc",
"typeString": "literal_string \"LP_WITHDRAW_WINDOW\""
},
"value": "LP_WITHDRAW_WINDOW"
},
{
"argumentTypes": null,
"id": 1073,
"name": "newLpWithdrawWindow",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1061,
"src": "34810:19:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_stringliteral_861d5452a16224655a5ec22396d5a36e8e577cfd4460f0cadd3d04a9f11349cc",
"typeString": "literal_string \"LP_WITHDRAW_WINDOW\""
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1071,
"name": "GlobalsParamSet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 80,
"src": "34772:15:0",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
"typeString": "function (bytes32,uint256)"
}
},
"id": 1074,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "34772:58:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1075,
"nodeType": "EmitStatement",
"src": "34767:63:0"
}
]
},
"documentation": null,
"functionSelector": "26718606",
"id": 1077,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 1065,
"modifierName": {
"argumentTypes": null,
"id": 1064,
"name": "isGovernor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 935,
"src": "34698:10:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "34698:10:0"
}
],
"name": "setLpWithdrawWindow",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 1063,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "34689:8:0"
},
"parameters": {
"id": 1062,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1061,
"mutability": "mutable",
"name": "newLpWithdrawWindow",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1077,
"src": "34651:27:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1060,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "34651:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "34650:29:0"
},
"returnParameters": {
"id": 1066,
"nodeType": "ParameterList",
"parameters": [],
"src": "34709:0:0"
},
"scope": 1714,
"src": "34622:215:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
320
],
"body": {
"id": 1098,
"nodeType": "Block",
"src": "34924:163:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1086,
"name": "newMaxSlippage",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1079,
"src": "34956:14:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1085,
"name": "_checkPercentageRange",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1713,
"src": "34934:21:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$",
"typeString": "function (uint256) pure"
}
},
"id": 1087,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "34934:37:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1088,
"nodeType": "ExpressionStatement",
"src": "34934:37:0"
},
{
"expression": {
"argumentTypes": null,
"id": 1091,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1089,
"name": "maxSwapSlippage",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 850,
"src": "34981:15:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1090,
"name": "newMaxSlippage",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1079,
"src": "34999:14:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "34981:32:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1092,
"nodeType": "ExpressionStatement",
"src": "34981:32:0"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "4d41585f535741505f534c495050414745",
"id": 1094,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "35044:19:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_a66356a206dfe10fe1a93c338253a6a9a9b3a16b7e21d2a0ee51c3da7ad680e7",
"typeString": "literal_string \"MAX_SWAP_SLIPPAGE\""
},
"value": "MAX_SWAP_SLIPPAGE"
},
{
"argumentTypes": null,
"id": 1095,
"name": "newMaxSlippage",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1079,
"src": "35065:14:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_stringliteral_a66356a206dfe10fe1a93c338253a6a9a9b3a16b7e21d2a0ee51c3da7ad680e7",
"typeString": "literal_string \"MAX_SWAP_SLIPPAGE\""
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1093,
"name": "GlobalsParamSet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 80,
"src": "35028:15:0",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
"typeString": "function (bytes32,uint256)"
}
},
"id": 1096,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "35028:52:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1097,
"nodeType": "EmitStatement",
"src": "35023:57:0"
}
]
},
"documentation": null,
"functionSelector": "f33ef09a",
"id": 1099,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 1083,
"modifierName": {
"argumentTypes": null,
"id": 1082,
"name": "isGovernor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 935,
"src": "34913:10:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "34913:10:0"
}
],
"name": "setMaxSwapSlippage",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 1081,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "34904:8:0"
},
"parameters": {
"id": 1080,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1079,
"mutability": "mutable",
"name": "newMaxSlippage",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1099,
"src": "34871:22:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1078,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "34871:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "34870:24:0"
},
"returnParameters": {
"id": 1084,
"nodeType": "ParameterList",
"parameters": [],
"src": "34924:0:0"
},
"scope": 1714,
"src": "34843:244:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
326
],
"body": {
"id": 1134,
"nodeType": "Block",
"src": "35159:239:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 1116,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1109,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1106,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "35177:3:0",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1107,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "35177:10:0",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 1108,
"name": "governor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 826,
"src": "35191:8:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "35177:22:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1115,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1110,
"name": "newGlobalAdmin",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1101,
"src": "35203:14:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 1113,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "35229:1:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 1112,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "35221:7:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 1111,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "35221:7:0",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1114,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "35221:10:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"src": "35203:28:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "35177:54:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4d473a4e4f545f474f565f4f525f41444d494e",
"id": 1117,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "35233:21:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_1347ce2fe426e9f9bf0b25a9ea3ea5c830bd2cf244d3ba898ac9b300ab87107f",
"typeString": "literal_string \"MG:NOT_GOV_OR_ADMIN\""
},
"value": "MG:NOT_GOV_OR_ADMIN"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_1347ce2fe426e9f9bf0b25a9ea3ea5c830bd2cf244d3ba898ac9b300ab87107f",
"typeString": "literal_string \"MG:NOT_GOV_OR_ADMIN\""
}
],
"id": 1105,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "35169:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 1118,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "35169:86:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1119,
"nodeType": "ExpressionStatement",
"src": "35169:86:0"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1122,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "35273:15:0",
"subExpression": {
"argumentTypes": null,
"id": 1121,
"name": "protocolPaused",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 868,
"src": "35274:14:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4d473a50524f544f5f504155534544",
"id": 1123,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "35290:17:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_37dc3fb2a7244c30fa765df92ec92cc106d3e792cafdc19aef6fa5f022b07d70",
"typeString": "literal_string \"MG:PROTO_PAUSED\""
},
"value": "MG:PROTO_PAUSED"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_37dc3fb2a7244c30fa765df92ec92cc106d3e792cafdc19aef6fa5f022b07d70",
"typeString": "literal_string \"MG:PROTO_PAUSED\""
}
],
"id": 1120,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "35265:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 1124,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "35265:43:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1125,
"nodeType": "ExpressionStatement",
"src": "35265:43:0"
},
{
"expression": {
"argumentTypes": null,
"id": 1128,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1126,
"name": "globalAdmin",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 832,
"src": "35318:11:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1127,
"name": "newGlobalAdmin",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1101,
"src": "35332:14:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "35318:28:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1129,
"nodeType": "ExpressionStatement",
"src": "35318:28:0"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1131,
"name": "newGlobalAdmin",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1101,
"src": "35376:14:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1130,
"name": "GlobalAdminSet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 97,
"src": "35361:14:0",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
"typeString": "function (address)"
}
},
"id": 1132,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "35361:30:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1133,
"nodeType": "EmitStatement",
"src": "35356:35:0"
}
]
},
"documentation": null,
"functionSelector": "c52bc31d",
"id": 1135,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "setGlobalAdmin",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 1103,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "35150:8:0"
},
"parameters": {
"id": 1102,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1101,
"mutability": "mutable",
"name": "newGlobalAdmin",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1135,
"src": "35117:22:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1100,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "35117:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "35116:24:0"
},
"returnParameters": {
"id": 1104,
"nodeType": "ParameterList",
"parameters": [],
"src": "35159:0:0"
},
"scope": 1714,
"src": "35093:305:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
334
],
"body": {
"id": 1156,
"nodeType": "Block",
"src": "35497:109:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1149,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1145,
"name": "isValidBalancerPool",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 893,
"src": "35507:19:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1147,
"indexExpression": {
"argumentTypes": null,
"id": 1146,
"name": "balancerPool",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1137,
"src": "35527:12:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "35507:33:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1148,
"name": "valid",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1139,
"src": "35543:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "35507:41:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1150,
"nodeType": "ExpressionStatement",
"src": "35507:41:0"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1152,
"name": "balancerPool",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1137,
"src": "35579:12:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 1153,
"name": "valid",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1139,
"src": "35593:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1151,
"name": "BalancerPoolSet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 63,
"src": "35563:15:0",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bool_$returns$__$",
"typeString": "function (address,bool)"
}
},
"id": 1154,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "35563:36:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1155,
"nodeType": "EmitStatement",
"src": "35558:41:0"
}
]
},
"documentation": null,
"functionSelector": "490dae64",
"id": 1157,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 1143,
"modifierName": {
"argumentTypes": null,
"id": 1142,
"name": "isGovernor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 935,
"src": "35486:10:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "35486:10:0"
}
],
"name": "setValidBalancerPool",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 1141,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "35477:8:0"
},
"parameters": {
"id": 1140,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1137,
"mutability": "mutable",
"name": "balancerPool",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1157,
"src": "35434:20:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1136,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "35434:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1139,
"mutability": "mutable",
"name": "valid",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1157,
"src": "35456:10:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 1138,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "35456:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "35433:34:0"
},
"returnParameters": {
"id": 1144,
"nodeType": "ParameterList",
"parameters": [],
"src": "35497:0:0"
},
"scope": 1714,
"src": "35404:202:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
340
],
"body": {
"id": 1179,
"nodeType": "Block",
"src": "35668:135:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1167,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1164,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "35686:3:0",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1165,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "35686:10:0",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 1166,
"name": "globalAdmin",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 832,
"src": "35700:11:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "35686:25:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4d473a4e4f545f41444d494e",
"id": 1168,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "35713:14:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_dcaacb6636abadc4fd7184d6ecfb89225f8f1b3aec41a42acb1443b791985cb1",
"typeString": "literal_string \"MG:NOT_ADMIN\""
},
"value": "MG:NOT_ADMIN"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_dcaacb6636abadc4fd7184d6ecfb89225f8f1b3aec41a42acb1443b791985cb1",
"typeString": "literal_string \"MG:NOT_ADMIN\""
}
],
"id": 1163,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "35678:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 1169,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "35678:50:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1170,
"nodeType": "ExpressionStatement",
"src": "35678:50:0"
},
{
"expression": {
"argumentTypes": null,
"id": 1173,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1171,
"name": "protocolPaused",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 868,
"src": "35738:14:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1172,
"name": "pause",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1159,
"src": "35755:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "35738:22:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1174,
"nodeType": "ExpressionStatement",
"src": "35738:22:0"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1176,
"name": "pause",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1159,
"src": "35790:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1175,
"name": "ProtocolPaused",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 92,
"src": "35775:14:0",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_bool_$returns$__$",
"typeString": "function (bool)"
}
},
"id": 1177,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "35775:21:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1178,
"nodeType": "EmitStatement",
"src": "35770:26:0"
}
]
},
"documentation": null,
"functionSelector": "4e989118",
"id": 1180,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "setProtocolPause",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 1161,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "35659:8:0"
},
"parameters": {
"id": 1160,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1159,
"mutability": "mutable",
"name": "pause",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1180,
"src": "35638:10:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 1158,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "35638:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "35637:12:0"
},
"returnParameters": {
"id": 1162,
"nodeType": "ParameterList",
"parameters": [],
"src": "35668:0:0"
},
"scope": 1714,
"src": "35612:191:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
348
],
"body": {
"id": 1196,
"nodeType": "Block",
"src": "35900:56:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1194,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1190,
"name": "isValidPoolFactory",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 910,
"src": "35910:18:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1192,
"indexExpression": {
"argumentTypes": null,
"id": 1191,
"name": "poolFactory",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1182,
"src": "35929:11:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "35910:31:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1193,
"name": "valid",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1184,
"src": "35944:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "35910:39:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1195,
"nodeType": "ExpressionStatement",
"src": "35910:39:0"
}
]
},
"documentation": null,
"functionSelector": "6597b899",
"id": 1197,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 1188,
"modifierName": {
"argumentTypes": null,
"id": 1187,
"name": "isGovernor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 935,
"src": "35889:10:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "35889:10:0"
}
],
"name": "setValidPoolFactory",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 1186,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "35880:8:0"
},
"parameters": {
"id": 1185,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1182,
"mutability": "mutable",
"name": "poolFactory",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1197,
"src": "35838:19:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1181,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "35838:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1184,
"mutability": "mutable",
"name": "valid",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1197,
"src": "35859:10:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 1183,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "35859:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "35837:33:0"
},
"returnParameters": {
"id": 1189,
"nodeType": "ParameterList",
"parameters": [],
"src": "35900:0:0"
},
"scope": 1714,
"src": "35809:147:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
356
],
"body": {
"id": 1213,
"nodeType": "Block",
"src": "36053:56:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1211,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1207,
"name": "isValidLoanFactory",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 915,
"src": "36063:18:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1209,
"indexExpression": {
"argumentTypes": null,
"id": 1208,
"name": "loanFactory",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1199,
"src": "36082:11:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "36063:31:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1210,
"name": "valid",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1201,
"src": "36097:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "36063:39:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1212,
"nodeType": "ExpressionStatement",
"src": "36063:39:0"
}
]
},
"documentation": null,
"functionSelector": "c9c67240",
"id": 1214,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 1205,
"modifierName": {
"argumentTypes": null,
"id": 1204,
"name": "isGovernor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 935,
"src": "36042:10:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "36042:10:0"
}
],
"name": "setValidLoanFactory",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 1203,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "36033:8:0"
},
"parameters": {
"id": 1202,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1199,
"mutability": "mutable",
"name": "loanFactory",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1214,
"src": "35991:19:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1198,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "35991:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1201,
"mutability": "mutable",
"name": "valid",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1214,
"src": "36012:10:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 1200,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "36012:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "35990:33:0"
},
"returnParameters": {
"id": 1206,
"nodeType": "ParameterList",
"parameters": [],
"src": "36053:0:0"
},
"scope": 1714,
"src": "35962:147:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
366
],
"body": {
"id": 1245,
"nodeType": "Block",
"src": "36226:177:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 1233,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1227,
"name": "isValidLoanFactory",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 915,
"src": "36244:18:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1229,
"indexExpression": {
"argumentTypes": null,
"id": 1228,
"name": "superFactory",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1216,
"src": "36263:12:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "36244:32:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "||",
"rightExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1230,
"name": "isValidPoolFactory",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 910,
"src": "36280:18:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1232,
"indexExpression": {
"argumentTypes": null,
"id": 1231,
"name": "superFactory",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1216,
"src": "36299:12:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "36280:32:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "36244:68:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4d473a494e56414c49445f53555045525f46",
"id": 1234,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "36314:20:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_d51b75b159f367af6102f55650793287bac863d75a1e881158e55b9ca7ca6d53",
"typeString": "literal_string \"MG:INVALID_SUPER_F\""
},
"value": "MG:INVALID_SUPER_F"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_d51b75b159f367af6102f55650793287bac863d75a1e881158e55b9ca7ca6d53",
"typeString": "literal_string \"MG:INVALID_SUPER_F\""
}
],
"id": 1226,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "36236:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 1235,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "36236:99:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1236,
"nodeType": "ExpressionStatement",
"src": "36236:99:0"
},
{
"expression": {
"argumentTypes": null,
"id": 1243,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1237,
"name": "validSubFactories",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 922,
"src": "36345:17:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
"typeString": "mapping(address => mapping(address => bool))"
}
},
"id": 1240,
"indexExpression": {
"argumentTypes": null,
"id": 1238,
"name": "superFactory",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1216,
"src": "36363:12:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "36345:31:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1241,
"indexExpression": {
"argumentTypes": null,
"id": 1239,
"name": "subFactory",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1218,
"src": "36377:10:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "36345:43:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1242,
"name": "valid",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1220,
"src": "36391:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "36345:51:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1244,
"nodeType": "ExpressionStatement",
"src": "36345:51:0"
}
]
},
"documentation": null,
"functionSelector": "f85ee6f8",
"id": 1246,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 1224,
"modifierName": {
"argumentTypes": null,
"id": 1223,
"name": "isGovernor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 935,
"src": "36215:10:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "36215:10:0"
}
],
"name": "setValidSubFactory",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 1222,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "36206:8:0"
},
"parameters": {
"id": 1221,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1216,
"mutability": "mutable",
"name": "superFactory",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1246,
"src": "36143:20:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1215,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "36143:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1218,
"mutability": "mutable",
"name": "subFactory",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1246,
"src": "36165:18:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1217,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "36165:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1220,
"mutability": "mutable",
"name": "valid",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1246,
"src": "36185:10:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 1219,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "36185:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "36142:54:0"
},
"returnParameters": {
"id": 1225,
"nodeType": "ParameterList",
"parameters": [],
"src": "36226:0:0"
},
"scope": 1714,
"src": "36115:288:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
376
],
"body": {
"id": 1266,
"nodeType": "Block",
"src": "36508:51:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1264,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1258,
"name": "defaultUniswapPath",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 900,
"src": "36518:18:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$",
"typeString": "mapping(address => mapping(address => address))"
}
},
"id": 1261,
"indexExpression": {
"argumentTypes": null,
"id": 1259,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1248,
"src": "36537:4:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "36518:24:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 1262,
"indexExpression": {
"argumentTypes": null,
"id": 1260,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1250,
"src": "36543:2:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "36518:28:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1263,
"name": "mid",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1252,
"src": "36549:3:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "36518:34:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1265,
"nodeType": "ExpressionStatement",
"src": "36518:34:0"
}
]
},
"documentation": null,
"functionSelector": "f3897663",
"id": 1267,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 1256,
"modifierName": {
"argumentTypes": null,
"id": 1255,
"name": "isGovernor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 935,
"src": "36497:10:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "36497:10:0"
}
],
"name": "setDefaultUniswapPath",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 1254,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "36488:8:0"
},
"parameters": {
"id": 1253,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1248,
"mutability": "mutable",
"name": "from",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1267,
"src": "36440:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1247,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "36440:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1250,
"mutability": "mutable",
"name": "to",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1267,
"src": "36454:10:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1249,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "36454:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1252,
"mutability": "mutable",
"name": "mid",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1267,
"src": "36466:11:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1251,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "36466:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "36439:39:0"
},
"returnParameters": {
"id": 1257,
"nodeType": "ParameterList",
"parameters": [],
"src": "36508:0:0"
},
"scope": 1714,
"src": "36409:150:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
384
],
"body": {
"id": 1288,
"nodeType": "Block",
"src": "36658:101:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1281,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1277,
"name": "isValidPoolDelegate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 888,
"src": "36668:19:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1279,
"indexExpression": {
"argumentTypes": null,
"id": 1278,
"name": "delegate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1269,
"src": "36688:8:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "36668:29:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1280,
"name": "valid",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1271,
"src": "36700:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "36668:37:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1282,
"nodeType": "ExpressionStatement",
"src": "36668:37:0"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1284,
"name": "delegate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1269,
"src": "36736:8:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 1285,
"name": "valid",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1271,
"src": "36746:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1283,
"name": "PoolDelegateSet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 104,
"src": "36720:15:0",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bool_$returns$__$",
"typeString": "function (address,bool)"
}
},
"id": 1286,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "36720:32:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1287,
"nodeType": "EmitStatement",
"src": "36715:37:0"
}
]
},
"documentation": null,
"functionSelector": "efdb16fc",
"id": 1289,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 1275,
"modifierName": {
"argumentTypes": null,
"id": 1274,
"name": "isGovernor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 935,
"src": "36647:10:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "36647:10:0"
}
],
"name": "setPoolDelegateAllowlist",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 1273,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "36638:8:0"
},
"parameters": {
"id": 1272,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1269,
"mutability": "mutable",
"name": "delegate",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1289,
"src": "36599:16:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1268,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "36599:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1271,
"mutability": "mutable",
"name": "valid",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1289,
"src": "36617:10:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 1270,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "36617:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "36598:30:0"
},
"returnParameters": {
"id": 1276,
"nodeType": "ParameterList",
"parameters": [],
"src": "36658:0:0"
},
"scope": 1714,
"src": "36565:194:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
392
],
"body": {
"id": 1320,
"nodeType": "Block",
"src": "36849:165:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1303,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1299,
"name": "isValidCollateralAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 878,
"src": "36859:22:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1301,
"indexExpression": {
"argumentTypes": null,
"id": 1300,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1291,
"src": "36882:5:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "36859:29:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1302,
"name": "valid",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1293,
"src": "36891:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "36859:37:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1304,
"nodeType": "ExpressionStatement",
"src": "36859:37:0"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1306,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1291,
"src": "36930:5:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1308,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1291,
"src": "36951:5:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1307,
"name": "IERC20Details",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 617,
"src": "36937:13:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC20Details_$617_$",
"typeString": "type(contract IERC20Details)"
}
},
"id": 1309,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "36937:20:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Details_$617",
"typeString": "contract IERC20Details"
}
},
"id": 1310,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "decimals",
"nodeType": "MemberAccess",
"referencedDeclaration": 616,
"src": "36937:29:0",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
"typeString": "function () view external returns (uint256)"
}
},
"id": 1311,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "36937:31:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1313,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1291,
"src": "36984:5:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1312,
"name": "IERC20Details",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 617,
"src": "36970:13:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC20Details_$617_$",
"typeString": "type(contract IERC20Details)"
}
},
"id": 1314,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "36970:20:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Details_$617",
"typeString": "contract IERC20Details"
}
},
"id": 1315,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "symbol",
"nodeType": "MemberAccess",
"referencedDeclaration": 611,
"src": "36970:27:0",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_string_memory_ptr_$",
"typeString": "function () view external returns (string memory)"
}
},
"id": 1316,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "36970:29:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
{
"argumentTypes": null,
"id": 1317,
"name": "valid",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1293,
"src": "37001:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
},
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1305,
"name": "CollateralAssetSet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31,
"src": "36911:18:0",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_bool_$returns$__$",
"typeString": "function (address,uint256,string memory,bool)"
}
},
"id": 1318,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "36911:96:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1319,
"nodeType": "EmitStatement",
"src": "36906:101:0"
}
]
},
"documentation": null,
"functionSelector": "2fa6c88f",
"id": 1321,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 1297,
"modifierName": {
"argumentTypes": null,
"id": 1296,
"name": "isGovernor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 935,
"src": "36838:10:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "36838:10:0"
}
],
"name": "setCollateralAsset",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 1295,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "36829:8:0"
},
"parameters": {
"id": 1294,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1291,
"mutability": "mutable",
"name": "asset",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1321,
"src": "36793:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1290,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "36793:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1293,
"mutability": "mutable",
"name": "valid",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1321,
"src": "36808:10:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 1292,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "36808:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "36792:27:0"
},
"returnParameters": {
"id": 1298,
"nodeType": "ParameterList",
"parameters": [],
"src": "36849:0:0"
},
"scope": 1714,
"src": "36765:249:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
400
],
"body": {
"id": 1352,
"nodeType": "Block",
"src": "37103:163:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1335,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1331,
"name": "isValidLiquidityAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 873,
"src": "37113:21:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1333,
"indexExpression": {
"argumentTypes": null,
"id": 1332,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1323,
"src": "37135:5:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "37113:28:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1334,
"name": "valid",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1325,
"src": "37144:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "37113:36:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1336,
"nodeType": "ExpressionStatement",
"src": "37113:36:0"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1338,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1323,
"src": "37182:5:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1340,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1323,
"src": "37203:5:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1339,
"name": "IERC20Details",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 617,
"src": "37189:13:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC20Details_$617_$",
"typeString": "type(contract IERC20Details)"
}
},
"id": 1341,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "37189:20:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Details_$617",
"typeString": "contract IERC20Details"
}
},
"id": 1342,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "decimals",
"nodeType": "MemberAccess",
"referencedDeclaration": 616,
"src": "37189:29:0",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
"typeString": "function () view external returns (uint256)"
}
},
"id": 1343,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "37189:31:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1345,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1323,
"src": "37236:5:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1344,
"name": "IERC20Details",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 617,
"src": "37222:13:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC20Details_$617_$",
"typeString": "type(contract IERC20Details)"
}
},
"id": 1346,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "37222:20:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Details_$617",
"typeString": "contract IERC20Details"
}
},
"id": 1347,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "symbol",
"nodeType": "MemberAccess",
"referencedDeclaration": 611,
"src": "37222:27:0",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_string_memory_ptr_$",
"typeString": "function () view external returns (string memory)"
}
},
"id": 1348,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "37222:29:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
{
"argumentTypes": null,
"id": 1349,
"name": "valid",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1325,
"src": "37253:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
},
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1337,
"name": "LiquidityAssetSet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 42,
"src": "37164:17:0",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_bool_$returns$__$",
"typeString": "function (address,uint256,string memory,bool)"
}
},
"id": 1350,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "37164:95:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1351,
"nodeType": "EmitStatement",
"src": "37159:100:0"
}
]
},
"documentation": null,
"functionSelector": "2daa0d89",
"id": 1353,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 1329,
"modifierName": {
"argumentTypes": null,
"id": 1328,
"name": "isGovernor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 935,
"src": "37092:10:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "37092:10:0"
}
],
"name": "setLiquidityAsset",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 1327,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "37083:8:0"
},
"parameters": {
"id": 1326,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1323,
"mutability": "mutable",
"name": "asset",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1353,
"src": "37047:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1322,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "37047:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1325,
"mutability": "mutable",
"name": "valid",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1353,
"src": "37062:10:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 1324,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "37062:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "37046:27:0"
},
"returnParameters": {
"id": 1330,
"nodeType": "ParameterList",
"parameters": [],
"src": "37103:0:0"
},
"scope": 1714,
"src": "37020:246:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
408
],
"body": {
"id": 1369,
"nodeType": "Block",
"src": "37344:41:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1367,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1363,
"name": "validCalcs",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 883,
"src": "37354:10:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1365,
"indexExpression": {
"argumentTypes": null,
"id": 1364,
"name": "calc",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1355,
"src": "37365:4:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "37354:16:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1366,
"name": "valid",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1357,
"src": "37373:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "37354:24:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1368,
"nodeType": "ExpressionStatement",
"src": "37354:24:0"
}
]
},
"documentation": null,
"functionSelector": "be44ed6b",
"id": 1370,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 1361,
"modifierName": {
"argumentTypes": null,
"id": 1360,
"name": "isGovernor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 935,
"src": "37333:10:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "37333:10:0"
}
],
"name": "setCalc",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 1359,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "37324:8:0"
},
"parameters": {
"id": 1358,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1355,
"mutability": "mutable",
"name": "calc",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1370,
"src": "37289:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1354,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "37289:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1357,
"mutability": "mutable",
"name": "valid",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1370,
"src": "37303:10:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 1356,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "37303:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "37288:26:0"
},
"returnParameters": {
"id": 1362,
"nodeType": "ParameterList",
"parameters": [],
"src": "37344:0:0"
},
"scope": 1714,
"src": "37272:113:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
414
],
"body": {
"id": 1394,
"nodeType": "Block",
"src": "37458:141:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1381,
"name": "_fee",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1372,
"src": "37506:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 1379,
"name": "treasuryFee",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 847,
"src": "37490:11:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1380,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "add",
"nodeType": "MemberAccess",
"referencedDeclaration": 644,
"src": "37490:15:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 1382,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "37490:21:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1378,
"name": "_checkPercentageRange",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1713,
"src": "37468:21:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$",
"typeString": "function (uint256) pure"
}
},
"id": 1383,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "37468:44:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1384,
"nodeType": "ExpressionStatement",
"src": "37468:44:0"
},
{
"expression": {
"argumentTypes": null,
"id": 1387,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1385,
"name": "investorFee",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 844,
"src": "37522:11:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1386,
"name": "_fee",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1372,
"src": "37536:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "37522:18:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1388,
"nodeType": "ExpressionStatement",
"src": "37522:18:0"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "494e564553544f525f464545",
"id": 1390,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "37571:14:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_3aea217ae3edef97921a0059b416ad10af94382ce300c56e5fffa736756ef855",
"typeString": "literal_string \"INVESTOR_FEE\""
},
"value": "INVESTOR_FEE"
},
{
"argumentTypes": null,
"id": 1391,
"name": "_fee",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1372,
"src": "37587:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_stringliteral_3aea217ae3edef97921a0059b416ad10af94382ce300c56e5fffa736756ef855",
"typeString": "literal_string \"INVESTOR_FEE\""
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1389,
"name": "GlobalsParamSet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 80,
"src": "37555:15:0",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
"typeString": "function (bytes32,uint256)"
}
},
"id": 1392,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "37555:37:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1393,
"nodeType": "EmitStatement",
"src": "37550:42:0"
}
]
},
"documentation": null,
"functionSelector": "5e045467",
"id": 1395,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 1376,
"modifierName": {
"argumentTypes": null,
"id": 1375,
"name": "isGovernor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 935,
"src": "37447:10:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "37447:10:0"
}
],
"name": "setInvestorFee",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 1374,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "37438:8:0"
},
"parameters": {
"id": 1373,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1372,
"mutability": "mutable",
"name": "_fee",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1395,
"src": "37415:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1371,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "37415:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "37414:14:0"
},
"returnParameters": {
"id": 1377,
"nodeType": "ParameterList",
"parameters": [],
"src": "37458:0:0"
},
"scope": 1714,
"src": "37391:208:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
420
],
"body": {
"id": 1419,
"nodeType": "Block",
"src": "37672:141:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1406,
"name": "_fee",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1397,
"src": "37720:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 1404,
"name": "investorFee",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 844,
"src": "37704:11:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1405,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "add",
"nodeType": "MemberAccess",
"referencedDeclaration": 644,
"src": "37704:15:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 1407,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "37704:21:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1403,
"name": "_checkPercentageRange",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1713,
"src": "37682:21:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$",
"typeString": "function (uint256) pure"
}
},
"id": 1408,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "37682:44:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1409,
"nodeType": "ExpressionStatement",
"src": "37682:44:0"
},
{
"expression": {
"argumentTypes": null,
"id": 1412,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1410,
"name": "treasuryFee",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 847,
"src": "37736:11:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1411,
"name": "_fee",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1397,
"src": "37750:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "37736:18:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1413,
"nodeType": "ExpressionStatement",
"src": "37736:18:0"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "54524541535552595f464545",
"id": 1415,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "37785:14:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_18ad70ee3f6a98a2d2c282eb104ba9a88c203b6c36b6a4306a9f46f44c178891",
"typeString": "literal_string \"TREASURY_FEE\""
},
"value": "TREASURY_FEE"
},
{
"argumentTypes": null,
"id": 1416,
"name": "_fee",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1397,
"src": "37801:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_stringliteral_18ad70ee3f6a98a2d2c282eb104ba9a88c203b6c36b6a4306a9f46f44c178891",
"typeString": "literal_string \"TREASURY_FEE\""
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1414,
"name": "GlobalsParamSet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 80,
"src": "37769:15:0",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
"typeString": "function (bytes32,uint256)"
}
},
"id": 1417,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "37769:37:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1418,
"nodeType": "EmitStatement",
"src": "37764:42:0"
}
]
},
"documentation": null,
"functionSelector": "77e741c7",
"id": 1420,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 1401,
"modifierName": {
"argumentTypes": null,
"id": 1400,
"name": "isGovernor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 935,
"src": "37661:10:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "37661:10:0"
}
],
"name": "setTreasuryFee",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 1399,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "37652:8:0"
},
"parameters": {
"id": 1398,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1397,
"mutability": "mutable",
"name": "_fee",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1420,
"src": "37629:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1396,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "37629:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "37628:14:0"
},
"returnParameters": {
"id": 1402,
"nodeType": "ParameterList",
"parameters": [],
"src": "37672:0:0"
},
"scope": 1714,
"src": "37605:208:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
426
],
"body": {
"id": 1447,
"nodeType": "Block",
"src": "37898:176:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1434,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1429,
"name": "_mapleTreasury",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1422,
"src": "37916:14:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 1432,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "37942:1:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 1431,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "37934:7:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 1430,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "37934:7:0",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1433,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "37934:10:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"src": "37916:28:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4d473a5a45524f5f41444452",
"id": 1435,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "37946:14:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_8c5453ff40b655be08518e0222e5212d9a39278ae7644e6fda890d432e3d9e6c",
"typeString": "literal_string \"MG:ZERO_ADDR\""
},
"value": "MG:ZERO_ADDR"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_8c5453ff40b655be08518e0222e5212d9a39278ae7644e6fda890d432e3d9e6c",
"typeString": "literal_string \"MG:ZERO_ADDR\""
}
],
"id": 1428,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "37908:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 1436,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "37908:53:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1437,
"nodeType": "ExpressionStatement",
"src": "37908:53:0"
},
{
"expression": {
"argumentTypes": null,
"id": 1440,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1438,
"name": "mapleTreasury",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 829,
"src": "37971:13:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1439,
"name": "_mapleTreasury",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1422,
"src": "37987:14:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "37971:30:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1441,
"nodeType": "ExpressionStatement",
"src": "37971:30:0"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "4d41504c455f5452454153555259",
"id": 1443,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "38034:16:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_c1d6035314c39d9091f81b79640db27c1dffcc995827575d7f2dc24b53c41948",
"typeString": "literal_string \"MAPLE_TREASURY\""
},
"value": "MAPLE_TREASURY"
},
{
"argumentTypes": null,
"id": 1444,
"name": "_mapleTreasury",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1422,
"src": "38052:14:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_stringliteral_c1d6035314c39d9091f81b79640db27c1dffcc995827575d7f2dc24b53c41948",
"typeString": "literal_string \"MAPLE_TREASURY\""
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1442,
"name": "GlobalsAddressSet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 87,
"src": "38016:17:0",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
"typeString": "function (bytes32,address)"
}
},
"id": 1445,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "38016:51:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1446,
"nodeType": "EmitStatement",
"src": "38011:56:0"
}
]
},
"documentation": null,
"functionSelector": "7303de25",
"id": 1448,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 1426,
"modifierName": {
"argumentTypes": null,
"id": 1425,
"name": "isGovernor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 935,
"src": "37887:10:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "37887:10:0"
}
],
"name": "setMapleTreasury",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 1424,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "37878:8:0"
},
"parameters": {
"id": 1423,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1422,
"mutability": "mutable",
"name": "_mapleTreasury",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1448,
"src": "37845:22:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1421,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "37845:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "37844:24:0"
},
"returnParameters": {
"id": 1427,
"nodeType": "ParameterList",
"parameters": [],
"src": "37898:0:0"
},
"scope": 1714,
"src": "37819:255:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
432
],
"body": {
"id": 1465,
"nodeType": "Block",
"src": "38169:132:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1458,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1456,
"name": "defaultGracePeriod",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 835,
"src": "38179:18:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1457,
"name": "_defaultGracePeriod",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1450,
"src": "38200:19:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "38179:40:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1459,
"nodeType": "ExpressionStatement",
"src": "38179:40:0"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "44454641554c545f47524143455f504552494f44",
"id": 1461,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "38250:22:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_fdb3b38b1f33f5612be5f964a50a321514080c7327c9735bb239259977ef1012",
"typeString": "literal_string \"DEFAULT_GRACE_PERIOD\""
},
"value": "DEFAULT_GRACE_PERIOD"
},
{
"argumentTypes": null,
"id": 1462,
"name": "_defaultGracePeriod",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1450,
"src": "38274:19:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_stringliteral_fdb3b38b1f33f5612be5f964a50a321514080c7327c9735bb239259977ef1012",
"typeString": "literal_string \"DEFAULT_GRACE_PERIOD\""
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1460,
"name": "GlobalsParamSet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 80,
"src": "38234:15:0",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
"typeString": "function (bytes32,uint256)"
}
},
"id": 1463,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "38234:60:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1464,
"nodeType": "EmitStatement",
"src": "38229:65:0"
}
]
},
"documentation": null,
"functionSelector": "44c14f71",
"id": 1466,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 1454,
"modifierName": {
"argumentTypes": null,
"id": 1453,
"name": "isGovernor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 935,
"src": "38158:10:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "38158:10:0"
}
],
"name": "setDefaultGracePeriod",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 1452,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "38149:8:0"
},
"parameters": {
"id": 1451,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1450,
"mutability": "mutable",
"name": "_defaultGracePeriod",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1466,
"src": "38111:27:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1449,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "38111:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "38110:29:0"
},
"returnParameters": {
"id": 1455,
"nodeType": "ParameterList",
"parameters": [],
"src": "38169:0:0"
},
"scope": 1714,
"src": "38080:221:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
438
],
"body": {
"id": 1487,
"nodeType": "Block",
"src": "38386:159:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1475,
"name": "_minLoanEquity",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1468,
"src": "38418:14:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1474,
"name": "_checkPercentageRange",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1713,
"src": "38396:21:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$",
"typeString": "function (uint256) pure"
}
},
"id": 1476,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "38396:37:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1477,
"nodeType": "ExpressionStatement",
"src": "38396:37:0"
},
{
"expression": {
"argumentTypes": null,
"id": 1480,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1478,
"name": "minLoanEquity",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 853,
"src": "38443:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1479,
"name": "_minLoanEquity",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1468,
"src": "38459:14:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "38443:30:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1481,
"nodeType": "ExpressionStatement",
"src": "38443:30:0"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "4d494e5f4c4f414e5f455155495459",
"id": 1483,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "38504:17:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_6b0ea376716081373aee3765f89bb2e909ea2bb2f48ea7c45a9399eafce66ff6",
"typeString": "literal_string \"MIN_LOAN_EQUITY\""
},
"value": "MIN_LOAN_EQUITY"
},
{
"argumentTypes": null,
"id": 1484,
"name": "_minLoanEquity",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1468,
"src": "38523:14:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_stringliteral_6b0ea376716081373aee3765f89bb2e909ea2bb2f48ea7c45a9399eafce66ff6",
"typeString": "literal_string \"MIN_LOAN_EQUITY\""
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1482,
"name": "GlobalsParamSet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 80,
"src": "38488:15:0",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
"typeString": "function (bytes32,uint256)"
}
},
"id": 1485,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "38488:50:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1486,
"nodeType": "EmitStatement",
"src": "38483:55:0"
}
]
},
"documentation": null,
"functionSelector": "298b795d",
"id": 1488,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 1472,
"modifierName": {
"argumentTypes": null,
"id": 1471,
"name": "isGovernor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 935,
"src": "38375:10:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "38375:10:0"
}
],
"name": "setMinLoanEquity",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 1470,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "38366:8:0"
},
"parameters": {
"id": 1469,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1468,
"mutability": "mutable",
"name": "_minLoanEquity",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1488,
"src": "38333:22:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1467,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "38333:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "38332:24:0"
},
"returnParameters": {
"id": 1473,
"nodeType": "ParameterList",
"parameters": [],
"src": "38386:0:0"
},
"scope": 1714,
"src": "38307:238:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
444
],
"body": {
"id": 1505,
"nodeType": "Block",
"src": "38630:111:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1498,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1496,
"name": "fundingPeriod",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 841,
"src": "38640:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1497,
"name": "_fundingPeriod",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1490,
"src": "38656:14:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "38640:30:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1499,
"nodeType": "ExpressionStatement",
"src": "38640:30:0"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "46554e44494e475f504552494f44",
"id": 1501,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "38701:16:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_71a65d19c1f26dfd0d218b0d79432dde5a23c43487b59838e98289df649959eb",
"typeString": "literal_string \"FUNDING_PERIOD\""
},
"value": "FUNDING_PERIOD"
},
{
"argumentTypes": null,
"id": 1502,
"name": "_fundingPeriod",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1490,
"src": "38719:14:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_stringliteral_71a65d19c1f26dfd0d218b0d79432dde5a23c43487b59838e98289df649959eb",
"typeString": "literal_string \"FUNDING_PERIOD\""
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1500,
"name": "GlobalsParamSet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 80,
"src": "38685:15:0",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
"typeString": "function (bytes32,uint256)"
}
},
"id": 1503,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "38685:49:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1504,
"nodeType": "EmitStatement",
"src": "38680:54:0"
}
]
},
"documentation": null,
"functionSelector": "2a5aa292",
"id": 1506,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 1494,
"modifierName": {
"argumentTypes": null,
"id": 1493,
"name": "isGovernor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 935,
"src": "38619:10:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "38619:10:0"
}
],
"name": "setFundingPeriod",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 1492,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "38610:8:0"
},
"parameters": {
"id": 1491,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1490,
"mutability": "mutable",
"name": "_fundingPeriod",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1506,
"src": "38577:22:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1489,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "38577:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "38576:24:0"
},
"returnParameters": {
"id": 1495,
"nodeType": "ParameterList",
"parameters": [],
"src": "38630:0:0"
},
"scope": 1714,
"src": "38551:190:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
450
],
"body": {
"id": 1533,
"nodeType": "Block",
"src": "38817:158:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1520,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1515,
"name": "amt",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1508,
"src": "38835:3:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">=",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "31305f303030",
"id": 1518,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "38850:6:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_10000_by_1",
"typeString": "int_const 10000"
},
"value": "10_000"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_10000_by_1",
"typeString": "int_const 10000"
}
],
"id": 1517,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "38842:7:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 1516,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "38842:7:0",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1519,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "38842:15:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "38835:22:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4d473a535741505f4f55545f544f4f5f4c4f57",
"id": 1521,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "38859:21:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_448f397989ca4803ec1414c1a9d4653fef59f9d95c86e63b8926b1b9041739f5",
"typeString": "literal_string \"MG:SWAP_OUT_TOO_LOW\""
},
"value": "MG:SWAP_OUT_TOO_LOW"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_448f397989ca4803ec1414c1a9d4653fef59f9d95c86e63b8926b1b9041739f5",
"typeString": "literal_string \"MG:SWAP_OUT_TOO_LOW\""
}
],
"id": 1514,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "38827:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 1522,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "38827:54:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1523,
"nodeType": "ExpressionStatement",
"src": "38827:54:0"
},
{
"expression": {
"argumentTypes": null,
"id": 1526,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1524,
"name": "swapOutRequired",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 838,
"src": "38891:15:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1525,
"name": "amt",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1508,
"src": "38909:3:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "38891:21:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1527,
"nodeType": "ExpressionStatement",
"src": "38891:21:0"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "535741505f4f55545f5245515549524544",
"id": 1529,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "38943:19:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_f49e135633bc83da55a5f05c50621fa18e4711fa382aff5f7237eef98fd3203f",
"typeString": "literal_string \"SWAP_OUT_REQUIRED\""
},
"value": "SWAP_OUT_REQUIRED"
},
{
"argumentTypes": null,
"id": 1530,
"name": "amt",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1508,
"src": "38964:3:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_stringliteral_f49e135633bc83da55a5f05c50621fa18e4711fa382aff5f7237eef98fd3203f",
"typeString": "literal_string \"SWAP_OUT_REQUIRED\""
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1528,
"name": "GlobalsParamSet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 80,
"src": "38927:15:0",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
"typeString": "function (bytes32,uint256)"
}
},
"id": 1531,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "38927:41:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1532,
"nodeType": "EmitStatement",
"src": "38922:46:0"
}
]
},
"documentation": null,
"functionSelector": "dbc6c552",
"id": 1534,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 1512,
"modifierName": {
"argumentTypes": null,
"id": 1511,
"name": "isGovernor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 935,
"src": "38806:10:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "38806:10:0"
}
],
"name": "setSwapOutRequired",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 1510,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "38797:8:0"
},
"parameters": {
"id": 1509,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1508,
"mutability": "mutable",
"name": "amt",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1534,
"src": "38775:11:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1507,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "38775:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "38774:13:0"
},
"returnParameters": {
"id": 1513,
"nodeType": "ParameterList",
"parameters": [],
"src": "38817:0:0"
},
"scope": 1714,
"src": "38747:228:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
458
],
"body": {
"id": 1555,
"nodeType": "Block",
"src": "39065:81:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1548,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1544,
"name": "oracleFor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 905,
"src": "39075:9:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 1546,
"indexExpression": {
"argumentTypes": null,
"id": 1545,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1536,
"src": "39085:5:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "39075:16:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1547,
"name": "oracle",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1538,
"src": "39094:6:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "39075:25:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1549,
"nodeType": "ExpressionStatement",
"src": "39075:25:0"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1551,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1536,
"src": "39125:5:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 1552,
"name": "oracle",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1538,
"src": "39132:6:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1550,
"name": "OracleSet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 49,
"src": "39115:9:0",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
"typeString": "function (address,address)"
}
},
"id": 1553,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "39115:24:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1554,
"nodeType": "EmitStatement",
"src": "39110:29:0"
}
]
},
"documentation": null,
"functionSelector": "67a74ddc",
"id": 1556,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 1542,
"modifierName": {
"argumentTypes": null,
"id": 1541,
"name": "isGovernor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 935,
"src": "39054:10:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "39054:10:0"
}
],
"name": "setPriceOracle",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 1540,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "39045:8:0"
},
"parameters": {
"id": 1539,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1536,
"mutability": "mutable",
"name": "asset",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1556,
"src": "39005:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1535,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "39005:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1538,
"mutability": "mutable",
"name": "oracle",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1556,
"src": "39020:14:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1537,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "39020:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "39004:31:0"
},
"returnParameters": {
"id": 1543,
"nodeType": "ParameterList",
"parameters": [],
"src": "39065:0:0"
},
"scope": 1714,
"src": "38981:165:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
464
],
"body": {
"id": 1582,
"nodeType": "Block",
"src": "39365:167:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1570,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1565,
"name": "_pendingGovernor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1558,
"src": "39383:16:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 1568,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "39411:1:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 1567,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "39403:7:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 1566,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "39403:7:0",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1569,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "39403:10:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"src": "39383:30:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4d473a5a45524f5f41444452",
"id": 1571,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "39415:14:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_8c5453ff40b655be08518e0222e5212d9a39278ae7644e6fda890d432e3d9e6c",
"typeString": "literal_string \"MG:ZERO_ADDR\""
},
"value": "MG:ZERO_ADDR"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_8c5453ff40b655be08518e0222e5212d9a39278ae7644e6fda890d432e3d9e6c",
"typeString": "literal_string \"MG:ZERO_ADDR\""
}
],
"id": 1564,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "39375:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 1572,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "39375:55:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1573,
"nodeType": "ExpressionStatement",
"src": "39375:55:0"
},
{
"expression": {
"argumentTypes": null,
"id": 1576,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1574,
"name": "pendingGovernor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 823,
"src": "39440:15:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1575,
"name": "_pendingGovernor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1558,
"src": "39458:16:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "39440:34:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1577,
"nodeType": "ExpressionStatement",
"src": "39440:34:0"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1579,
"name": "_pendingGovernor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1558,
"src": "39508:16:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1578,
"name": "PendingGovernorSet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 68,
"src": "39489:18:0",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
"typeString": "function (address)"
}
},
"id": 1580,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "39489:36:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1581,
"nodeType": "EmitStatement",
"src": "39484:41:0"
}
]
},
"documentation": null,
"functionSelector": "f235757f",
"id": 1583,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 1562,
"modifierName": {
"argumentTypes": null,
"id": 1561,
"name": "isGovernor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 935,
"src": "39354:10:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "39354:10:0"
}
],
"name": "setPendingGovernor",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 1560,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "39345:8:0"
},
"parameters": {
"id": 1559,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1558,
"mutability": "mutable",
"name": "_pendingGovernor",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1583,
"src": "39310:24:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1557,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "39310:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "39309:26:0"
},
"returnParameters": {
"id": 1563,
"nodeType": "ParameterList",
"parameters": [],
"src": "39365:0:0"
},
"scope": 1714,
"src": "39282:250:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
468
],
"body": {
"id": 1612,
"nodeType": "Block",
"src": "39582:196:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1591,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1588,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "39600:3:0",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1589,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "39600:10:0",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 1590,
"name": "pendingGovernor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 823,
"src": "39614:15:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "39600:29:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4d473a4e4f545f50454e44494e475f474f56",
"id": 1592,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "39631:20:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_1975f6ba3f44617989e8ce3b4a5c47bd3cb80e1f75e0a4d8263dd40dca6ed291",
"typeString": "literal_string \"MG:NOT_PENDING_GOV\""
},
"value": "MG:NOT_PENDING_GOV"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_1975f6ba3f44617989e8ce3b4a5c47bd3cb80e1f75e0a4d8263dd40dca6ed291",
"typeString": "literal_string \"MG:NOT_PENDING_GOV\""
}
],
"id": 1587,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "39592:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 1593,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "39592:60:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1594,
"nodeType": "ExpressionStatement",
"src": "39592:60:0"
},
{
"expression": {
"argumentTypes": null,
"id": 1598,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1595,
"name": "governor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 826,
"src": "39662:8:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1596,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "39680:3:0",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1597,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "39680:10:0",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"src": "39662:28:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1599,
"nodeType": "ExpressionStatement",
"src": "39662:28:0"
},
{
"expression": {
"argumentTypes": null,
"id": 1605,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1600,
"name": "pendingGovernor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 823,
"src": "39700:15:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 1603,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "39726:1:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 1602,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "39718:7:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 1601,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "39718:7:0",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1604,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "39718:10:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"src": "39700:28:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1606,
"nodeType": "ExpressionStatement",
"src": "39700:28:0"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1608,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "39760:3:0",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1609,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "39760:10:0",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
],
"id": 1607,
"name": "GovernorAccepted",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 73,
"src": "39743:16:0",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
"typeString": "function (address)"
}
},
"id": 1610,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "39743:28:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1611,
"nodeType": "EmitStatement",
"src": "39738:33:0"
}
]
},
"documentation": null,
"functionSelector": "e58bb639",
"id": 1613,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "acceptGovernor",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 1585,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "39573:8:0"
},
"parameters": {
"id": 1584,
"nodeType": "ParameterList",
"parameters": [],
"src": "39561:2:0"
},
"returnParameters": {
"id": 1586,
"nodeType": "ParameterList",
"parameters": [],
"src": "39582:0:0"
},
"scope": 1714,
"src": "39538:240:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
476
],
"body": {
"id": 1632,
"nodeType": "Block",
"src": "39958:75:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1624,
"name": "oracleFor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 905,
"src": "39991:9:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 1626,
"indexExpression": {
"argumentTypes": null,
"id": 1625,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1615,
"src": "40001:5:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "39991:16:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1623,
"name": "IOracle",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 515,
"src": "39983:7:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IOracle_$515_$",
"typeString": "type(contract IOracle)"
}
},
"id": 1627,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "39983:25:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IOracle_$515",
"typeString": "contract IOracle"
}
},
"id": 1628,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "getLatestPrice",
"nodeType": "MemberAccess",
"referencedDeclaration": 514,
"src": "39983:40:0",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_int256_$",
"typeString": "function () view external returns (int256)"
}
},
"id": 1629,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "39983:42:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_int256",
"typeString": "int256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_int256",
"typeString": "int256"
}
],
"id": 1622,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "39975:7:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 1621,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "39975:7:0",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1630,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "39975:51:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 1620,
"id": 1631,
"nodeType": "Return",
"src": "39968:58:0"
}
]
},
"documentation": null,
"functionSelector": "16345f18",
"id": 1633,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getLatestPrice",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 1617,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "39926:8:0"
},
"parameters": {
"id": 1616,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1615,
"mutability": "mutable",
"name": "asset",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1633,
"src": "39902:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1614,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "39902:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "39901:15:0"
},
"returnParameters": {
"id": 1620,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1619,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1633,
"src": "39949:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1618,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "39949:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "39948:9:0"
},
"scope": 1714,
"src": "39878:155:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
488
],
"body": {
"id": 1659,
"nodeType": "Block",
"src": "40165:123:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 1657,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1645,
"name": "validSubFactories",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 922,
"src": "40182:17:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
"typeString": "mapping(address => mapping(address => bool))"
}
},
"id": 1647,
"indexExpression": {
"argumentTypes": null,
"id": 1646,
"name": "superFactory",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1635,
"src": "40200:12:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "40182:31:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1649,
"indexExpression": {
"argumentTypes": null,
"id": 1648,
"name": "subFactory",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1637,
"src": "40214:10:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "40182:43:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 1656,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1651,
"name": "subFactory",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1637,
"src": "40241:10:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1650,
"name": "ISubFactory",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 523,
"src": "40229:11:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ISubFactory_$523_$",
"typeString": "type(contract ISubFactory)"
}
},
"id": 1652,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "40229:23:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_ISubFactory_$523",
"typeString": "contract ISubFactory"
}
},
"id": 1653,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "factoryType",
"nodeType": "MemberAccess",
"referencedDeclaration": 522,
"src": "40229:35:0",
"typeDescriptions": {
"typeIdentifier": "t_function_external_pure$__$returns$_t_uint8_$",
"typeString": "function () pure external returns (uint8)"
}
},
"id": 1654,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "40229:37:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 1655,
"name": "factoryType",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1639,
"src": "40270:11:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "40229:52:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "40182:99:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 1644,
"id": 1658,
"nodeType": "Return",
"src": "40175:106:0"
}
]
},
"documentation": null,
"functionSelector": "13d459fb",
"id": 1660,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "isValidSubFactory",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 1641,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "40136:8:0"
},
"parameters": {
"id": 1640,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1635,
"mutability": "mutable",
"name": "superFactory",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1660,
"src": "40066:20:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1634,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "40066:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1637,
"mutability": "mutable",
"name": "subFactory",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1660,
"src": "40088:18:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1636,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "40088:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1639,
"mutability": "mutable",
"name": "factoryType",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1660,
"src": "40108:17:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 1638,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "40108:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "40065:61:0"
},
"returnParameters": {
"id": 1644,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1643,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1660,
"src": "40159:4:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 1642,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "40159:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "40158:6:0"
},
"scope": 1714,
"src": "40039:249:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
498
],
"body": {
"id": 1682,
"nodeType": "Block",
"src": "40383:78:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 1680,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1670,
"name": "validCalcs",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 883,
"src": "40400:10:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1672,
"indexExpression": {
"argumentTypes": null,
"id": 1671,
"name": "calc",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1662,
"src": "40411:4:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "40400:16:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 1679,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1674,
"name": "calc",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1662,
"src": "40426:4:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1673,
"name": "ICalc",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 16,
"src": "40420:5:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ICalc_$16_$",
"typeString": "type(contract ICalc)"
}
},
"id": 1675,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "40420:11:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_ICalc_$16",
"typeString": "contract ICalc"
}
},
"id": 1676,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "calcType",
"nodeType": "MemberAccess",
"referencedDeclaration": 9,
"src": "40420:20:0",
"typeDescriptions": {
"typeIdentifier": "t_function_external_pure$__$returns$_t_uint8_$",
"typeString": "function () pure external returns (uint8)"
}
},
"id": 1677,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "40420:22:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 1678,
"name": "calcType",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1664,
"src": "40446:8:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "40420:34:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "40400:54:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 1669,
"id": 1681,
"nodeType": "Return",
"src": "40393:61:0"
}
]
},
"documentation": null,
"functionSelector": "1b5833f7",
"id": 1683,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "isValidCalc",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 1666,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "40354:8:0"
},
"parameters": {
"id": 1665,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1662,
"mutability": "mutable",
"name": "calc",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1683,
"src": "40315:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1661,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "40315:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1664,
"mutability": "mutable",
"name": "calcType",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1683,
"src": "40329:14:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 1663,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "40329:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "40314:30:0"
},
"returnParameters": {
"id": 1669,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1668,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1683,
"src": "40377:4:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 1667,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "40377:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "40376:6:0"
},
"scope": 1714,
"src": "40294:167:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
506
],
"body": {
"id": 1695,
"nodeType": "Block",
"src": "40548:60:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"components": [
{
"argumentTypes": null,
"id": 1691,
"name": "lpCooldownPeriod",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 859,
"src": "40566:16:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 1692,
"name": "lpWithdrawWindow",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 865,
"src": "40584:16:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 1693,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "40565:36:0",
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
"typeString": "tuple(uint256,uint256)"
}
},
"functionReturnParameters": 1690,
"id": 1694,
"nodeType": "Return",
"src": "40558:43:0"
}
]
},
"documentation": null,
"functionSelector": "9f51290b",
"id": 1696,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getLpCooldownParams",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 1685,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "40507:8:0"
},
"parameters": {
"id": 1684,
"nodeType": "ParameterList",
"parameters": [],
"src": "40495:2:0"
},
"returnParameters": {
"id": 1690,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1687,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1696,
"src": "40530:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1686,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "40530:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1689,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1696,
"src": "40539:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1688,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "40539:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "40529:18:0"
},
"scope": 1714,
"src": "40467:141:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": {
"id": 1712,
"nodeType": "Block",
"src": "40844:69:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1708,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1703,
"name": "percentage",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1699,
"src": "40862:10:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<=",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "31305f303030",
"id": 1706,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "40884:6:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_10000_by_1",
"typeString": "int_const 10000"
},
"value": "10_000"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_10000_by_1",
"typeString": "int_const 10000"
}
],
"id": 1705,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "40876:7:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 1704,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "40876:7:0",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1707,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "40876:15:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "40862:29:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4d473a5043545f4f4f42",
"id": 1709,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "40893:12:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_11f29c137b68d2671e26740f7046c88e0850ad47bf79352595ece9393bae19fe",
"typeString": "literal_string \"MG:PCT_OOB\""
},
"value": "MG:PCT_OOB"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_11f29c137b68d2671e26740f7046c88e0850ad47bf79352595ece9393bae19fe",
"typeString": "literal_string \"MG:PCT_OOB\""
}
],
"id": 1702,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "40854:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 1710,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "40854:52:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1711,
"nodeType": "ExpressionStatement",
"src": "40854:52:0"
}
]
},
"documentation": {
"id": 1697,
"nodeType": "StructuredDocumentation",
"src": "40708:66:0",
"text": "@dev Checks that percentage is less than 100%."
},
"id": 1713,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_checkPercentageRange",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 1700,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1699,
"mutability": "mutable",
"name": "percentage",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1713,
"src": "40810:18:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1698,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "40810:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "40809:20:0"
},
"returnParameters": {
"id": 1701,
"nodeType": "ParameterList",
"parameters": [],
"src": "40844:0:0"
},
"scope": 1714,
"src": "40779:134:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
}
],
"scope": 1715,
"src": "31087:9829:0"
}
],
"src": "119:40798:0"
},
"id": 0
}
}
}
}