{
  "id": "fac6bdbde11e7474b35d9e2fb4950a20",
  "_format": "hh-sol-build-info-1",
  "solcVersion": "0.6.11",
  "solcLongVersion": "0.6.11+commit.5ef660b1",
  "input": {
    "language": "Solidity",
    "sources": {
      "contracts/core/chainlink-oracle/v1/ChainlinkOracle.sol": {
        "content": "// SPDX-License-Identifier: AGPL-3.0-or-later // hevm: flattened sources of contracts/core/chainlink-oracle/v1/ChainlinkOracle.sol\npragma solidity =0.6.11 >=0.6.0 <0.8.0;\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/external-interfaces/IChainlinkAggregatorV3.sol\n/* pragma solidity 0.6.11; */\n\ninterface IChainlinkAggregatorV3 {\n\n  function decimals() external view returns (uint8);\n  function description() external view returns (string memory);\n  function version() external view returns (uint256);\n\n  // getRoundData and latestRoundData should both raise \"No data present\"\n  // if they do not have data to report, instead of returning unset values,\n  // which could be misinterpreted as actual reported values.\n\n  function getRoundData(uint80 _roundId)\n    external\n    view\n    returns (\n        uint80  roundId,\n        int256  answer,\n        uint256 startedAt,\n        uint256 updatedAt,\n        uint80  answeredInRound\n    );\n\n  function latestRoundData()\n    external\n    view\n    returns (\n        uint80  roundId,\n        int256  answer,\n        uint256 startedAt,\n        uint256 updatedAt,\n        uint80  answeredInRound\n    );\n\n}\n\n////// contracts/core/chainlink-oracle/v1/interfaces/IChainlinkOracle.sol\n/* pragma solidity 0.6.11; */\n\n/* import { IChainlinkAggregatorV3 } from \"../../../../external-interfaces/IChainlinkAggregatorV3.sol\"; */\n\n/* import { IMapleGlobals } from \"../../../globals/v1/interfaces/IMapleGlobals.sol\"; */\n/* import { IOracle }       from \"../../../oracle/v1/interfaces/IOracle.sol\"; */\n\n/// @title ChainlinkOracle is a wrapper contract for Chainlink oracle price feeds that allows for manual price feed overrides.\ninterface IChainlinkOracle is IOracle {\n\n    /**\n        @dev   Emits an event indicating that the price feed aggregator has changed from `_oldMedianizer` to `_newMedianizer`.\n        @param _newMedianizer The new price feed aggregator.\n        @param _oldMedianizer The old price feed aggregator.\n     */\n    event ChangeAggregatorFeed(address _newMedianizer, address _oldMedianizer);\n\n    /**\n        @dev   Emits an event indicating that the price has been updated manually from `_oldPrice` to `_newPrice`.\n        @param _oldPrice The old price.\n        @param _newPrice The new price.\n     */\n    event SetManualPrice(int256 _oldPrice, int256 _newPrice);\n\n    /**\n        @dev   Emits an event indicating whether manual price overriding is enabled.\n        @param _override The state of manual price overriding.\n     */\n    event SetManualOverride(bool _override);\n\n    /**\n        @dev The Chainlink Aggregator V3 price feed.\n     */\n    function priceFeed() external view returns (IChainlinkAggregatorV3);\n\n    /**\n        @dev The MapleGlobals.\n     */\n    function globals() external view returns (IMapleGlobals);\n\n    /**\n        @dev The address of the asset token contract.\n     */\n    function assetAddress() external view returns (address);\n\n    /**\n        @dev Whether the price is manually overridden.\n     */\n    function manualOverride() external view returns (bool);\n\n    /**\n        @dev The manually overridden price.\n     */\n    function manualPrice() external view returns (int256);\n\n    /**\n        @return The latest price.\n     */\n    function getLatestPrice() external override view returns (int256);\n\n    /**\n        @dev   Updates the aggregator address to `aggregator`. \n        @dev   Only the contract Owner can call this function. \n        @dev   It emits a `ChangeAggregatorFeed` event. \n        @param aggregator The address of a Chainlink aggregator.\n     */\n    function changeAggregator(address aggregator) external;\n\n    /**\n        @return The address of the oracled currency (0x0 for ETH).\n     */\n    function getAssetAddress() external view returns (address);\n\n    /**\n        @return The denomination of the price.\n     */\n    function getDenomination() external pure returns (bytes32);\n\n    /**\n        @dev   Sets a manual price. \n        @dev   Only the contract Owner can call this function. \n        @dev   This can only be used if manualOverride == true. \n        @dev   It emits a `SetManualPrice` event. \n        @param _price Price to set.\n     */\n    function setManualPrice(int256 _price) external;\n\n    /**\n        @dev   Sets manual override, allowing for manual price setting. \n        @dev   Only the contract Owner can call this function. \n        @dev   It emits a `SetManualOverride` event. \n        @param _override Whether manual override price should be used.\n     */\n    function setManualOverride(bool _override) external;\n\n}\n\n////// lib/openzeppelin-contracts/contracts/GSN/Context.sol\n/* pragma solidity >=0.6.0 <0.8.0; */\n\n/*\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with GSN meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n    function _msgSender() internal view virtual returns (address payable) {\n        return msg.sender;\n    }\n\n    function _msgData() internal view virtual returns (bytes memory) {\n        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\n        return msg.data;\n    }\n}\n\n////// lib/openzeppelin-contracts/contracts/access/Ownable.sol\n/* pragma solidity >=0.6.0 <0.8.0; */\n\n/* import \"../GSN/Context.sol\"; */\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n    address private _owner;\n\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n    /**\n     * @dev Initializes the contract setting the deployer as the initial owner.\n     */\n    constructor () internal {\n        address msgSender = _msgSender();\n        _owner = msgSender;\n        emit OwnershipTransferred(address(0), msgSender);\n    }\n\n    /**\n     * @dev Returns the address of the current owner.\n     */\n    function owner() public view returns (address) {\n        return _owner;\n    }\n\n    /**\n     * @dev Throws if called by any account other than the owner.\n     */\n    modifier onlyOwner() {\n        require(_owner == _msgSender(), \"Ownable: caller is not the owner\");\n        _;\n    }\n\n    /**\n     * @dev Leaves the contract without owner. It will not be possible to call\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\n     *\n     * NOTE: Renouncing ownership will leave the contract without an owner,\n     * thereby removing any functionality that is only available to the owner.\n     */\n    function renounceOwnership() public virtual onlyOwner {\n        emit OwnershipTransferred(_owner, address(0));\n        _owner = address(0);\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Can only be called by the current owner.\n     */\n    function transferOwnership(address newOwner) public virtual onlyOwner {\n        require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n        emit OwnershipTransferred(_owner, newOwner);\n        _owner = newOwner;\n    }\n}\n\n////// contracts/core/chainlink-oracle/v1/ChainlinkOracle.sol\n/* pragma solidity 0.6.11; */\n\n/* import { Ownable } from \"../../../../lib/openzeppelin-contracts/contracts/access/Ownable.sol\"; */\n\n/* import { IChainlinkAggregatorV3 } from \"../../../external-interfaces/IChainlinkAggregatorV3.sol\"; */\n\n/* import { IMapleGlobals } from \"../../globals/v1/interfaces/IMapleGlobals.sol\"; */\n\n/* import { IChainlinkOracle } from \"./interfaces/IChainlinkOracle.sol\"; */\n\n/// @title ChainlinkOracle is a wrapper contract for Chainlink oracle price feeds that allows for manual price feed overrides.\ncontract ChainlinkOracle is IChainlinkOracle, Ownable {\n\n    IChainlinkAggregatorV3 public override priceFeed;\n    IMapleGlobals public override globals;\n\n    address public override immutable assetAddress;\n\n    bool   public override manualOverride;\n    int256 public override manualPrice;\n\n    /**\n        @dev   Creates a new Chainlink based oracle.\n        @param _aggregator   Address of Chainlink aggregator.\n        @param _assetAddress Address of currency (0x0 for ETH).\n        @param _owner        Address of the owner of the contract.\n     */\n    constructor(address _aggregator, address _assetAddress, address _owner) public {\n        require(_aggregator != address(0), \"CO:ZERO_AGGREGATOR_ADDR\");\n        priceFeed       = IChainlinkAggregatorV3(_aggregator);\n        assetAddress    = _assetAddress;\n        transferOwnership(_owner);\n    }\n\n    function getLatestPrice() public override view returns (int256) {\n        if (manualOverride) return manualPrice;\n        (uint80 roundID, int256 price,,uint256 timeStamp, uint80 answeredInRound) = priceFeed.latestRoundData();\n\n        require(timeStamp != 0,             \"CO:ROUND_NOT_COMPLETE\");\n        require(answeredInRound >= roundID,         \"CO:STALE_DATA\");\n        require(price != int256(0),                 \"CO:ZERO_PRICE\");\n        return price;\n    }\n\n    function changeAggregator(address aggregator) external override onlyOwner {\n        require(aggregator != address(0), \"CO:ZERO_AGGREGATOR_ADDR\");\n        emit ChangeAggregatorFeed(aggregator, address(priceFeed));\n        priceFeed = IChainlinkAggregatorV3(aggregator);\n    }\n\n    function getAssetAddress() external override view returns (address) {\n        return assetAddress;\n    }\n\n    function getDenomination() external override pure returns (bytes32) {\n        // All Chainlink oracles are denominated in USD.\n        return bytes32(\"USD\");\n    }\n\n    function setManualPrice(int256 _price) public override onlyOwner {\n        require(manualOverride, \"CO:MANUAL_OVERRIDE_NOT_ACTIVE\");\n        emit SetManualPrice(manualPrice, _price);\n        manualPrice = _price;\n    }\n\n    function setManualOverride(bool _override) public override onlyOwner {\n        manualOverride = _override;\n        emit SetManualOverride(_override);\n    }\n\n}\n"
      }
    },
    "settings": {
      "optimizer": {
        "enabled": true,
        "runs": 200
      },
      "outputSelection": {
        "*": {
          "*": [
            "abi",
            "evm.bytecode",
            "evm.deployedBytecode",
            "evm.methodIdentifiers"
          ],
          "": [
            "ast"
          ]
        }
      }
    }
  },
  "output": {
    "contracts": {
      "contracts/core/chainlink-oracle/v1/ChainlinkOracle.sol": {
        "ChainlinkOracle": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_aggregator",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_assetAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "_newMedianizer",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "_oldMedianizer",
                  "type": "address"
                }
              ],
              "name": "ChangeAggregatorFeed",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "_override",
                  "type": "bool"
                }
              ],
              "name": "SetManualOverride",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "int256",
                  "name": "_oldPrice",
                  "type": "int256"
                },
                {
                  "indexed": false,
                  "internalType": "int256",
                  "name": "_newPrice",
                  "type": "int256"
                }
              ],
              "name": "SetManualPrice",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "assetAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "aggregator",
                  "type": "address"
                }
              ],
              "name": "changeAggregator",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getAssetAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getDenomination",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getLatestPrice",
              "outputs": [
                {
                  "internalType": "int256",
                  "name": "",
                  "type": "int256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "globals",
              "outputs": [
                {
                  "internalType": "contract IMapleGlobals",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "manualOverride",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "manualPrice",
              "outputs": [
                {
                  "internalType": "int256",
                  "name": "",
                  "type": "int256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "priceFeed",
              "outputs": [
                {
                  "internalType": "contract IChainlinkAggregatorV3",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bool",
                  "name": "_override",
                  "type": "bool"
                }
              ],
              "name": "setManualOverride",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "int256",
                  "name": "_price",
                  "type": "int256"
                }
              ],
              "name": "setManualPrice",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60a060405234801561001057600080fd5b50604051610bbb380380610bbb8339818101604052606081101561003357600080fd5b508051602082015160409092015190919060006100576001600160e01b0361012816565b600080546001600160a01b0319166001600160a01b038316908117825560405192935091600080516020610b9b833981519152908290a3506001600160a01b0383166100ea576040805162461bcd60e51b815260206004820152601760248201527f434f3a5a45524f5f41474752454741544f525f41444452000000000000000000604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b038516179055606082901b6001600160601b0319166080526101208161012c565b50505061022d565b3390565b61013d6001600160e01b0361012816565b6000546001600160a01b0390811691161461019f576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166101e45760405162461bcd60e51b8152600401808060200182810382526026815260200180610b756026913960400191505060405180910390fd5b600080546040516001600160a01b0380851693921691600080516020610b9b83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60805160601c61092661024f6000398061020d52806103df52506109266000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80638da5cb5b1161008c578063bae6d62b11610066578063bae6d62b1461019b578063c3124525146101b7578063e57f3e25146101bf578063f2fde38b146101e5576100ea565b80638da5cb5b146101835780638e15f4731461018b578063a2c9d63014610193576100ea565b80635f78445d116100c85780635f78445d1461014e578063670ab5e91461016b578063715018a614610173578063741bef1a1461017b576100ea565b80631ba46cfd146100ef5780631fc601c914610113578063359675011461012d575b600080fd5b6100f761020b565b604080516001600160a01b039092168252519081900360200190f35b61011b61022f565b60408051918252519081900360200190f35b61014c6004803603602081101561014357600080fd5b5035151561023a565b005b61014c6004803603602081101561016457600080fd5b50356102e5565b6100f76103dd565b61014c610401565b6100f76104a3565b6100f76104b2565b61011b6104c1565b61011b61066c565b6101a3610672565b604080519115158252519081900360200190f35b6100f7610682565b61014c600480360360208110156101d557600080fd5b50356001600160a01b0316610691565b61014c600480360360208110156101fb57600080fd5b50356001600160a01b03166107ae565b7f000000000000000000000000000000000000000000000000000000000000000081565b621554d160ea1b5b90565b6102426108a6565b6000546001600160a01b03908116911614610292576040805162461bcd60e51b815260206004820181905260248201526000805160206108d1833981519152604482015290519081900360640190fd5b60028054821515600160a01b810260ff60a01b199092169190911790915560408051918252517f04baa8606d8ce0d9f3ff26f474e838ccfdb363859c901d90d3e6a28011e6a9319181900360200190a150565b6102ed6108a6565b6000546001600160a01b0390811691161461033d576040805162461bcd60e51b815260206004820181905260248201526000805160206108d1833981519152604482015290519081900360640190fd5b600254600160a01b900460ff1661039b576040805162461bcd60e51b815260206004820152601d60248201527f434f3a4d414e55414c5f4f564552524944455f4e4f545f414354495645000000604482015290519081900360640190fd5b600354604080519182526020820183905280517f9adbc4d17189bdc20df3fce730fc450b08118a5cbfadf505324ae66d45a454299281900390910190a1600355565b7f000000000000000000000000000000000000000000000000000000000000000090565b6104096108a6565b6000546001600160a01b03908116911614610459576040805162461bcd60e51b815260206004820181905260248201526000805160206108d1833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6001546001600160a01b031681565b6000546001600160a01b031690565b600254600090600160a01b900460ff16156104df5750600354610237565b600080600080600160009054906101000a90046001600160a01b03166001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b15801561053357600080fd5b505afa158015610547573d6000803e3d6000fd5b505050506040513d60a081101561055d57600080fd5b5080516020820151606083015160809093015191965094509092509050816105c4576040805162461bcd60e51b8152602060048201526015602482015274434f3a524f554e445f4e4f545f434f4d504c45544560581b604482015290519081900360640190fd5b8369ffffffffffffffffffff168169ffffffffffffffffffff161015610621576040805162461bcd60e51b815260206004820152600d60248201526c434f3a5354414c455f4441544160981b604482015290519081900360640190fd5b82610663576040805162461bcd60e51b815260206004820152600d60248201526c434f3a5a45524f5f505249434560981b604482015290519081900360640190fd5b50909250505090565b60035481565b600254600160a01b900460ff1681565b6002546001600160a01b031681565b6106996108a6565b6000546001600160a01b039081169116146106e9576040805162461bcd60e51b815260206004820181905260248201526000805160206108d1833981519152604482015290519081900360640190fd5b6001600160a01b038116610744576040805162461bcd60e51b815260206004820152601760248201527f434f3a5a45524f5f41474752454741544f525f41444452000000000000000000604482015290519081900360640190fd5b600154604080516001600160a01b038085168252909216602083015280517f766a6b8d2dc2bd8f9cf9c70fc734c08a8f6beec4ca859964ad0c0f60242edd6a9281900390910190a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b6107b66108a6565b6000546001600160a01b03908116911614610806576040805162461bcd60e51b815260206004820181905260248201526000805160206108d1833981519152604482015290519081900360640190fd5b6001600160a01b03811661084b5760405162461bcd60e51b81526004018080602001828103825260268152602001806108ab6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b339056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a264697066735822122078d0171fdf827e3f80a5b9d7f121cf3d2367dc24760f22b8583882e555068e2364736f6c634300060b00334f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573738be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0",
              "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xBBB CODESIZE SUB DUP1 PUSH2 0xBBB DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP2 SWAP1 PUSH1 0x0 PUSH2 0x57 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x128 AND 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 SWAP3 SWAP4 POP SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xB9B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP3 SWAP1 LOG3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xEA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x434F3A5A45524F5F41474752454741544F525F41444452000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND OR SWAP1 SSTORE PUSH1 0x60 DUP3 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x80 MSTORE PUSH2 0x120 DUP2 PUSH2 0x12C JUMP JUMPDEST POP POP POP PUSH2 0x22D JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x13D PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x128 AND JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x19F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1E4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB75 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xB9B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH2 0x926 PUSH2 0x24F PUSH1 0x0 CODECOPY DUP1 PUSH2 0x20D MSTORE DUP1 PUSH2 0x3DF MSTORE POP PUSH2 0x926 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 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xBAE6D62B GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xBAE6D62B EQ PUSH2 0x19B JUMPI DUP1 PUSH4 0xC3124525 EQ PUSH2 0x1B7 JUMPI DUP1 PUSH4 0xE57F3E25 EQ PUSH2 0x1BF JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x1E5 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x183 JUMPI DUP1 PUSH4 0x8E15F473 EQ PUSH2 0x18B JUMPI DUP1 PUSH4 0xA2C9D630 EQ PUSH2 0x193 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x5F78445D GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x5F78445D EQ PUSH2 0x14E JUMPI DUP1 PUSH4 0x670AB5E9 EQ PUSH2 0x16B JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x173 JUMPI DUP1 PUSH4 0x741BEF1A EQ PUSH2 0x17B JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x1BA46CFD EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x1FC601C9 EQ PUSH2 0x113 JUMPI DUP1 PUSH4 0x35967501 EQ PUSH2 0x12D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0x20B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x11B PUSH2 0x22F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x14C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x143 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0x23A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x14C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x164 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2E5 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x3DD JUMP JUMPDEST PUSH2 0x14C PUSH2 0x401 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x4A3 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x4B2 JUMP JUMPDEST PUSH2 0x11B PUSH2 0x4C1 JUMP JUMPDEST PUSH2 0x11B PUSH2 0x66C JUMP JUMPDEST PUSH2 0x1A3 PUSH2 0x672 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xF7 PUSH2 0x682 JUMP JUMPDEST PUSH2 0x14C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x691 JUMP JUMPDEST PUSH2 0x14C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7AE JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH3 0x1554D1 PUSH1 0xEA SHL JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x242 PUSH2 0x8A6 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x292 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x8D1 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 SLOAD DUP3 ISZERO ISZERO PUSH1 0x1 PUSH1 0xA0 SHL DUP2 MUL PUSH1 0xFF PUSH1 0xA0 SHL NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD PUSH32 0x4BAA8606D8CE0D9F3FF26F474E838CCFDB363859C901D90D3E6A28011E6A931 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x2ED PUSH2 0x8A6 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x33D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x8D1 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x39B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x434F3A4D414E55414C5F4F564552524944455F4E4F545F414354495645000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP4 SWAP1 MSTORE DUP1 MLOAD PUSH32 0x9ADBC4D17189BDC20DF3FCE730FC450B08118A5CBFADF505324AE66D45A45429 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x3 SSTORE JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x409 PUSH2 0x8A6 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x459 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x8D1 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 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 SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x4DF JUMPI POP PUSH1 0x3 SLOAD PUSH2 0x237 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFEAF968C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x533 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x547 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x55D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x80 SWAP1 SWAP4 ADD MLOAD SWAP2 SWAP7 POP SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP DUP2 PUSH2 0x5C4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x434F3A524F554E445F4E4F545F434F4D504C455445 PUSH1 0x58 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x621 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x434F3A5354414C455F44415441 PUSH1 0x98 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x663 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x434F3A5A45524F5F5052494345 PUSH1 0x98 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x699 PUSH2 0x8A6 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x6E9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x8D1 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x744 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x434F3A5A45524F5F41474752454741544F525F41444452000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND DUP3 MSTORE SWAP1 SWAP3 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0x766A6B8D2DC2BD8F9CF9C70FC734C08A8F6BEEC4CA859964AD0C0F60242EDD6A SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x7B6 PUSH2 0x8A6 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x806 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x8D1 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x84B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x8AB PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER SWAP1 JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F20616464726573734F776E61626C653A2063616C6C657220 PUSH10 0x73206E6F742074686520 PUSH16 0x776E6572A264697066735822122078D0 OR 0x1F 0xDF DUP3 PUSH31 0x3F80A5B9D7F121CF3D2367DC24760F22B8583882E555068E2364736F6C6343 STOP MOD SIGNEXTEND STOP CALLER 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F20616464726573738BE0079C531659141344CD1FD0A4F284 NOT 0x49 PUSH32 0x9722A3DAAFE3B4186F6B6457E000000000000000000000000000000000000000 ",
              "sourceMap": "29496:2272:0:-:0;;;30054:296;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30054:296:0;;;;;;;;;;;;;;27544:17;27564:12;-1:-1:-1;;;;;27564:10:0;:12;:::i;:::-;27586:6;:18;;-1:-1:-1;;;;;;27586:18:0;-1:-1:-1;;;;;27586:18:0;;;;;;;27619:43;;27586:18;;-1:-1:-1;27586:18:0;-1:-1:-1;;;;;;;;;;;27619:43:0;27586:6;;27619:43;-1:-1:-1;;;;;;30151:25:0;;30143:61;;;;;-1:-1:-1;;;30143:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;30214:9;:53;;-1:-1:-1;;;;;;30214:53:0;-1:-1:-1;;;;;30214:53:0;;;;;30277:31;;;;-1:-1:-1;;;;;;30277:31:0;;;30318:25;30336:6;30318:17;:25::i;:::-;30054:296;;;29496:2272;;26276:104;26363:10;26276:104;:::o;28662:240::-;27959:12;-1:-1:-1;;;;;27959:10:0;:12;:::i;:::-;27949:6;;-1:-1:-1;;;;;27949:6:0;;;:22;;;27941:67;;;;;-1:-1:-1;;;27941:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;28750:22:0;::::1;28742:73;;;;-1:-1:-1::0;;;28742:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28851:6;::::0;;28830:38:::1;::::0;-1:-1:-1;;;;;28830:38:0;;::::1;::::0;28851:6;::::1;::::0;-1:-1:-1;;;;;;;;;;;28830:38:0;::::1;28878:6;:17:::0;;-1:-1:-1;;;;;;28878:17:0::1;-1:-1:-1::0;;;;;28878:17:0;;;::::1;::::0;;;::::1;::::0;;28662:240::o;29496:2272::-;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {
                "775": [
                  {
                    "length": 32,
                    "start": 525
                  },
                  {
                    "length": 32,
                    "start": 991
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100ea5760003560e01c80638da5cb5b1161008c578063bae6d62b11610066578063bae6d62b1461019b578063c3124525146101b7578063e57f3e25146101bf578063f2fde38b146101e5576100ea565b80638da5cb5b146101835780638e15f4731461018b578063a2c9d63014610193576100ea565b80635f78445d116100c85780635f78445d1461014e578063670ab5e91461016b578063715018a614610173578063741bef1a1461017b576100ea565b80631ba46cfd146100ef5780631fc601c914610113578063359675011461012d575b600080fd5b6100f761020b565b604080516001600160a01b039092168252519081900360200190f35b61011b61022f565b60408051918252519081900360200190f35b61014c6004803603602081101561014357600080fd5b5035151561023a565b005b61014c6004803603602081101561016457600080fd5b50356102e5565b6100f76103dd565b61014c610401565b6100f76104a3565b6100f76104b2565b61011b6104c1565b61011b61066c565b6101a3610672565b604080519115158252519081900360200190f35b6100f7610682565b61014c600480360360208110156101d557600080fd5b50356001600160a01b0316610691565b61014c600480360360208110156101fb57600080fd5b50356001600160a01b03166107ae565b7f000000000000000000000000000000000000000000000000000000000000000081565b621554d160ea1b5b90565b6102426108a6565b6000546001600160a01b03908116911614610292576040805162461bcd60e51b815260206004820181905260248201526000805160206108d1833981519152604482015290519081900360640190fd5b60028054821515600160a01b810260ff60a01b199092169190911790915560408051918252517f04baa8606d8ce0d9f3ff26f474e838ccfdb363859c901d90d3e6a28011e6a9319181900360200190a150565b6102ed6108a6565b6000546001600160a01b0390811691161461033d576040805162461bcd60e51b815260206004820181905260248201526000805160206108d1833981519152604482015290519081900360640190fd5b600254600160a01b900460ff1661039b576040805162461bcd60e51b815260206004820152601d60248201527f434f3a4d414e55414c5f4f564552524944455f4e4f545f414354495645000000604482015290519081900360640190fd5b600354604080519182526020820183905280517f9adbc4d17189bdc20df3fce730fc450b08118a5cbfadf505324ae66d45a454299281900390910190a1600355565b7f000000000000000000000000000000000000000000000000000000000000000090565b6104096108a6565b6000546001600160a01b03908116911614610459576040805162461bcd60e51b815260206004820181905260248201526000805160206108d1833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6001546001600160a01b031681565b6000546001600160a01b031690565b600254600090600160a01b900460ff16156104df5750600354610237565b600080600080600160009054906101000a90046001600160a01b03166001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b15801561053357600080fd5b505afa158015610547573d6000803e3d6000fd5b505050506040513d60a081101561055d57600080fd5b5080516020820151606083015160809093015191965094509092509050816105c4576040805162461bcd60e51b8152602060048201526015602482015274434f3a524f554e445f4e4f545f434f4d504c45544560581b604482015290519081900360640190fd5b8369ffffffffffffffffffff168169ffffffffffffffffffff161015610621576040805162461bcd60e51b815260206004820152600d60248201526c434f3a5354414c455f4441544160981b604482015290519081900360640190fd5b82610663576040805162461bcd60e51b815260206004820152600d60248201526c434f3a5a45524f5f505249434560981b604482015290519081900360640190fd5b50909250505090565b60035481565b600254600160a01b900460ff1681565b6002546001600160a01b031681565b6106996108a6565b6000546001600160a01b039081169116146106e9576040805162461bcd60e51b815260206004820181905260248201526000805160206108d1833981519152604482015290519081900360640190fd5b6001600160a01b038116610744576040805162461bcd60e51b815260206004820152601760248201527f434f3a5a45524f5f41474752454741544f525f41444452000000000000000000604482015290519081900360640190fd5b600154604080516001600160a01b038085168252909216602083015280517f766a6b8d2dc2bd8f9cf9c70fc734c08a8f6beec4ca859964ad0c0f60242edd6a9281900390910190a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b6107b66108a6565b6000546001600160a01b03908116911614610806576040805162461bcd60e51b815260206004820181905260248201526000805160206108d1833981519152604482015290519081900360640190fd5b6001600160a01b03811661084b5760405162461bcd60e51b81526004018080602001828103825260268152602001806108ab6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b339056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a264697066735822122078d0171fdf827e3f80a5b9d7f121cf3d2367dc24760f22b8583882e555068e2364736f6c634300060b0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xBAE6D62B GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xBAE6D62B EQ PUSH2 0x19B JUMPI DUP1 PUSH4 0xC3124525 EQ PUSH2 0x1B7 JUMPI DUP1 PUSH4 0xE57F3E25 EQ PUSH2 0x1BF JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x1E5 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x183 JUMPI DUP1 PUSH4 0x8E15F473 EQ PUSH2 0x18B JUMPI DUP1 PUSH4 0xA2C9D630 EQ PUSH2 0x193 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x5F78445D GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x5F78445D EQ PUSH2 0x14E JUMPI DUP1 PUSH4 0x670AB5E9 EQ PUSH2 0x16B JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x173 JUMPI DUP1 PUSH4 0x741BEF1A EQ PUSH2 0x17B JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x1BA46CFD EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x1FC601C9 EQ PUSH2 0x113 JUMPI DUP1 PUSH4 0x35967501 EQ PUSH2 0x12D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0x20B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x11B PUSH2 0x22F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x14C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x143 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0x23A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x14C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x164 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2E5 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x3DD JUMP JUMPDEST PUSH2 0x14C PUSH2 0x401 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x4A3 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x4B2 JUMP JUMPDEST PUSH2 0x11B PUSH2 0x4C1 JUMP JUMPDEST PUSH2 0x11B PUSH2 0x66C JUMP JUMPDEST PUSH2 0x1A3 PUSH2 0x672 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xF7 PUSH2 0x682 JUMP JUMPDEST PUSH2 0x14C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x691 JUMP JUMPDEST PUSH2 0x14C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7AE JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH3 0x1554D1 PUSH1 0xEA SHL JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x242 PUSH2 0x8A6 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x292 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x8D1 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 SLOAD DUP3 ISZERO ISZERO PUSH1 0x1 PUSH1 0xA0 SHL DUP2 MUL PUSH1 0xFF PUSH1 0xA0 SHL NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD PUSH32 0x4BAA8606D8CE0D9F3FF26F474E838CCFDB363859C901D90D3E6A28011E6A931 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x2ED PUSH2 0x8A6 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x33D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x8D1 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x39B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x434F3A4D414E55414C5F4F564552524944455F4E4F545F414354495645000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP4 SWAP1 MSTORE DUP1 MLOAD PUSH32 0x9ADBC4D17189BDC20DF3FCE730FC450B08118A5CBFADF505324AE66D45A45429 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x3 SSTORE JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x409 PUSH2 0x8A6 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x459 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x8D1 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 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 SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x4DF JUMPI POP PUSH1 0x3 SLOAD PUSH2 0x237 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFEAF968C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x533 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x547 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x55D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x80 SWAP1 SWAP4 ADD MLOAD SWAP2 SWAP7 POP SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP DUP2 PUSH2 0x5C4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x434F3A524F554E445F4E4F545F434F4D504C455445 PUSH1 0x58 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x621 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x434F3A5354414C455F44415441 PUSH1 0x98 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x663 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x434F3A5A45524F5F5052494345 PUSH1 0x98 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x699 PUSH2 0x8A6 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x6E9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x8D1 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x744 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x434F3A5A45524F5F41474752454741544F525F41444452000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND DUP3 MSTORE SWAP1 SWAP3 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0x766A6B8D2DC2BD8F9CF9C70FC734C08A8F6BEEC4CA859964AD0C0F60242EDD6A SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x7B6 PUSH2 0x8A6 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x806 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x8D1 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x84B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x8AB PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER SWAP1 JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F20616464726573734F776E61626C653A2063616C6C657220 PUSH10 0x73206E6F742074686520 PUSH16 0x776E6572A264697066735822122078D0 OR 0x1F 0xDF DUP3 PUSH31 0x3F80A5B9D7F121CF3D2367DC24760F22B8583882E555068E2364736F6C6343 STOP MOD SIGNEXTEND STOP CALLER ",
              "sourceMap": "29496:2272:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29655:46;;;:::i;:::-;;;;-1:-1:-1;;;;;29655:46:0;;;;;;;;;;;;;;31217:163;;;:::i;:::-;;;;;;;;;;;;;;;;31610:155;;;;;;;;;;;;;;;;-1:-1:-1;31610:155:0;;;;:::i;:::-;;31386:218;;;;;;;;;;;;;;;;-1:-1:-1;31386:218:0;;:::i;31107:104::-;;;:::i;28368:145::-;;;:::i;29557:48::-;;;:::i;27745:77::-;;;:::i;30356:465::-;;;:::i;29751:34::-;;;:::i;29708:37::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;29611;;;:::i;30827:274::-;;;;;;;;;;;;;;;;-1:-1:-1;30827:274:0;-1:-1:-1;;;;;30827:274:0;;:::i;28662:240::-;;;;;;;;;;;;;;;;-1:-1:-1;28662:240:0;-1:-1:-1;;;;;28662:240:0;;:::i;29655:46::-;;;:::o;31217:163::-;-1:-1:-1;;;31217:163:0;;:::o;31610:155::-;27959:12;:10;:12::i;:::-;27949:6;;-1:-1:-1;;;;;27949:6:0;;;:22;;;27941:67;;;;;-1:-1:-1;;;27941:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;27941:67:0;;;;;;;;;;;;;;;31689:14:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;31689:26:0;::::1;-1:-1:-1::0;;;;31689:26:0;;::::1;::::0;;;::::1;::::0;;;31730:28:::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;31610:155:::0;:::o;31386:218::-;27959:12;:10;:12::i;:::-;27949:6;;-1:-1:-1;;;;;27949:6:0;;;:22;;;27941:67;;;;;-1:-1:-1;;;27941:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;27941:67:0;;;;;;;;;;;;;;;31469:14:::1;::::0;-1:-1:-1;;;31469:14:0;::::1;;;31461:56;;;::::0;;-1:-1:-1;;;31461:56:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;31547:11;::::0;31532:35:::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;;;;;;;::::1;31577:11;:20:::0;31386:218::o;31107:104::-;31192:12;31107:104;:::o;28368:145::-;27959:12;:10;:12::i;:::-;27949:6;;-1:-1:-1;;;;;27949:6:0;;;:22;;;27941:67;;;;;-1:-1:-1;;;27941:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;27941:67:0;;;;;;;;;;;;;;;28474:1:::1;28458:6:::0;;28437:40:::1;::::0;-1:-1:-1;;;;;28458:6:0;;::::1;::::0;28437:40:::1;::::0;28474:1;;28437:40:::1;28504:1;28487:19:::0;;-1:-1:-1;;;;;;28487:19:0::1;::::0;;28368:145::o;29557:48::-;;;-1:-1:-1;;;;;29557:48:0;;:::o;27745:77::-;27783:7;27809:6;-1:-1:-1;;;;;27809:6:0;27745:77;:::o;30356:465::-;30434:14;;30412:6;;-1:-1:-1;;;30434:14:0;;;;30430:38;;;-1:-1:-1;30457:11:0;;30450:18;;30430:38;30479:14;30495:12;30509:17;30528:22;30554:9;;;;;;;;;-1:-1:-1;;;;;30554:9:0;-1:-1:-1;;;;;30554:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30554:27:0;;;;;;;;;;;;;;;;;-1:-1:-1;30554:27:0;-1:-1:-1;30554:27:0;;-1:-1:-1;30554:27:0;-1:-1:-1;30600:14:0;30592:60;;;;;-1:-1:-1;;;30592:60:0;;;;;;;;;;;;-1:-1:-1;;;30592:60:0;;;;;;;;;;;;;;;30689:7;30670:26;;:15;:26;;;;30662:60;;;;;-1:-1:-1;;;30662:60:0;;;;;;;;;;;;-1:-1:-1;;;30662:60:0;;;;;;;;;;;;;;;30740:18;30732:60;;;;;-1:-1:-1;;;30732:60:0;;;;;;;;;;;;-1:-1:-1;;;30732:60:0;;;;;;;;;;;;;;;-1:-1:-1;30809:5:0;;-1:-1:-1;;;30356:465:0;:::o;29751:34::-;;;;:::o;29708:37::-;;;-1:-1:-1;;;29708:37:0;;;;;:::o;29611:::-;;;-1:-1:-1;;;;;29611:37:0;;:::o;30827:274::-;27959:12;:10;:12::i;:::-;27949:6;;-1:-1:-1;;;;;27949:6:0;;;:22;;;27941:67;;;;;-1:-1:-1;;;27941:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;27941:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;30919:24:0;::::1;30911:60;;;::::0;;-1:-1:-1;;;30911:60:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;31027:9;::::0;30986:52:::1;::::0;;-1:-1:-1;;;;;30986:52:0;;::::1;::::0;;31027:9;;::::1;30986:52;::::0;::::1;::::0;;;::::1;::::0;;;;;;;;::::1;31048:9;:46:::0;;-1:-1:-1;;;;;;31048:46:0::1;-1:-1:-1::0;;;;;31048:46:0;;;::::1;::::0;;;::::1;::::0;;30827:274::o;28662:240::-;27959:12;:10;:12::i;:::-;27949:6;;-1:-1:-1;;;;;27949:6:0;;;:22;;;27941:67;;;;;-1:-1:-1;;;27941:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;27941:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;28750:22:0;::::1;28742:73;;;;-1:-1:-1::0;;;28742:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28851:6;::::0;;28830:38:::1;::::0;-1:-1:-1;;;;;28830:38:0;;::::1;::::0;28851:6;::::1;::::0;28830:38:::1;::::0;::::1;28878:6;:17:::0;;-1:-1:-1;;;;;;28878:17:0::1;-1:-1:-1::0;;;;;28878:17:0;;;::::1;::::0;;;::::1;::::0;;28662:240::o;26276:104::-;26363:10;26276:104;:::o"
            },
            "methodIdentifiers": {
              "assetAddress()": "1ba46cfd",
              "changeAggregator(address)": "e57f3e25",
              "getAssetAddress()": "670ab5e9",
              "getDenomination()": "1fc601c9",
              "getLatestPrice()": "8e15f473",
              "globals()": "c3124525",
              "manualOverride()": "bae6d62b",
              "manualPrice()": "a2c9d630",
              "owner()": "8da5cb5b",
              "priceFeed()": "741bef1a",
              "renounceOwnership()": "715018a6",
              "setManualOverride(bool)": "35967501",
              "setManualPrice(int256)": "5f78445d",
              "transferOwnership(address)": "f2fde38b"
            }
          }
        },
        "Context": {
          "abi": [],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {}
          }
        },
        "IChainlinkAggregatorV3": {
          "abi": [
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "description",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint80",
                  "name": "_roundId",
                  "type": "uint80"
                }
              ],
              "name": "getRoundData",
              "outputs": [
                {
                  "internalType": "uint80",
                  "name": "roundId",
                  "type": "uint80"
                },
                {
                  "internalType": "int256",
                  "name": "answer",
                  "type": "int256"
                },
                {
                  "internalType": "uint256",
                  "name": "startedAt",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedAt",
                  "type": "uint256"
                },
                {
                  "internalType": "uint80",
                  "name": "answeredInRound",
                  "type": "uint80"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "latestRoundData",
              "outputs": [
                {
                  "internalType": "uint80",
                  "name": "roundId",
                  "type": "uint80"
                },
                {
                  "internalType": "int256",
                  "name": "answer",
                  "type": "int256"
                },
                {
                  "internalType": "uint256",
                  "name": "startedAt",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedAt",
                  "type": "uint256"
                },
                {
                  "internalType": "uint80",
                  "name": "answeredInRound",
                  "type": "uint80"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "version",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "decimals()": "313ce567",
              "description()": "7284e416",
              "getRoundData(uint80)": "9a6fc8f5",
              "latestRoundData()": "feaf968c",
              "version()": "54fd4d50"
            }
          }
        },
        "IChainlinkOracle": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "_newMedianizer",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "_oldMedianizer",
                  "type": "address"
                }
              ],
              "name": "ChangeAggregatorFeed",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "_override",
                  "type": "bool"
                }
              ],
              "name": "SetManualOverride",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "int256",
                  "name": "_oldPrice",
                  "type": "int256"
                },
                {
                  "indexed": false,
                  "internalType": "int256",
                  "name": "_newPrice",
                  "type": "int256"
                }
              ],
              "name": "SetManualPrice",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "assetAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "aggregator",
                  "type": "address"
                }
              ],
              "name": "changeAggregator",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getAssetAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getDenomination",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getLatestPrice",
              "outputs": [
                {
                  "internalType": "int256",
                  "name": "",
                  "type": "int256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "globals",
              "outputs": [
                {
                  "internalType": "contract IMapleGlobals",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "manualOverride",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "manualPrice",
              "outputs": [
                {
                  "internalType": "int256",
                  "name": "",
                  "type": "int256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "priceFeed",
              "outputs": [
                {
                  "internalType": "contract IChainlinkAggregatorV3",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bool",
                  "name": "_override",
                  "type": "bool"
                }
              ],
              "name": "setManualOverride",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "int256",
                  "name": "_price",
                  "type": "int256"
                }
              ],
              "name": "setManualPrice",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "assetAddress()": "1ba46cfd",
              "changeAggregator(address)": "e57f3e25",
              "getAssetAddress()": "670ab5e9",
              "getDenomination()": "1fc601c9",
              "getLatestPrice()": "8e15f473",
              "globals()": "c3124525",
              "manualOverride()": "bae6d62b",
              "manualPrice()": "a2c9d630",
              "priceFeed()": "741bef1a",
              "setManualOverride(bool)": "35967501",
              "setManualPrice(int256)": "5f78445d"
            }
          }
        },
        "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"
            }
          }
        },
        "Ownable": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "owner()": "8da5cb5b",
              "renounceOwnership()": "715018a6",
              "transferOwnership(address)": "f2fde38b"
            }
          }
        }
      }
    },
    "sources": {
      "contracts/core/chainlink-oracle/v1/ChainlinkOracle.sol": {
        "ast": {
          "absolutePath": "contracts/core/chainlink-oracle/v1/ChainlinkOracle.sol",
          "exportedSymbols": {
            "ChainlinkOracle": [
              960
            ],
            "Context": [
              655
            ],
            "IChainlinkAggregatorV3": [
              544
            ],
            "IChainlinkOracle": [
              634
            ],
            "IMapleGlobals": [
              492
            ],
            "IOracle": [
              500
            ],
            "Ownable": [
              761
            ]
          },
          "id": 961,
          "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": "131:39:0"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 2,
                "nodeType": "StructuredDocumentation",
                "src": "265:104:0",
                "text": "@title MapleGlobals maintains a central source of parameters and allowlists for the Maple protocol."
              },
              "fullyImplemented": false,
              "id": 492,
              "linearizedBaseContracts": [
                492
              ],
              "name": "IMapleGlobals",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 3,
                    "nodeType": "StructuredDocumentation",
                    "src": "400:91:0",
                    "text": "@dev   Emits an event indicating the MapleGlobals contract was created."
                  },
                  "id": 5,
                  "name": "Initialized",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "513:2:0"
                  },
                  "src": "496:20:0"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 6,
                    "nodeType": "StructuredDocumentation",
                    "src": "522: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": 16,
                  "name": "CollateralAssetSet",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 15,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16,
                        "src": "888:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "888:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "decimals",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16,
                        "src": "903:16:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "903:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "symbol",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16,
                        "src": "921:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 11,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "921:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "valid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16,
                        "src": "936:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 13,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "936:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "887:60:0"
                  },
                  "src": "863:85:0"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 17,
                    "nodeType": "StructuredDocumentation",
                    "src": "954: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": 27,
                  "name": "LiquidityAssetSet",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 26,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 27,
                        "src": "1317:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1317:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "decimals",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 27,
                        "src": "1332:16:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1332:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "symbol",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 27,
                        "src": "1350:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 22,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1350:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "valid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 27,
                        "src": "1365:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 24,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1365:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1316:60:0"
                  },
                  "src": "1293:84:0"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 28,
                    "nodeType": "StructuredDocumentation",
                    "src": "1383: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": 34,
                  "name": "OracleSet",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 33,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 34,
                        "src": "1587:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1587:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "oracle",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 34,
                        "src": "1602:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1602:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1586:31:0"
                  },
                  "src": "1571:47:0"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 35,
                    "nodeType": "StructuredDocumentation",
                    "src": "1624:40:0",
                    "text": "@dev This is unused."
                  },
                  "id": 41,
                  "name": "TransferRestrictionExemptionSet",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 40,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 37,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "exemptedContract",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 41,
                        "src": "1707:32:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 36,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1707:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 39,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "valid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 41,
                        "src": "1741:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 38,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1741:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1706:46:0"
                  },
                  "src": "1669:84:0"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 42,
                    "nodeType": "StructuredDocumentation",
                    "src": "1759: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": 48,
                  "name": "BalancerPoolSet",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 47,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "balancerPool",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 48,
                        "src": "2018:20:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 43,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2018:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 46,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "valid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 48,
                        "src": "2040:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 45,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2040:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2017:34:0"
                  },
                  "src": "1996:56:0"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 49,
                    "nodeType": "StructuredDocumentation",
                    "src": "2058:151:0",
                    "text": "@dev   Emits an event indicating a PendingGovernor was set.\n@param pendingGovernor The address of the new Pending Governor."
                  },
                  "id": 53,
                  "name": "PendingGovernorSet",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 52,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 51,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pendingGovernor",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 53,
                        "src": "2239:31:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 50,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2239:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2238:33:0"
                  },
                  "src": "2214:58:0"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 54,
                    "nodeType": "StructuredDocumentation",
                    "src": "2278: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": 58,
                  "name": "GovernorAccepted",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 57,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 56,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "governor",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 58,
                        "src": "2470:24:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 55,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2470:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2469:26:0"
                  },
                  "src": "2447:49:0"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 59,
                    "nodeType": "StructuredDocumentation",
                    "src": "2502: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": 65,
                  "name": "GlobalsParamSet",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 64,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 61,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "which",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 65,
                        "src": "2754:21:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 60,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2754:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 63,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 65,
                        "src": "2777:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 62,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2777:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2753:38:0"
                  },
                  "src": "2732:60:0"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 66,
                    "nodeType": "StructuredDocumentation",
                    "src": "2798: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": 72,
                  "name": "GlobalsAddressSet",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 71,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 68,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "which",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 72,
                        "src": "3038:21:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 67,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3038:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 70,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "addr",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 72,
                        "src": "3061:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 69,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3061:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3037:37:0"
                  },
                  "src": "3014:61:0"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 73,
                    "nodeType": "StructuredDocumentation",
                    "src": "3081: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": 77,
                  "name": "ProtocolPaused",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 76,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 75,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "pause",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 77,
                        "src": "3255:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 74,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3255:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3254:12:0"
                  },
                  "src": "3234:33:0"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 78,
                    "nodeType": "StructuredDocumentation",
                    "src": "3273:143:0",
                    "text": "@dev   Emits an event indicating the GlobalAdmin was set.\n@param newGlobalAdmin The address of the new GlobalAdmin."
                  },
                  "id": 82,
                  "name": "GlobalAdminSet",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 81,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 80,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "newGlobalAdmin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 82,
                        "src": "3442:30:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 79,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3442:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3441:32:0"
                  },
                  "src": "3421:53:0"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 83,
                    "nodeType": "StructuredDocumentation",
                    "src": "3480: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": 89,
                  "name": "PoolDelegateSet",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 88,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 85,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "poolDelegate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 89,
                        "src": "3737:28:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 84,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3737:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 87,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "valid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 89,
                        "src": "3767:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 86,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3767:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3736:42:0"
                  },
                  "src": "3715:64:0"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 90,
                    "nodeType": "StructuredDocumentation",
                    "src": "3785:73:0",
                    "text": "@dev The ERC-2222 Maple Token for the Maple protocol."
                  },
                  "functionSelector": "a0530946",
                  "id": 95,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mpl",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 91,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3875:2:0"
                  },
                  "returnParameters": {
                    "id": 94,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 93,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 95,
                        "src": "3901:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 92,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3901:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3900:9:0"
                  },
                  "scope": 492,
                  "src": "3863:47:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 96,
                    "nodeType": "StructuredDocumentation",
                    "src": "3916: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": 101,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "pendingGovernor",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 97,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4087:2:0"
                  },
                  "returnParameters": {
                    "id": 100,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 99,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 101,
                        "src": "4113:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 98,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4113:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4112:9:0"
                  },
                  "scope": 492,
                  "src": "4063:59:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 102,
                    "nodeType": "StructuredDocumentation",
                    "src": "4128:91:0",
                    "text": "@dev The Governor responsible for management of global Maple variables."
                  },
                  "functionSelector": "0c340a24",
                  "id": 107,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "governor",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 103,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4241:2:0"
                  },
                  "returnParameters": {
                    "id": 106,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 105,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 107,
                        "src": "4267:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 104,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4267:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4266:9:0"
                  },
                  "scope": 492,
                  "src": "4224:52:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 108,
                    "nodeType": "StructuredDocumentation",
                    "src": "4282:125:0",
                    "text": "@dev The MapleTreasury is the Treasury where all fees pass through for conversion, prior to distribution."
                  },
                  "functionSelector": "a5a27605",
                  "id": 113,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mapleTreasury",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 109,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4434:2:0"
                  },
                  "returnParameters": {
                    "id": 112,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 111,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 113,
                        "src": "4460:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 110,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4460:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4459:9:0"
                  },
                  "scope": 492,
                  "src": "4412:57:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 114,
                    "nodeType": "StructuredDocumentation",
                    "src": "4475: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": 119,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "globalAdmin",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 115,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4647:2:0"
                  },
                  "returnParameters": {
                    "id": 118,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 117,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 119,
                        "src": "4673:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 116,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4673:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4672:9:0"
                  },
                  "scope": 492,
                  "src": "4627:55:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 120,
                    "nodeType": "StructuredDocumentation",
                    "src": "4688: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": 125,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "defaultGracePeriod",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 121,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4839:2:0"
                  },
                  "returnParameters": {
                    "id": 124,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 123,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 125,
                        "src": "4865:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 122,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4865:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4864:9:0"
                  },
                  "scope": 492,
                  "src": "4812:62:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 126,
                    "nodeType": "StructuredDocumentation",
                    "src": "4880: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": 131,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "swapOutRequired",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 127,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5035:2:0"
                  },
                  "returnParameters": {
                    "id": 130,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 129,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 131,
                        "src": "5061:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 128,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5061:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5060:9:0"
                  },
                  "scope": 492,
                  "src": "5011:59:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 132,
                    "nodeType": "StructuredDocumentation",
                    "src": "5076:116:0",
                    "text": "@dev The amount of time to allow a Borrower to drawdown on their Loan after funding period ends."
                  },
                  "functionSelector": "74d7c62b",
                  "id": 137,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "fundingPeriod",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 133,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5219:2:0"
                  },
                  "returnParameters": {
                    "id": 136,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 135,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 137,
                        "src": "5245:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 134,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5245:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5244:9:0"
                  },
                  "scope": 492,
                  "src": "5197:57:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 138,
                    "nodeType": "StructuredDocumentation",
                    "src": "5260:104:0",
                    "text": "@dev The portion of drawdown that goes to the Pool Delegates and individual Lenders."
                  },
                  "functionSelector": "16a12d7a",
                  "id": 143,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "investorFee",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 139,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5389:2:0"
                  },
                  "returnParameters": {
                    "id": 142,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 141,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 143,
                        "src": "5415:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 140,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5415:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5414:9:0"
                  },
                  "scope": 492,
                  "src": "5369:55:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 144,
                    "nodeType": "StructuredDocumentation",
                    "src": "5430:80:0",
                    "text": "@dev The portion of drawdown that goes to the MapleTreasury."
                  },
                  "functionSelector": "cc32d176",
                  "id": 149,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "treasuryFee",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 145,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5535:2:0"
                  },
                  "returnParameters": {
                    "id": 148,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 147,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 149,
                        "src": "5561:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 146,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5561:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5560:9:0"
                  },
                  "scope": 492,
                  "src": "5515:55:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 150,
                    "nodeType": "StructuredDocumentation",
                    "src": "5576:81:0",
                    "text": "@dev The maximum amount of slippage for Uniswap transactions."
                  },
                  "functionSelector": "55323195",
                  "id": 155,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "maxSwapSlippage",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 151,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5686:2:0"
                  },
                  "returnParameters": {
                    "id": 154,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 153,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 155,
                        "src": "5712:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 152,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5712:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5711:9:0"
                  },
                  "scope": 492,
                  "src": "5662:59:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 156,
                    "nodeType": "StructuredDocumentation",
                    "src": "5727:130:0",
                    "text": "@dev The minimum amount of LoanFDTs required to trigger liquidations (basis points percentage of totalSupply)."
                  },
                  "functionSelector": "4a2697c4",
                  "id": 161,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "minLoanEquity",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 157,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5884:2:0"
                  },
                  "returnParameters": {
                    "id": 160,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 159,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 161,
                        "src": "5910:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 158,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5910:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5909:9:0"
                  },
                  "scope": 492,
                  "src": "5862:57:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 162,
                    "nodeType": "StructuredDocumentation",
                    "src": "5925:119:0",
                    "text": "@dev The period (in secs) after which Stakers are allowed to unstake their BPTs from a StakeLocker."
                  },
                  "functionSelector": "a965d6b5",
                  "id": 167,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "stakerCooldownPeriod",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 163,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6078:2:0"
                  },
                  "returnParameters": {
                    "id": 166,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 165,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 167,
                        "src": "6104:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 164,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6104:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6103:9:0"
                  },
                  "scope": 492,
                  "src": "6049:64:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 168,
                    "nodeType": "StructuredDocumentation",
                    "src": "6119:110:0",
                    "text": "@dev The period (in secs) after which LPs are allowed to withdraw their funds from a Pool."
                  },
                  "functionSelector": "dd02e0ec",
                  "id": 173,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "lpCooldownPeriod",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 169,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6259:2:0"
                  },
                  "returnParameters": {
                    "id": 172,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 171,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 173,
                        "src": "6285:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 170,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6285:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6284:9:0"
                  },
                  "scope": 492,
                  "src": "6234:60:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 174,
                    "nodeType": "StructuredDocumentation",
                    "src": "6300: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": 179,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "stakerUnstakeWindow",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 175,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6494:2:0"
                  },
                  "returnParameters": {
                    "id": 178,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 177,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 179,
                        "src": "6520:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 176,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6520:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6519:9:0"
                  },
                  "scope": 492,
                  "src": "6466:63:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 180,
                    "nodeType": "StructuredDocumentation",
                    "src": "6535: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": 185,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "lpWithdrawWindow",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 181,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6723:2:0"
                  },
                  "returnParameters": {
                    "id": 184,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 183,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 185,
                        "src": "6749:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 182,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6749:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6748:9:0"
                  },
                  "scope": 492,
                  "src": "6698:60:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 186,
                    "nodeType": "StructuredDocumentation",
                    "src": "6764:84:0",
                    "text": "@dev Whether the functionality of the entire protocol is paused."
                  },
                  "functionSelector": "425fad58",
                  "id": 191,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "protocolPaused",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 187,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6876:2:0"
                  },
                  "returnParameters": {
                    "id": 190,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 189,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 191,
                        "src": "6902:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 188,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6902:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6901:6:0"
                  },
                  "scope": 492,
                  "src": "6853:55:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 192,
                    "nodeType": "StructuredDocumentation",
                    "src": "6914:127:0",
                    "text": "@param  liquidityAsset The address of a Liquidity Asset.\n@return Whether `liquidityAsset` is valid."
                  },
                  "functionSelector": "8695118a",
                  "id": 199,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isValidLiquidityAsset",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 195,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 194,
                        "mutability": "mutable",
                        "name": "liquidityAsset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 199,
                        "src": "7077:22:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 193,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7077:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7076:24:0"
                  },
                  "returnParameters": {
                    "id": 198,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 197,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 199,
                        "src": "7124:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 196,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7124:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7123:6:0"
                  },
                  "scope": 492,
                  "src": "7046:84:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 200,
                    "nodeType": "StructuredDocumentation",
                    "src": "7136:130:0",
                    "text": "@param  collateralAsset The address of a Collateral Asset.\n@return Whether `collateralAsset` is valid."
                  },
                  "functionSelector": "8c14834b",
                  "id": 207,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isValidCollateralAsset",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 203,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 202,
                        "mutability": "mutable",
                        "name": "collateralAsset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 207,
                        "src": "7303:23:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 201,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7303:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7302:25:0"
                  },
                  "returnParameters": {
                    "id": 206,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 205,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 207,
                        "src": "7351:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 204,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7351:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7350:6:0"
                  },
                  "scope": 492,
                  "src": "7271:86:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 208,
                    "nodeType": "StructuredDocumentation",
                    "src": "7363:102:0",
                    "text": "@param  calc The address of a Calculator.\n@return Whether `calc` is valid."
                  },
                  "functionSelector": "1beb84e7",
                  "id": 215,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "validCalcs",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 211,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 210,
                        "mutability": "mutable",
                        "name": "calc",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 215,
                        "src": "7490:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 209,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7490:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7489:14:0"
                  },
                  "returnParameters": {
                    "id": 214,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 213,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 215,
                        "src": "7527:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 212,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7527:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7526:6:0"
                  },
                  "scope": 492,
                  "src": "7470:63:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 216,
                    "nodeType": "StructuredDocumentation",
                    "src": "7539: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": 223,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isValidPoolDelegate",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 219,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 218,
                        "mutability": "mutable",
                        "name": "poolDelegate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 223,
                        "src": "7771:20:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 217,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7771:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7770:22:0"
                  },
                  "returnParameters": {
                    "id": 222,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 221,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 223,
                        "src": "7816:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 220,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7816:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7815:6:0"
                  },
                  "scope": 492,
                  "src": "7742:80:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 224,
                    "nodeType": "StructuredDocumentation",
                    "src": "7828:147:0",
                    "text": "@param  balancerPool The address of a Balancer Pool.\n@return Whether Maple has approved `balancerPool` for BPT staking."
                  },
                  "functionSelector": "72a22d71",
                  "id": 231,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isValidBalancerPool",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 227,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 226,
                        "mutability": "mutable",
                        "name": "balancerPool",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 231,
                        "src": "8009:20:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 225,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8009:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8008:22:0"
                  },
                  "returnParameters": {
                    "id": 230,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 229,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 231,
                        "src": "8054:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 228,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "8054:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8053:6:0"
                  },
                  "scope": 492,
                  "src": "7980:80:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 232,
                    "nodeType": "StructuredDocumentation",
                    "src": "8066: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": 241,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "defaultUniswapPath",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 237,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 234,
                        "mutability": "mutable",
                        "name": "tokenA",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 241,
                        "src": "8867:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 233,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8867:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 236,
                        "mutability": "mutable",
                        "name": "tokenB",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 241,
                        "src": "8883:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 235,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8883:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8866:32:0"
                  },
                  "returnParameters": {
                    "id": 240,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 239,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 241,
                        "src": "8922:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 238,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8922:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8921:9:0"
                  },
                  "scope": 492,
                  "src": "8839:92:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 242,
                    "nodeType": "StructuredDocumentation",
                    "src": "8937:123:0",
                    "text": "@param  asset The address of some token.\n@return The Chainlink Oracle for the price of `asset`."
                  },
                  "functionSelector": "aed019b9",
                  "id": 249,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "oracleFor",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 245,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 244,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 249,
                        "src": "9084:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 243,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9084:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9083:15:0"
                  },
                  "returnParameters": {
                    "id": 248,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 247,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 249,
                        "src": "9122:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 246,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9122:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9121:9:0"
                  },
                  "scope": 492,
                  "src": "9065:66:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 250,
                    "nodeType": "StructuredDocumentation",
                    "src": "9141:118:0",
                    "text": "@param  poolFactory The address of a Pool Factory.\n@return Whether `poolFactory` is valid."
                  },
                  "functionSelector": "107c0240",
                  "id": 257,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isValidPoolFactory",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 253,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 252,
                        "mutability": "mutable",
                        "name": "poolFactory",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 257,
                        "src": "9292:19:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 251,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9292:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9291:21:0"
                  },
                  "returnParameters": {
                    "id": 256,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 255,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 257,
                        "src": "9336:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 254,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "9336:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9335:6:0"
                  },
                  "scope": 492,
                  "src": "9264:78:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 258,
                    "nodeType": "StructuredDocumentation",
                    "src": "9348:118:0",
                    "text": "@param  loanFactory The address of a Loan Factory.\n@return Whether `loanFactory` is valid."
                  },
                  "functionSelector": "b53afda7",
                  "id": 265,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isValidLoanFactory",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 261,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 260,
                        "mutability": "mutable",
                        "name": "loanFactory",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 265,
                        "src": "9499:19:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 259,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9499:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9498:21:0"
                  },
                  "returnParameters": {
                    "id": 264,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 263,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 265,
                        "src": "9543:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 262,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "9543:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9542:6:0"
                  },
                  "scope": 492,
                  "src": "9471:78:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 266,
                    "nodeType": "StructuredDocumentation",
                    "src": "9559: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": 275,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "validSubFactories",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 271,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 268,
                        "mutability": "mutable",
                        "name": "superFactory",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 275,
                        "src": "9857:20:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 267,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9857:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 270,
                        "mutability": "mutable",
                        "name": "subFactory",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 275,
                        "src": "9879:18:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 269,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9879:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9856:42:0"
                  },
                  "returnParameters": {
                    "id": 274,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 273,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 275,
                        "src": "9922:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 272,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "9922:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9921:6:0"
                  },
                  "scope": 492,
                  "src": "9830:98:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 276,
                    "nodeType": "StructuredDocumentation",
                    "src": "9938: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": 281,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setStakerCooldownPeriod",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 279,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 278,
                        "mutability": "mutable",
                        "name": "newCooldownPeriod",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 281,
                        "src": "10339:25:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 277,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10339:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10338:27:0"
                  },
                  "returnParameters": {
                    "id": 280,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10374:0:0"
                  },
                  "scope": 492,
                  "src": "10306:69:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 282,
                    "nodeType": "StructuredDocumentation",
                    "src": "10381: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": 287,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setLpCooldownPeriod",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 285,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 284,
                        "mutability": "mutable",
                        "name": "newCooldownPeriod",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 287,
                        "src": "10783:25:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 283,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10783:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10782:27:0"
                  },
                  "returnParameters": {
                    "id": 286,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10818:0:0"
                  },
                  "scope": 492,
                  "src": "10754:65:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 288,
                    "nodeType": "StructuredDocumentation",
                    "src": "10825: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": 293,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setStakerUnstakeWindow",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 291,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 290,
                        "mutability": "mutable",
                        "name": "newUnstakeWindow",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 293,
                        "src": "11211:24:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 289,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11211:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11210:26:0"
                  },
                  "returnParameters": {
                    "id": 292,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11245:0:0"
                  },
                  "scope": 492,
                  "src": "11179:67:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 294,
                    "nodeType": "StructuredDocumentation",
                    "src": "11252: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": 299,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setLpWithdrawWindow",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 297,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 296,
                        "mutability": "mutable",
                        "name": "newLpWithdrawWindow",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 299,
                        "src": "11645:27:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 295,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11645:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11644:29:0"
                  },
                  "returnParameters": {
                    "id": 298,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11682:0:0"
                  },
                  "scope": 492,
                  "src": "11616:67:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 300,
                    "nodeType": "StructuredDocumentation",
                    "src": "11689: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": 305,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setMaxSwapSlippage",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 303,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 302,
                        "mutability": "mutable",
                        "name": "newMaxSlippage",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 305,
                        "src": "12002:22:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 301,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12002:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12001:24:0"
                  },
                  "returnParameters": {
                    "id": 304,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12034:0:0"
                  },
                  "scope": 492,
                  "src": "11974:61:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 306,
                    "nodeType": "StructuredDocumentation",
                    "src": "12041: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": 311,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setGlobalAdmin",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 309,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 308,
                        "mutability": "mutable",
                        "name": "newGlobalAdmin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 311,
                        "src": "12281:22:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 307,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12281:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12280:24:0"
                  },
                  "returnParameters": {
                    "id": 310,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12313:0:0"
                  },
                  "scope": 492,
                  "src": "12257:57:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 312,
                    "nodeType": "StructuredDocumentation",
                    "src": "12320: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": 319,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setValidBalancerPool",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 317,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 314,
                        "mutability": "mutable",
                        "name": "balancerPool",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 319,
                        "src": "12669:20:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 313,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12669:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 316,
                        "mutability": "mutable",
                        "name": "valid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 319,
                        "src": "12691:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 315,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "12691:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12668:34:0"
                  },
                  "returnParameters": {
                    "id": 318,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12711:0:0"
                  },
                  "scope": 492,
                  "src": "12639:73:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 320,
                    "nodeType": "StructuredDocumentation",
                    "src": "12718: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": 325,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setProtocolPause",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 323,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 322,
                        "mutability": "mutable",
                        "name": "pause",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 325,
                        "src": "13039:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 321,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "13039:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13038:12:0"
                  },
                  "returnParameters": {
                    "id": 324,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13059:0:0"
                  },
                  "scope": 492,
                  "src": "13013:47:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 326,
                    "nodeType": "StructuredDocumentation",
                    "src": "13066: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": 333,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setValidPoolFactory",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 331,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 328,
                        "mutability": "mutable",
                        "name": "poolFactory",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 333,
                        "src": "13347:19:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 327,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13347:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 330,
                        "mutability": "mutable",
                        "name": "valid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 333,
                        "src": "13368:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 329,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "13368:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13346:33:0"
                  },
                  "returnParameters": {
                    "id": 332,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13388:0:0"
                  },
                  "scope": 492,
                  "src": "13318:71:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 334,
                    "nodeType": "StructuredDocumentation",
                    "src": "13395: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": 341,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setValidLoanFactory",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 339,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 336,
                        "mutability": "mutable",
                        "name": "loanFactory",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 341,
                        "src": "13676:19:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 335,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13676:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 338,
                        "mutability": "mutable",
                        "name": "valid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 341,
                        "src": "13697:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 337,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "13697:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13675:33:0"
                  },
                  "returnParameters": {
                    "id": 340,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13717:0:0"
                  },
                  "scope": 492,
                  "src": "13647:71:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 342,
                    "nodeType": "StructuredDocumentation",
                    "src": "13724: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": 351,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setValidSubFactory",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 349,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 344,
                        "mutability": "mutable",
                        "name": "superFactory",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 351,
                        "src": "14185:20:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 343,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14185:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 346,
                        "mutability": "mutable",
                        "name": "subFactory",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 351,
                        "src": "14207:18:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 345,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14207:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 348,
                        "mutability": "mutable",
                        "name": "valid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 351,
                        "src": "14227:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 347,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "14227:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14184:54:0"
                  },
                  "returnParameters": {
                    "id": 350,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14247:0:0"
                  },
                  "scope": 492,
                  "src": "14157:91:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 352,
                    "nodeType": "StructuredDocumentation",
                    "src": "14254: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": 361,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setDefaultUniswapPath",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 359,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 354,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 361,
                        "src": "14762:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 353,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14762:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 356,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 361,
                        "src": "14776:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 355,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14776:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 358,
                        "mutability": "mutable",
                        "name": "mid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 361,
                        "src": "14788:11:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 357,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14788:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14761:39:0"
                  },
                  "returnParameters": {
                    "id": 360,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14809:0:0"
                  },
                  "scope": 492,
                  "src": "14731:79:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 362,
                    "nodeType": "StructuredDocumentation",
                    "src": "14816: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": 369,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setPoolDelegateAllowlist",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 367,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 364,
                        "mutability": "mutable",
                        "name": "poolDelegate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 369,
                        "src": "15201:20:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 363,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15201:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 366,
                        "mutability": "mutable",
                        "name": "valid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 369,
                        "src": "15223:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 365,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "15223:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15200:34:0"
                  },
                  "returnParameters": {
                    "id": 368,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15243:0:0"
                  },
                  "scope": 492,
                  "src": "15167:77:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 370,
                    "nodeType": "StructuredDocumentation",
                    "src": "15250: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": 377,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setCollateralAsset",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 375,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 372,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 377,
                        "src": "15591:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 371,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15591:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 374,
                        "mutability": "mutable",
                        "name": "valid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 377,
                        "src": "15606:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 373,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "15606:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15590:27:0"
                  },
                  "returnParameters": {
                    "id": 376,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15626:0:0"
                  },
                  "scope": 492,
                  "src": "15563:64:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 378,
                    "nodeType": "StructuredDocumentation",
                    "src": "15633: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": 385,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setLiquidityAsset",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 383,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 380,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 385,
                        "src": "15985:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 379,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15985:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 382,
                        "mutability": "mutable",
                        "name": "valid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 385,
                        "src": "16000:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 381,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "16000:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15984:27:0"
                  },
                  "returnParameters": {
                    "id": 384,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "16020:0:0"
                  },
                  "scope": 492,
                  "src": "15958:63:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 386,
                    "nodeType": "StructuredDocumentation",
                    "src": "16027: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": 393,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setCalc",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 391,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 388,
                        "mutability": "mutable",
                        "name": "calc",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 393,
                        "src": "16285:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 387,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16285:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 390,
                        "mutability": "mutable",
                        "name": "valid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 393,
                        "src": "16299:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 389,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "16299:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16284:26:0"
                  },
                  "returnParameters": {
                    "id": 392,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "16319:0:0"
                  },
                  "scope": 492,
                  "src": "16268:52:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 394,
                    "nodeType": "StructuredDocumentation",
                    "src": "16326: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": 399,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setInvestorFee",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 397,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 396,
                        "mutability": "mutable",
                        "name": "_fee",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 399,
                        "src": "16580:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 395,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16580:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16579:14:0"
                  },
                  "returnParameters": {
                    "id": 398,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "16602:0:0"
                  },
                  "scope": 492,
                  "src": "16556:47:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 400,
                    "nodeType": "StructuredDocumentation",
                    "src": "16609: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": 405,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setTreasuryFee",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 403,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 402,
                        "mutability": "mutable",
                        "name": "_fee",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 405,
                        "src": "16863:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 401,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16863:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16862:14:0"
                  },
                  "returnParameters": {
                    "id": 404,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "16885:0:0"
                  },
                  "scope": 492,
                  "src": "16839:47:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 406,
                    "nodeType": "StructuredDocumentation",
                    "src": "16892: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": 411,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setMapleTreasury",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 409,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 408,
                        "mutability": "mutable",
                        "name": "_mapleTreasury",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 411,
                        "src": "17143:22:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 407,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "17143:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "17142:24:0"
                  },
                  "returnParameters": {
                    "id": 410,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "17175:0:0"
                  },
                  "scope": 492,
                  "src": "17117:59:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 412,
                    "nodeType": "StructuredDocumentation",
                    "src": "17182: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": 417,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setDefaultGracePeriod",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 415,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 414,
                        "mutability": "mutable",
                        "name": "_defaultGracePeriod",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 417,
                        "src": "17475:27:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 413,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17475:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "17474:29:0"
                  },
                  "returnParameters": {
                    "id": 416,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "17512:0:0"
                  },
                  "scope": 492,
                  "src": "17444:69:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 418,
                    "nodeType": "StructuredDocumentation",
                    "src": "17519: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": 423,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setMinLoanEquity",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 421,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 420,
                        "mutability": "mutable",
                        "name": "_minLoanEquity",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 423,
                        "src": "17835:22:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 419,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17835:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "17834:24:0"
                  },
                  "returnParameters": {
                    "id": 422,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "17867:0:0"
                  },
                  "scope": 492,
                  "src": "17809:59:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 424,
                    "nodeType": "StructuredDocumentation",
                    "src": "17874: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": 429,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setFundingPeriod",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 427,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 426,
                        "mutability": "mutable",
                        "name": "_fundingPeriod",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 429,
                        "src": "18156:22:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 425,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18156:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "18155:24:0"
                  },
                  "returnParameters": {
                    "id": 428,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "18188:0:0"
                  },
                  "scope": 492,
                  "src": "18130:59:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 430,
                    "nodeType": "StructuredDocumentation",
                    "src": "18195: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": 435,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setSwapOutRequired",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 433,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 432,
                        "mutability": "mutable",
                        "name": "amt",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 435,
                        "src": "18480:11:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 431,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18480:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "18479:13:0"
                  },
                  "returnParameters": {
                    "id": 434,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "18501:0:0"
                  },
                  "scope": 492,
                  "src": "18452:50:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 436,
                    "nodeType": "StructuredDocumentation",
                    "src": "18508: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": 443,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setPriceOracle",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 441,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 438,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 443,
                        "src": "18819:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 437,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "18819:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 440,
                        "mutability": "mutable",
                        "name": "oracle",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 443,
                        "src": "18834:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 439,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "18834:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "18818:31:0"
                  },
                  "returnParameters": {
                    "id": 442,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "18858:0:0"
                  },
                  "scope": 492,
                  "src": "18795:64:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 444,
                    "nodeType": "StructuredDocumentation",
                    "src": "18865: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": 449,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setPendingGovernor",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 447,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 446,
                        "mutability": "mutable",
                        "name": "_pendingGovernor",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 449,
                        "src": "19203:24:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 445,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "19203:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "19202:26:0"
                  },
                  "returnParameters": {
                    "id": 448,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "19237:0:0"
                  },
                  "scope": 492,
                  "src": "19175:63:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 450,
                    "nodeType": "StructuredDocumentation",
                    "src": "19244: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": 453,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "acceptGovernor",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 451,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "19442:2:0"
                  },
                  "returnParameters": {
                    "id": 452,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "19453:0:0"
                  },
                  "scope": 492,
                  "src": "19419:35:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 454,
                    "nodeType": "StructuredDocumentation",
                    "src": "19460: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": 461,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getLatestPrice",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 457,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 456,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 461,
                        "src": "19660:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 455,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "19660:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "19659:15:0"
                  },
                  "returnParameters": {
                    "id": 460,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 459,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 461,
                        "src": "19698:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 458,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19698:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "19697:9:0"
                  },
                  "scope": 492,
                  "src": "19636:71:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 462,
                    "nodeType": "StructuredDocumentation",
                    "src": "19713: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": 473,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isValidSubFactory",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 469,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 464,
                        "mutability": "mutable",
                        "name": "superFactory",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 473,
                        "src": "20386:20:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 463,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "20386:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 466,
                        "mutability": "mutable",
                        "name": "subFactory",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 473,
                        "src": "20408:18:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 465,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "20408:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 468,
                        "mutability": "mutable",
                        "name": "factoryType",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 473,
                        "src": "20428:17:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 467,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "20428:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "20385:61:0"
                  },
                  "returnParameters": {
                    "id": 472,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 471,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 473,
                        "src": "20470:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 470,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "20470:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "20469:6:0"
                  },
                  "scope": 492,
                  "src": "20359:117:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 474,
                    "nodeType": "StructuredDocumentation",
                    "src": "20482: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": 483,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isValidCalc",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 479,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 476,
                        "mutability": "mutable",
                        "name": "calc",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 483,
                        "src": "20662:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 475,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "20662:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 478,
                        "mutability": "mutable",
                        "name": "calcType",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 483,
                        "src": "20676:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 477,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "20676:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "20661:30:0"
                  },
                  "returnParameters": {
                    "id": 482,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 481,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 483,
                        "src": "20715:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 480,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "20715:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "20714:6:0"
                  },
                  "scope": 492,
                  "src": "20641:80:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 484,
                    "nodeType": "StructuredDocumentation",
                    "src": "20727: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": 491,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getLpCooldownParams",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 485,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "20968:2:0"
                  },
                  "returnParameters": {
                    "id": 490,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 487,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 491,
                        "src": "20994:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 486,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20994:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 489,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 491,
                        "src": "21003:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 488,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21003:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "20993:18:0"
                  },
                  "scope": 492,
                  "src": "20940:72:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 961,
              "src": "369:20646:0"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 493,
                "nodeType": "StructuredDocumentation",
                "src": "21103:42:0",
                "text": "@title Oracle is a price oracle feed."
              },
              "fullyImplemented": false,
              "id": 500,
              "linearizedBaseContracts": [
                500
              ],
              "name": "IOracle",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": {
                    "id": 494,
                    "nodeType": "StructuredDocumentation",
                    "src": "21170:56:0",
                    "text": "@dev Returns the price of the asset."
                  },
                  "functionSelector": "8e15f473",
                  "id": 499,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getLatestPrice",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 495,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "21254:2:0"
                  },
                  "returnParameters": {
                    "id": 498,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 497,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 499,
                        "src": "21280:6:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 496,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21280:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "21279:8:0"
                  },
                  "scope": 500,
                  "src": "21231:57:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 961,
              "src": "21145:146:0"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 544,
              "linearizedBaseContracts": [
                544
              ],
              "name": "IChainlinkAggregatorV3",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "313ce567",
                  "id": 505,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "decimals",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 501,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "21443:2:0"
                  },
                  "returnParameters": {
                    "id": 504,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 503,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 505,
                        "src": "21469:5:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 502,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "21469:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "21468:7:0"
                  },
                  "scope": 544,
                  "src": "21426:50:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "7284e416",
                  "id": 510,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "description",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 506,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "21499:2:0"
                  },
                  "returnParameters": {
                    "id": 509,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 508,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 510,
                        "src": "21525:13:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 507,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "21525:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "21524:15:0"
                  },
                  "scope": 544,
                  "src": "21479:61:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "54fd4d50",
                  "id": 515,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "version",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 511,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "21559:2:0"
                  },
                  "returnParameters": {
                    "id": 514,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 513,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 515,
                        "src": "21585:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 512,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21585:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "21584:9:0"
                  },
                  "scope": 544,
                  "src": "21543:51:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "9a6fc8f5",
                  "id": 530,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getRoundData",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 518,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 517,
                        "mutability": "mutable",
                        "name": "_roundId",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 530,
                        "src": "21833:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint80",
                          "typeString": "uint80"
                        },
                        "typeName": {
                          "id": 516,
                          "name": "uint80",
                          "nodeType": "ElementaryTypeName",
                          "src": "21833:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint80",
                            "typeString": "uint80"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "21832:17:0"
                  },
                  "returnParameters": {
                    "id": 529,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 520,
                        "mutability": "mutable",
                        "name": "roundId",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 530,
                        "src": "21894:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint80",
                          "typeString": "uint80"
                        },
                        "typeName": {
                          "id": 519,
                          "name": "uint80",
                          "nodeType": "ElementaryTypeName",
                          "src": "21894:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint80",
                            "typeString": "uint80"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 522,
                        "mutability": "mutable",
                        "name": "answer",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 530,
                        "src": "21919:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 521,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21919:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 524,
                        "mutability": "mutable",
                        "name": "startedAt",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 530,
                        "src": "21943:17:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 523,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21943:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 526,
                        "mutability": "mutable",
                        "name": "updatedAt",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 530,
                        "src": "21970:17:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 525,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21970:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 528,
                        "mutability": "mutable",
                        "name": "answeredInRound",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 530,
                        "src": "21997:23:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint80",
                          "typeString": "uint80"
                        },
                        "typeName": {
                          "id": 527,
                          "name": "uint80",
                          "nodeType": "ElementaryTypeName",
                          "src": "21997:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint80",
                            "typeString": "uint80"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "21884:142:0"
                  },
                  "scope": 544,
                  "src": "21811:216:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "feaf968c",
                  "id": 543,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "latestRoundData",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 531,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "22055:2:0"
                  },
                  "returnParameters": {
                    "id": 542,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 533,
                        "mutability": "mutable",
                        "name": "roundId",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 543,
                        "src": "22102:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint80",
                          "typeString": "uint80"
                        },
                        "typeName": {
                          "id": 532,
                          "name": "uint80",
                          "nodeType": "ElementaryTypeName",
                          "src": "22102:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint80",
                            "typeString": "uint80"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 535,
                        "mutability": "mutable",
                        "name": "answer",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 543,
                        "src": "22127:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 534,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22127:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 537,
                        "mutability": "mutable",
                        "name": "startedAt",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 543,
                        "src": "22151:17:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 536,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22151:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 539,
                        "mutability": "mutable",
                        "name": "updatedAt",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 543,
                        "src": "22178:17:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 538,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22178:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 541,
                        "mutability": "mutable",
                        "name": "answeredInRound",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 543,
                        "src": "22205:23:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint80",
                          "typeString": "uint80"
                        },
                        "typeName": {
                          "id": 540,
                          "name": "uint80",
                          "nodeType": "ElementaryTypeName",
                          "src": "22205:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint80",
                            "typeString": "uint80"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "22092:142:0"
                  },
                  "scope": 544,
                  "src": "22031:204:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 961,
              "src": "21388:850:0"
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 546,
                    "name": "IOracle",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 500,
                    "src": "22780:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IOracle_$500",
                      "typeString": "contract IOracle"
                    }
                  },
                  "id": 547,
                  "nodeType": "InheritanceSpecifier",
                  "src": "22780:7:0"
                }
              ],
              "contractDependencies": [
                500
              ],
              "contractKind": "interface",
              "documentation": {
                "id": 545,
                "nodeType": "StructuredDocumentation",
                "src": "22623:127:0",
                "text": "@title ChainlinkOracle is a wrapper contract for Chainlink oracle price feeds that allows for manual price feed overrides."
              },
              "fullyImplemented": false,
              "id": 634,
              "linearizedBaseContracts": [
                634,
                500
              ],
              "name": "IChainlinkOracle",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 548,
                    "nodeType": "StructuredDocumentation",
                    "src": "22795:260:0",
                    "text": "@dev   Emits an event indicating that the price feed aggregator has changed from `_oldMedianizer` to `_newMedianizer`.\n@param _newMedianizer The new price feed aggregator.\n@param _oldMedianizer The old price feed aggregator."
                  },
                  "id": 554,
                  "name": "ChangeAggregatorFeed",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 553,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 550,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_newMedianizer",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 554,
                        "src": "23087:22:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 549,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "23087:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 552,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_oldMedianizer",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 554,
                        "src": "23111:22:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 551,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "23111:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "23086:48:0"
                  },
                  "src": "23060:75:0"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 555,
                    "nodeType": "StructuredDocumentation",
                    "src": "23141:206:0",
                    "text": "@dev   Emits an event indicating that the price has been updated manually from `_oldPrice` to `_newPrice`.\n@param _oldPrice The old price.\n@param _newPrice The new price."
                  },
                  "id": 561,
                  "name": "SetManualPrice",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 560,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 557,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_oldPrice",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 561,
                        "src": "23373:16:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 556,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23373:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 559,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_newPrice",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 561,
                        "src": "23391:16:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 558,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23391:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "23372:36:0"
                  },
                  "src": "23352:57:0"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 562,
                    "nodeType": "StructuredDocumentation",
                    "src": "23415:159:0",
                    "text": "@dev   Emits an event indicating whether manual price overriding is enabled.\n@param _override The state of manual price overriding."
                  },
                  "id": 566,
                  "name": "SetManualOverride",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 565,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 564,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_override",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 566,
                        "src": "23603:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 563,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "23603:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "23602:16:0"
                  },
                  "src": "23579:40:0"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 567,
                    "nodeType": "StructuredDocumentation",
                    "src": "23625:64:0",
                    "text": "@dev The Chainlink Aggregator V3 price feed."
                  },
                  "functionSelector": "741bef1a",
                  "id": 572,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "priceFeed",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 568,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "23712:2:0"
                  },
                  "returnParameters": {
                    "id": 571,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 570,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 572,
                        "src": "23738:22:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IChainlinkAggregatorV3_$544",
                          "typeString": "contract IChainlinkAggregatorV3"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 569,
                          "name": "IChainlinkAggregatorV3",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 544,
                          "src": "23738:22:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IChainlinkAggregatorV3_$544",
                            "typeString": "contract IChainlinkAggregatorV3"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "23737:24:0"
                  },
                  "scope": 634,
                  "src": "23694:68:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 573,
                    "nodeType": "StructuredDocumentation",
                    "src": "23768:42:0",
                    "text": "@dev The MapleGlobals."
                  },
                  "functionSelector": "c3124525",
                  "id": 578,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "globals",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 574,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "23831:2:0"
                  },
                  "returnParameters": {
                    "id": 577,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 576,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 578,
                        "src": "23857:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IMapleGlobals_$492",
                          "typeString": "contract IMapleGlobals"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 575,
                          "name": "IMapleGlobals",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 492,
                          "src": "23857:13:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMapleGlobals_$492",
                            "typeString": "contract IMapleGlobals"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "23856:15:0"
                  },
                  "scope": 634,
                  "src": "23815:57:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 579,
                    "nodeType": "StructuredDocumentation",
                    "src": "23878:65:0",
                    "text": "@dev The address of the asset token contract."
                  },
                  "functionSelector": "1ba46cfd",
                  "id": 584,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "assetAddress",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 580,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "23969:2:0"
                  },
                  "returnParameters": {
                    "id": 583,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 582,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 584,
                        "src": "23995:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 581,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "23995:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "23994:9:0"
                  },
                  "scope": 634,
                  "src": "23948:56:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 585,
                    "nodeType": "StructuredDocumentation",
                    "src": "24010:66:0",
                    "text": "@dev Whether the price is manually overridden."
                  },
                  "functionSelector": "bae6d62b",
                  "id": 590,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "manualOverride",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 586,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "24104:2:0"
                  },
                  "returnParameters": {
                    "id": 589,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 588,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 590,
                        "src": "24130:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 587,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "24130:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "24129:6:0"
                  },
                  "scope": 634,
                  "src": "24081:55:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 591,
                    "nodeType": "StructuredDocumentation",
                    "src": "24142:55:0",
                    "text": "@dev The manually overridden price."
                  },
                  "functionSelector": "a2c9d630",
                  "id": 596,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "manualPrice",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 592,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "24222:2:0"
                  },
                  "returnParameters": {
                    "id": 595,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 594,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 596,
                        "src": "24248:6:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 593,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "24248:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "24247:8:0"
                  },
                  "scope": 634,
                  "src": "24202:54:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    499
                  ],
                  "body": null,
                  "documentation": {
                    "id": 597,
                    "nodeType": "StructuredDocumentation",
                    "src": "24262:45:0",
                    "text": "@return The latest price."
                  },
                  "functionSelector": "8e15f473",
                  "id": 603,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getLatestPrice",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 599,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "24347:8:0"
                  },
                  "parameters": {
                    "id": 598,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "24335:2:0"
                  },
                  "returnParameters": {
                    "id": 602,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 601,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 603,
                        "src": "24370:6:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 600,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "24370:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "24369:8:0"
                  },
                  "scope": 634,
                  "src": "24312:66:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 604,
                    "nodeType": "StructuredDocumentation",
                    "src": "24384:261:0",
                    "text": "@dev   Updates the aggregator address to `aggregator`. \n@dev   Only the contract Owner can call this function. \n@dev   It emits a `ChangeAggregatorFeed` event. \n@param aggregator The address of a Chainlink aggregator."
                  },
                  "functionSelector": "e57f3e25",
                  "id": 609,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "changeAggregator",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 607,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 606,
                        "mutability": "mutable",
                        "name": "aggregator",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 609,
                        "src": "24676:18:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 605,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "24676:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "24675:20:0"
                  },
                  "returnParameters": {
                    "id": 608,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "24704:0:0"
                  },
                  "scope": 634,
                  "src": "24650:55:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 610,
                    "nodeType": "StructuredDocumentation",
                    "src": "24711:78:0",
                    "text": "@return The address of the oracled currency (0x0 for ETH)."
                  },
                  "functionSelector": "670ab5e9",
                  "id": 615,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAssetAddress",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 611,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "24818:2:0"
                  },
                  "returnParameters": {
                    "id": 614,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 613,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 615,
                        "src": "24844:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 612,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "24844:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "24843:9:0"
                  },
                  "scope": 634,
                  "src": "24794:59:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 616,
                    "nodeType": "StructuredDocumentation",
                    "src": "24859:58:0",
                    "text": "@return The denomination of the price."
                  },
                  "functionSelector": "1fc601c9",
                  "id": 621,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getDenomination",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 617,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "24946:2:0"
                  },
                  "returnParameters": {
                    "id": 620,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 619,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 621,
                        "src": "24972:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 618,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "24972:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "24971:9:0"
                  },
                  "scope": 634,
                  "src": "24922:59:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 622,
                    "nodeType": "StructuredDocumentation",
                    "src": "24987:264:0",
                    "text": "@dev   Sets a manual price. \n@dev   Only the contract Owner can call this function. \n@dev   This can only be used if manualOverride == true. \n@dev   It emits a `SetManualPrice` event. \n@param _price Price to set."
                  },
                  "functionSelector": "5f78445d",
                  "id": 627,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setManualPrice",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 625,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 624,
                        "mutability": "mutable",
                        "name": "_price",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 627,
                        "src": "25280:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 623,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "25280:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "25279:15:0"
                  },
                  "returnParameters": {
                    "id": 626,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "25303:0:0"
                  },
                  "scope": 634,
                  "src": "25256:48:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 628,
                    "nodeType": "StructuredDocumentation",
                    "src": "25310:273:0",
                    "text": "@dev   Sets manual override, allowing for manual price setting. \n@dev   Only the contract Owner can call this function. \n@dev   It emits a `SetManualOverride` event. \n@param _override Whether manual override price should be used."
                  },
                  "functionSelector": "35967501",
                  "id": 633,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setManualOverride",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 631,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 630,
                        "mutability": "mutable",
                        "name": "_override",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 633,
                        "src": "25615:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 629,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "25615:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "25614:16:0"
                  },
                  "returnParameters": {
                    "id": 632,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "25639:0:0"
                  },
                  "scope": 634,
                  "src": "25588:52:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 961,
              "src": "22750:2893:0"
            },
            {
              "abstract": true,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 655,
              "linearizedBaseContracts": [
                655
              ],
              "name": "Context",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 642,
                    "nodeType": "Block",
                    "src": "26346:34:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 639,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "26363:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 640,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "26363:10:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "functionReturnParameters": 638,
                        "id": 641,
                        "nodeType": "Return",
                        "src": "26356:17:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 643,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgSender",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 635,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "26295:2:0"
                  },
                  "returnParameters": {
                    "id": 638,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 637,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 643,
                        "src": "26329:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 636,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "26329:15:0",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "26328:17:0"
                  },
                  "scope": 655,
                  "src": "26276:104:0",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 653,
                    "nodeType": "Block",
                    "src": "26451:165:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 648,
                          "name": "this",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -28,
                          "src": "26461:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Context_$655",
                            "typeString": "contract Context"
                          }
                        },
                        "id": 649,
                        "nodeType": "ExpressionStatement",
                        "src": "26461:4:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 650,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "26601:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 651,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "data",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "26601:8:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        "functionReturnParameters": 647,
                        "id": 652,
                        "nodeType": "Return",
                        "src": "26594:15:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 654,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgData",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 644,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "26403:2:0"
                  },
                  "returnParameters": {
                    "id": 647,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 646,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 654,
                        "src": "26437:12:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 645,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "26437:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "26436:14:0"
                  },
                  "scope": 655,
                  "src": "26386:230:0",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 961,
              "src": "26244:374:0"
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 657,
                    "name": "Context",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 655,
                    "src": "27281:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Context_$655",
                      "typeString": "contract Context"
                    }
                  },
                  "id": 658,
                  "nodeType": "InheritanceSpecifier",
                  "src": "27281:7:0"
                }
              ],
              "contractDependencies": [
                655
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 656,
                "nodeType": "StructuredDocumentation",
                "src": "26757:494:0",
                "text": " @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."
              },
              "fullyImplemented": true,
              "id": 761,
              "linearizedBaseContracts": [
                761,
                655
              ],
              "name": "Ownable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 660,
                  "mutability": "mutable",
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 761,
                  "src": "27295:22:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 659,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "27295:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 666,
                  "name": "OwnershipTransferred",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 665,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 662,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "previousOwner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 666,
                        "src": "27351:29:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 661,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "27351:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 664,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "newOwner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 666,
                        "src": "27382:24:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 663,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "27382:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "27350:57:0"
                  },
                  "src": "27324:84:0"
                },
                {
                  "body": {
                    "id": 687,
                    "nodeType": "Block",
                    "src": "27534:135:0",
                    "statements": [
                      {
                        "assignments": [
                          671
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 671,
                            "mutability": "mutable",
                            "name": "msgSender",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 687,
                            "src": "27544:17:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 670,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "27544:7:0",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 674,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 672,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 643,
                            "src": "27564:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 673,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "27564:12:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "27544:32:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 677,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 675,
                            "name": "_owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 660,
                            "src": "27586:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 676,
                            "name": "msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 671,
                            "src": "27595:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "27586:18:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 678,
                        "nodeType": "ExpressionStatement",
                        "src": "27586:18:0"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 682,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "27648: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": 681,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "27640:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 680,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "27640:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 683,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "27640:10:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 684,
                              "name": "msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 671,
                              "src": "27652:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 679,
                            "name": "OwnershipTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 666,
                            "src": "27619:20:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 685,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "27619:43:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 686,
                        "nodeType": "EmitStatement",
                        "src": "27614:48:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 667,
                    "nodeType": "StructuredDocumentation",
                    "src": "27414:91:0",
                    "text": " @dev Initializes the contract setting the deployer as the initial owner."
                  },
                  "id": 688,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 668,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "27522:2:0"
                  },
                  "returnParameters": {
                    "id": 669,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "27534:0:0"
                  },
                  "scope": 761,
                  "src": "27510:159:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 696,
                    "nodeType": "Block",
                    "src": "27792:30:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 694,
                          "name": "_owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 660,
                          "src": "27809:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 693,
                        "id": 695,
                        "nodeType": "Return",
                        "src": "27802:13:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 689,
                    "nodeType": "StructuredDocumentation",
                    "src": "27675:65:0",
                    "text": " @dev Returns the address of the current owner."
                  },
                  "functionSelector": "8da5cb5b",
                  "id": 697,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "owner",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 690,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "27759:2:0"
                  },
                  "returnParameters": {
                    "id": 693,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 692,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 697,
                        "src": "27783:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 691,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "27783:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "27782:9:0"
                  },
                  "scope": 761,
                  "src": "27745:77:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 709,
                    "nodeType": "Block",
                    "src": "27931:95:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 704,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 701,
                                "name": "_owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 660,
                                "src": "27949:6:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 702,
                                  "name": "_msgSender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 643,
                                  "src": "27959:10:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                    "typeString": "function () view returns (address payable)"
                                  }
                                },
                                "id": 703,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "27959:12:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "27949:22:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                              "id": 705,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "27973:34:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe",
                                "typeString": "literal_string \"Ownable: caller is not the owner\""
                              },
                              "value": "Ownable: caller is not the owner"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe",
                                "typeString": "literal_string \"Ownable: caller is not the owner\""
                              }
                            ],
                            "id": 700,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "27941:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 706,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "27941:67:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 707,
                        "nodeType": "ExpressionStatement",
                        "src": "27941:67:0"
                      },
                      {
                        "id": 708,
                        "nodeType": "PlaceholderStatement",
                        "src": "28018:1:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 698,
                    "nodeType": "StructuredDocumentation",
                    "src": "27828:77:0",
                    "text": " @dev Throws if called by any account other than the owner."
                  },
                  "id": 710,
                  "name": "onlyOwner",
                  "nodeType": "ModifierDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 699,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "27928:2:0"
                  },
                  "src": "27910:116:0",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 731,
                    "nodeType": "Block",
                    "src": "28422:91:0",
                    "statements": [
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 717,
                              "name": "_owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 660,
                              "src": "28458:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 720,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "28474: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": 719,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "28466:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 718,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "28466:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 721,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "28466:10:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 716,
                            "name": "OwnershipTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 666,
                            "src": "28437:20:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 722,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28437:40:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 723,
                        "nodeType": "EmitStatement",
                        "src": "28432:45:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 729,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 724,
                            "name": "_owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 660,
                            "src": "28487:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 727,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "28504: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": 726,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "28496:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 725,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "28496:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 728,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "28496:10:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "28487:19:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 730,
                        "nodeType": "ExpressionStatement",
                        "src": "28487:19:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 711,
                    "nodeType": "StructuredDocumentation",
                    "src": "28032:331:0",
                    "text": " @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions anymore. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby removing any functionality that is only available to the owner."
                  },
                  "functionSelector": "715018a6",
                  "id": 732,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 714,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 713,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 710,
                        "src": "28412:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "28412:9:0"
                    }
                  ],
                  "name": "renounceOwnership",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 712,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "28394:2:0"
                  },
                  "returnParameters": {
                    "id": 715,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "28422:0:0"
                  },
                  "scope": 761,
                  "src": "28368:145:0",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 759,
                    "nodeType": "Block",
                    "src": "28732:170:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 746,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 741,
                                "name": "newOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 735,
                                "src": "28750:8:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 744,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "28770: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": 743,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "28762:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 742,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "28762:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 745,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "28762:10:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "28750:22:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373",
                              "id": 747,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "28774:40:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe",
                                "typeString": "literal_string \"Ownable: new owner is the zero address\""
                              },
                              "value": "Ownable: new owner is the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe",
                                "typeString": "literal_string \"Ownable: new owner is the zero address\""
                              }
                            ],
                            "id": 740,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "28742:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 748,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28742:73:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 749,
                        "nodeType": "ExpressionStatement",
                        "src": "28742:73:0"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 751,
                              "name": "_owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 660,
                              "src": "28851:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 752,
                              "name": "newOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 735,
                              "src": "28859:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 750,
                            "name": "OwnershipTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 666,
                            "src": "28830:20:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 753,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28830:38:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 754,
                        "nodeType": "EmitStatement",
                        "src": "28825:43:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 757,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 755,
                            "name": "_owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 660,
                            "src": "28878:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 756,
                            "name": "newOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 735,
                            "src": "28887:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "28878:17:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 758,
                        "nodeType": "ExpressionStatement",
                        "src": "28878:17:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 733,
                    "nodeType": "StructuredDocumentation",
                    "src": "28519:138:0",
                    "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."
                  },
                  "functionSelector": "f2fde38b",
                  "id": 760,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 738,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 737,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 710,
                        "src": "28722:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "28722:9:0"
                    }
                  ],
                  "name": "transferOwnership",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 736,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 735,
                        "mutability": "mutable",
                        "name": "newOwner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 760,
                        "src": "28689:16:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 734,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "28689:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "28688:18:0"
                  },
                  "returnParameters": {
                    "id": 739,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "28732:0:0"
                  },
                  "scope": 761,
                  "src": "28662:240:0",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                }
              ],
              "scope": 961,
              "src": "27252:1652:0"
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 763,
                    "name": "IChainlinkOracle",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 634,
                    "src": "29524:16:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IChainlinkOracle_$634",
                      "typeString": "contract IChainlinkOracle"
                    }
                  },
                  "id": 764,
                  "nodeType": "InheritanceSpecifier",
                  "src": "29524:16:0"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 765,
                    "name": "Ownable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 761,
                    "src": "29542:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Ownable_$761",
                      "typeString": "contract Ownable"
                    }
                  },
                  "id": 766,
                  "nodeType": "InheritanceSpecifier",
                  "src": "29542:7:0"
                }
              ],
              "contractDependencies": [
                500,
                634,
                655,
                761
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 762,
                "nodeType": "StructuredDocumentation",
                "src": "29369:127:0",
                "text": "@title ChainlinkOracle is a wrapper contract for Chainlink oracle price feeds that allows for manual price feed overrides."
              },
              "fullyImplemented": true,
              "id": 960,
              "linearizedBaseContracts": [
                960,
                761,
                655,
                634,
                500
              ],
              "name": "ChainlinkOracle",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "baseFunctions": [
                    572
                  ],
                  "constant": false,
                  "functionSelector": "741bef1a",
                  "id": 769,
                  "mutability": "mutable",
                  "name": "priceFeed",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 768,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "29587:8:0"
                  },
                  "scope": 960,
                  "src": "29557:48:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IChainlinkAggregatorV3_$544",
                    "typeString": "contract IChainlinkAggregatorV3"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 767,
                    "name": "IChainlinkAggregatorV3",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 544,
                    "src": "29557:22:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IChainlinkAggregatorV3_$544",
                      "typeString": "contract IChainlinkAggregatorV3"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    578
                  ],
                  "constant": false,
                  "functionSelector": "c3124525",
                  "id": 772,
                  "mutability": "mutable",
                  "name": "globals",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 771,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "29632:8:0"
                  },
                  "scope": 960,
                  "src": "29611:37:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IMapleGlobals_$492",
                    "typeString": "contract IMapleGlobals"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 770,
                    "name": "IMapleGlobals",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 492,
                    "src": "29611:13:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IMapleGlobals_$492",
                      "typeString": "contract IMapleGlobals"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    584
                  ],
                  "constant": false,
                  "functionSelector": "1ba46cfd",
                  "id": 775,
                  "mutability": "immutable",
                  "name": "assetAddress",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 774,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "29670:8:0"
                  },
                  "scope": 960,
                  "src": "29655:46:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 773,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "29655:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    590
                  ],
                  "constant": false,
                  "functionSelector": "bae6d62b",
                  "id": 778,
                  "mutability": "mutable",
                  "name": "manualOverride",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 777,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "29722:8:0"
                  },
                  "scope": 960,
                  "src": "29708:37:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 776,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "29708:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    596
                  ],
                  "constant": false,
                  "functionSelector": "a2c9d630",
                  "id": 781,
                  "mutability": "mutable",
                  "name": "manualPrice",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 780,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "29765:8:0"
                  },
                  "scope": 960,
                  "src": "29751:34:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 779,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "29751:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 815,
                    "nodeType": "Block",
                    "src": "30133:217:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 797,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 792,
                                "name": "_aggregator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 784,
                                "src": "30151:11:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 795,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "30174: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": 794,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "30166:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 793,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "30166:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 796,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "30166:10:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "30151:25:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "434f3a5a45524f5f41474752454741544f525f41444452",
                              "id": 798,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "30178:25:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e81913a2d6a85366dfe05296cac19ca213ed694cf669a482d34a9bf8c04dc1ff",
                                "typeString": "literal_string \"CO:ZERO_AGGREGATOR_ADDR\""
                              },
                              "value": "CO:ZERO_AGGREGATOR_ADDR"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e81913a2d6a85366dfe05296cac19ca213ed694cf669a482d34a9bf8c04dc1ff",
                                "typeString": "literal_string \"CO:ZERO_AGGREGATOR_ADDR\""
                              }
                            ],
                            "id": 791,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "30143:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 799,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "30143:61:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 800,
                        "nodeType": "ExpressionStatement",
                        "src": "30143:61:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 805,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 801,
                            "name": "priceFeed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 769,
                            "src": "30214:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IChainlinkAggregatorV3_$544",
                              "typeString": "contract IChainlinkAggregatorV3"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 803,
                                "name": "_aggregator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 784,
                                "src": "30255:11:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 802,
                              "name": "IChainlinkAggregatorV3",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 544,
                              "src": "30232:22:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IChainlinkAggregatorV3_$544_$",
                                "typeString": "type(contract IChainlinkAggregatorV3)"
                              }
                            },
                            "id": 804,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "30232:35:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IChainlinkAggregatorV3_$544",
                              "typeString": "contract IChainlinkAggregatorV3"
                            }
                          },
                          "src": "30214:53:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IChainlinkAggregatorV3_$544",
                            "typeString": "contract IChainlinkAggregatorV3"
                          }
                        },
                        "id": 806,
                        "nodeType": "ExpressionStatement",
                        "src": "30214:53:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 809,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 807,
                            "name": "assetAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 775,
                            "src": "30277:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 808,
                            "name": "_assetAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 786,
                            "src": "30295:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "30277:31:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 810,
                        "nodeType": "ExpressionStatement",
                        "src": "30277:31:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 812,
                              "name": "_owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 788,
                              "src": "30336:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 811,
                            "name": "transferOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 760,
                            "src": "30318:17:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 813,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "30318:25:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 814,
                        "nodeType": "ExpressionStatement",
                        "src": "30318:25:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 782,
                    "nodeType": "StructuredDocumentation",
                    "src": "29792:257:0",
                    "text": "@dev   Creates a new Chainlink based oracle.\n@param _aggregator   Address of Chainlink aggregator.\n@param _assetAddress Address of currency (0x0 for ETH).\n@param _owner        Address of the owner of the contract."
                  },
                  "id": 816,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 789,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 784,
                        "mutability": "mutable",
                        "name": "_aggregator",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 816,
                        "src": "30066:19:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 783,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "30066:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 786,
                        "mutability": "mutable",
                        "name": "_assetAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 816,
                        "src": "30087:21:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 785,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "30087:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 788,
                        "mutability": "mutable",
                        "name": "_owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 816,
                        "src": "30110:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 787,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "30110:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "30065:60:0"
                  },
                  "returnParameters": {
                    "id": 790,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "30133:0:0"
                  },
                  "scope": 960,
                  "src": "30054:296:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    603
                  ],
                  "body": {
                    "id": 864,
                    "nodeType": "Block",
                    "src": "30420:401:0",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 822,
                          "name": "manualOverride",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 778,
                          "src": "30434:14:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 825,
                        "nodeType": "IfStatement",
                        "src": "30430:38:0",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 823,
                            "name": "manualPrice",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 781,
                            "src": "30457:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "functionReturnParameters": 821,
                          "id": 824,
                          "nodeType": "Return",
                          "src": "30450:18:0"
                        }
                      },
                      {
                        "assignments": [
                          827,
                          829,
                          null,
                          831,
                          833
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 827,
                            "mutability": "mutable",
                            "name": "roundID",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 864,
                            "src": "30479:14:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint80",
                              "typeString": "uint80"
                            },
                            "typeName": {
                              "id": 826,
                              "name": "uint80",
                              "nodeType": "ElementaryTypeName",
                              "src": "30479:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint80",
                                "typeString": "uint80"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 829,
                            "mutability": "mutable",
                            "name": "price",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 864,
                            "src": "30495:12:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 828,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "30495:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          null,
                          {
                            "constant": false,
                            "id": 831,
                            "mutability": "mutable",
                            "name": "timeStamp",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 864,
                            "src": "30509:17:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 830,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "30509:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 833,
                            "mutability": "mutable",
                            "name": "answeredInRound",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 864,
                            "src": "30528:22:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint80",
                              "typeString": "uint80"
                            },
                            "typeName": {
                              "id": 832,
                              "name": "uint80",
                              "nodeType": "ElementaryTypeName",
                              "src": "30528:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint80",
                                "typeString": "uint80"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 837,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 834,
                              "name": "priceFeed",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 769,
                              "src": "30554:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IChainlinkAggregatorV3_$544",
                                "typeString": "contract IChainlinkAggregatorV3"
                              }
                            },
                            "id": 835,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "latestRoundData",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 543,
                            "src": "30554:25:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$",
                              "typeString": "function () view external returns (uint80,int256,uint256,uint256,uint80)"
                            }
                          },
                          "id": 836,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "30554:27:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$",
                            "typeString": "tuple(uint80,int256,uint256,uint256,uint80)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "30478:103:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 841,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 839,
                                "name": "timeStamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 831,
                                "src": "30600:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 840,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "30613:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "30600:14:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "434f3a524f554e445f4e4f545f434f4d504c455445",
                              "id": 842,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "30628:23:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e435620df59905ba7665cfcd481e9664a77057a74884ea773e8eba638d8f1cf7",
                                "typeString": "literal_string \"CO:ROUND_NOT_COMPLETE\""
                              },
                              "value": "CO:ROUND_NOT_COMPLETE"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e435620df59905ba7665cfcd481e9664a77057a74884ea773e8eba638d8f1cf7",
                                "typeString": "literal_string \"CO:ROUND_NOT_COMPLETE\""
                              }
                            ],
                            "id": 838,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "30592:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 843,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "30592:60:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 844,
                        "nodeType": "ExpressionStatement",
                        "src": "30592:60:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint80",
                                "typeString": "uint80"
                              },
                              "id": 848,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 846,
                                "name": "answeredInRound",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 833,
                                "src": "30670:15:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint80",
                                  "typeString": "uint80"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 847,
                                "name": "roundID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 827,
                                "src": "30689:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint80",
                                  "typeString": "uint80"
                                }
                              },
                              "src": "30670:26:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "434f3a5354414c455f44415441",
                              "id": 849,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "30706:15:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_57611c246747d511e42f581fd12a73c7dacc6acf841a20b557a61165543c93ef",
                                "typeString": "literal_string \"CO:STALE_DATA\""
                              },
                              "value": "CO:STALE_DATA"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_57611c246747d511e42f581fd12a73c7dacc6acf841a20b557a61165543c93ef",
                                "typeString": "literal_string \"CO:STALE_DATA\""
                              }
                            ],
                            "id": 845,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "30662:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 850,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "30662:60:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 851,
                        "nodeType": "ExpressionStatement",
                        "src": "30662:60:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 858,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 853,
                                "name": "price",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 829,
                                "src": "30740:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 856,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "30756: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": 855,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "30749:6:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_int256_$",
                                    "typeString": "type(int256)"
                                  },
                                  "typeName": {
                                    "id": 854,
                                    "name": "int256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "30749:6:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 857,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "30749:9:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "src": "30740:18:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "434f3a5a45524f5f5052494345",
                              "id": 859,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "30776:15:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_88981fbc7acf929133fa579f217f6f9ade5d000aebd0630e4a365f6ef3066367",
                                "typeString": "literal_string \"CO:ZERO_PRICE\""
                              },
                              "value": "CO:ZERO_PRICE"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_88981fbc7acf929133fa579f217f6f9ade5d000aebd0630e4a365f6ef3066367",
                                "typeString": "literal_string \"CO:ZERO_PRICE\""
                              }
                            ],
                            "id": 852,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "30732:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 860,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "30732:60:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 861,
                        "nodeType": "ExpressionStatement",
                        "src": "30732:60:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 862,
                          "name": "price",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 829,
                          "src": "30809:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "functionReturnParameters": 821,
                        "id": 863,
                        "nodeType": "Return",
                        "src": "30802:12:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "8e15f473",
                  "id": 865,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getLatestPrice",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 818,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "30389:8:0"
                  },
                  "parameters": {
                    "id": 817,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "30379:2:0"
                  },
                  "returnParameters": {
                    "id": 821,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 820,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 865,
                        "src": "30412:6:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 819,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "30412:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "30411:8:0"
                  },
                  "scope": 960,
                  "src": "30356:465:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    609
                  ],
                  "body": {
                    "id": 897,
                    "nodeType": "Block",
                    "src": "30901:200:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 879,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 874,
                                "name": "aggregator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 867,
                                "src": "30919:10:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 877,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "30941: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": 876,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "30933:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 875,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "30933:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 878,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "30933:10:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "30919:24:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "434f3a5a45524f5f41474752454741544f525f41444452",
                              "id": 880,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "30945:25:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e81913a2d6a85366dfe05296cac19ca213ed694cf669a482d34a9bf8c04dc1ff",
                                "typeString": "literal_string \"CO:ZERO_AGGREGATOR_ADDR\""
                              },
                              "value": "CO:ZERO_AGGREGATOR_ADDR"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e81913a2d6a85366dfe05296cac19ca213ed694cf669a482d34a9bf8c04dc1ff",
                                "typeString": "literal_string \"CO:ZERO_AGGREGATOR_ADDR\""
                              }
                            ],
                            "id": 873,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "30911:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 881,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "30911:60:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 882,
                        "nodeType": "ExpressionStatement",
                        "src": "30911:60:0"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 884,
                              "name": "aggregator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 867,
                              "src": "31007:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 887,
                                  "name": "priceFeed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 769,
                                  "src": "31027:9:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IChainlinkAggregatorV3_$544",
                                    "typeString": "contract IChainlinkAggregatorV3"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IChainlinkAggregatorV3_$544",
                                    "typeString": "contract IChainlinkAggregatorV3"
                                  }
                                ],
                                "id": 886,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "31019:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 885,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "31019:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 888,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "31019:18:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 883,
                            "name": "ChangeAggregatorFeed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 554,
                            "src": "30986:20:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 889,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "30986:52:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 890,
                        "nodeType": "EmitStatement",
                        "src": "30981:57:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 895,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 891,
                            "name": "priceFeed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 769,
                            "src": "31048:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IChainlinkAggregatorV3_$544",
                              "typeString": "contract IChainlinkAggregatorV3"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 893,
                                "name": "aggregator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 867,
                                "src": "31083:10:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 892,
                              "name": "IChainlinkAggregatorV3",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 544,
                              "src": "31060:22:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IChainlinkAggregatorV3_$544_$",
                                "typeString": "type(contract IChainlinkAggregatorV3)"
                              }
                            },
                            "id": 894,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "31060:34:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IChainlinkAggregatorV3_$544",
                              "typeString": "contract IChainlinkAggregatorV3"
                            }
                          },
                          "src": "31048:46:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IChainlinkAggregatorV3_$544",
                            "typeString": "contract IChainlinkAggregatorV3"
                          }
                        },
                        "id": 896,
                        "nodeType": "ExpressionStatement",
                        "src": "31048:46:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "e57f3e25",
                  "id": 898,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 871,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 870,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 710,
                        "src": "30891:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "30891:9:0"
                    }
                  ],
                  "name": "changeAggregator",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 869,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "30882:8:0"
                  },
                  "parameters": {
                    "id": 868,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 867,
                        "mutability": "mutable",
                        "name": "aggregator",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 898,
                        "src": "30853:18:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 866,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "30853:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "30852:20:0"
                  },
                  "returnParameters": {
                    "id": 872,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "30901:0:0"
                  },
                  "scope": 960,
                  "src": "30827:274:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    615
                  ],
                  "body": {
                    "id": 906,
                    "nodeType": "Block",
                    "src": "31175:36:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 904,
                          "name": "assetAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 775,
                          "src": "31192:12:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 903,
                        "id": 905,
                        "nodeType": "Return",
                        "src": "31185:19:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "670ab5e9",
                  "id": 907,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAssetAddress",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 900,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "31143:8:0"
                  },
                  "parameters": {
                    "id": 899,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "31131:2:0"
                  },
                  "returnParameters": {
                    "id": 903,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 902,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 907,
                        "src": "31166:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 901,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "31166:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "31165:9:0"
                  },
                  "scope": 960,
                  "src": "31107:104:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    621
                  ],
                  "body": {
                    "id": 918,
                    "nodeType": "Block",
                    "src": "31285:95:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "555344",
                              "id": 915,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "31367:5:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c4ae21aac0c6549d71dd96035b7e0bdb6c79ebdba8891b666115bc976d16a29e",
                                "typeString": "literal_string \"USD\""
                              },
                              "value": "USD"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_c4ae21aac0c6549d71dd96035b7e0bdb6c79ebdba8891b666115bc976d16a29e",
                                "typeString": "literal_string \"USD\""
                              }
                            ],
                            "id": 914,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "31359:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes32_$",
                              "typeString": "type(bytes32)"
                            },
                            "typeName": {
                              "id": 913,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "31359:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 916,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "31359:14:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 912,
                        "id": 917,
                        "nodeType": "Return",
                        "src": "31352:21:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "1fc601c9",
                  "id": 919,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getDenomination",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 909,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "31253:8:0"
                  },
                  "parameters": {
                    "id": 908,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "31241:2:0"
                  },
                  "returnParameters": {
                    "id": 912,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 911,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 919,
                        "src": "31276:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 910,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "31276:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "31275:9:0"
                  },
                  "scope": 960,
                  "src": "31217:163:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    627
                  ],
                  "body": {
                    "id": 941,
                    "nodeType": "Block",
                    "src": "31451:153:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 928,
                              "name": "manualOverride",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 778,
                              "src": "31469:14:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "434f3a4d414e55414c5f4f564552524944455f4e4f545f414354495645",
                              "id": 929,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "31485:31:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_dc3ad19503ba18b33807803b638af6f5cac3aa28144093bcb940e863dea0a082",
                                "typeString": "literal_string \"CO:MANUAL_OVERRIDE_NOT_ACTIVE\""
                              },
                              "value": "CO:MANUAL_OVERRIDE_NOT_ACTIVE"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_dc3ad19503ba18b33807803b638af6f5cac3aa28144093bcb940e863dea0a082",
                                "typeString": "literal_string \"CO:MANUAL_OVERRIDE_NOT_ACTIVE\""
                              }
                            ],
                            "id": 927,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "31461:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 930,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "31461:56:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 931,
                        "nodeType": "ExpressionStatement",
                        "src": "31461:56:0"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 933,
                              "name": "manualPrice",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 781,
                              "src": "31547:11:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 934,
                              "name": "_price",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 921,
                              "src": "31560:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "id": 932,
                            "name": "SetManualPrice",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 561,
                            "src": "31532:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_int256_$_t_int256_$returns$__$",
                              "typeString": "function (int256,int256)"
                            }
                          },
                          "id": 935,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "31532:35:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 936,
                        "nodeType": "EmitStatement",
                        "src": "31527:40:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 939,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 937,
                            "name": "manualPrice",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 781,
                            "src": "31577:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 938,
                            "name": "_price",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 921,
                            "src": "31591:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "31577:20:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 940,
                        "nodeType": "ExpressionStatement",
                        "src": "31577:20:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "5f78445d",
                  "id": 942,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 925,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 924,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 710,
                        "src": "31441:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "31441:9:0"
                    }
                  ],
                  "name": "setManualPrice",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 923,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "31432:8:0"
                  },
                  "parameters": {
                    "id": 922,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 921,
                        "mutability": "mutable",
                        "name": "_price",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 942,
                        "src": "31410:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 920,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "31410:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "31409:15:0"
                  },
                  "returnParameters": {
                    "id": 926,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "31451:0:0"
                  },
                  "scope": 960,
                  "src": "31386:218:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    633
                  ],
                  "body": {
                    "id": 958,
                    "nodeType": "Block",
                    "src": "31679:86:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 952,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 950,
                            "name": "manualOverride",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 778,
                            "src": "31689:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 951,
                            "name": "_override",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 944,
                            "src": "31706:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "31689:26:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 953,
                        "nodeType": "ExpressionStatement",
                        "src": "31689:26:0"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 955,
                              "name": "_override",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 944,
                              "src": "31748:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 954,
                            "name": "SetManualOverride",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 566,
                            "src": "31730:17:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bool_$returns$__$",
                              "typeString": "function (bool)"
                            }
                          },
                          "id": 956,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "31730:28:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 957,
                        "nodeType": "EmitStatement",
                        "src": "31725:33:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "35967501",
                  "id": 959,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 948,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 947,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 710,
                        "src": "31669:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "31669:9:0"
                    }
                  ],
                  "name": "setManualOverride",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 946,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "31660:8:0"
                  },
                  "parameters": {
                    "id": 945,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 944,
                        "mutability": "mutable",
                        "name": "_override",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 959,
                        "src": "31637:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 943,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "31637:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "31636:16:0"
                  },
                  "returnParameters": {
                    "id": 949,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "31679:0:0"
                  },
                  "scope": 960,
                  "src": "31610:155:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 961,
              "src": "29496:2272:0"
            }
          ],
          "src": "131:31638:0"
        },
        "id": 0
      }
    }
  }
}
