From 43590b24449a65ac7fa0f445f0b0d9aa004b8128 Mon Sep 17 00:00:00 2001 From: lookeey <71905281+lookeey@users.noreply.github.com> Date: Sat, 11 Nov 2023 15:57:11 -0300 Subject: [PATCH 01/64] separate exercise & add tests --- remappings.txt | 2 + src/OptionsToken.sol | 126 +++++++++++----------------- src/exercise/BaseExercise.sol | 31 +++++++ src/exercise/DiscountExercise.sol | 135 ++++++++++++++++++++++++++++++ src/interfaces/IExercise.sol | 10 +++ test/OptionsToken.t.sol | 82 +++++++++++++++--- 6 files changed, 298 insertions(+), 88 deletions(-) create mode 100644 remappings.txt create mode 100644 src/exercise/BaseExercise.sol create mode 100644 src/exercise/DiscountExercise.sol create mode 100644 src/interfaces/IExercise.sol diff --git a/remappings.txt b/remappings.txt new file mode 100644 index 0000000..dc0fb24 --- /dev/null +++ b/remappings.txt @@ -0,0 +1,2 @@ +create3-factory/=lib/create3-factory/src/ + diff --git a/src/OptionsToken.sol b/src/OptionsToken.sol index 062bcc2..9ce21d7 100644 --- a/src/OptionsToken.sol +++ b/src/OptionsToken.sol @@ -3,39 +3,34 @@ pragma solidity ^0.8.13; import {Owned} from "solmate/auth/Owned.sol"; import {ERC20} from "solmate/tokens/ERC20.sol"; -import {SafeTransferLib} from "solmate/utils/SafeTransferLib.sol"; -import {FixedPointMathLib} from "solmate/utils/FixedPointMathLib.sol"; import {IOracle} from "./interfaces/IOracle.sol"; import {IERC20Mintable} from "./interfaces/IERC20Mintable.sol"; +import {IExercise} from "./interfaces/IExercise.sol"; + +struct Option { + address impl; + bool isActive; +} /// @title Options Token /// @author zefram.eth -/// @notice Options token representing the right to purchase the underlying token -/// at an oracle-specified rate. Similar to call options but with a variable strike -/// price that's always at a certain discount to the market price. -/// @dev Assumes the underlying token and the payment token both use 18 decimals. +/// @notice Options token representing the right to perform an advantageous action, +/// such as purchasing the underlying token at a discount to the market price. contract OptionsToken is ERC20, Owned, IERC20Mintable { - /// ----------------------------------------------------------------------- - /// Library usage - /// ----------------------------------------------------------------------- - - using SafeTransferLib for ERC20; - using FixedPointMathLib for uint256; - /// ----------------------------------------------------------------------- /// Errors /// ----------------------------------------------------------------------- error OptionsToken__PastDeadline(); error OptionsToken__NotTokenAdmin(); - error OptionsToken__SlippageTooHigh(); + error OptionsToken__NotActive(); /// ----------------------------------------------------------------------- /// Events /// ----------------------------------------------------------------------- - event Exercise(address indexed sender, address indexed recipient, uint256 amount, uint256 paymentAmount); + event Exercise(address indexed sender, address indexed recipient, uint256 amount, bytes parameters); event SetOracle(IOracle indexed newOracle); event SetTreasury(address indexed newTreasury); @@ -46,22 +41,11 @@ contract OptionsToken is ERC20, Owned, IERC20Mintable { /// @notice The contract that has the right to mint options tokens address public immutable tokenAdmin; - /// @notice The token paid by the options token holder during redemption - ERC20 public immutable paymentToken; - - /// @notice The underlying token purchased during redemption - IERC20Mintable public immutable underlyingToken; - /// ----------------------------------------------------------------------- /// Storage variables /// ----------------------------------------------------------------------- - /// @notice The oracle contract that provides the current price to purchase - /// the underlying token while exercising options (the strike price) - IOracle public oracle; - - /// @notice The treasury address which receives tokens paid during redemption - address public treasury; + Option[] public options; /// ----------------------------------------------------------------------- /// Constructor @@ -71,20 +55,9 @@ contract OptionsToken is ERC20, Owned, IERC20Mintable { string memory name_, string memory symbol_, address owner_, - address tokenAdmin_, - ERC20 paymentToken_, - IERC20Mintable underlyingToken_, - IOracle oracle_, - address treasury_ + address tokenAdmin_ ) ERC20(name_, symbol_, 18) Owned(owner_) { tokenAdmin = tokenAdmin_; - paymentToken = paymentToken_; - underlyingToken = underlyingToken_; - oracle = oracle_; - treasury = treasury_; - - emit SetOracle(oracle_); - emit SetTreasury(treasury_); } /// ----------------------------------------------------------------------- @@ -112,83 +85,82 @@ contract OptionsToken is ERC20, Owned, IERC20Mintable { _mint(to, amount); } - /// @notice Exercises options tokens to purchase the underlying tokens. + /// @notice Exercises options tokens, giving the reward to the recipient. + /// @dev WARNING: If `amount` is zero, the bytes returned will be empty and therefore, not decodable. /// @dev The options tokens are not burnt but sent to address(0) to avoid messing up the /// inflation schedule. - /// The oracle may revert if it cannot give a secure result. /// @param amount The amount of options tokens to exercise - /// @param maxPaymentAmount The maximum acceptable amount to pay. Used for slippage protection. - /// @param recipient The recipient of the purchased underlying tokens - /// @return paymentAmount The amount paid to the treasury to purchase the underlying tokens - function exercise(uint256 amount, uint256 maxPaymentAmount, address recipient) + /// @param recipient The recipient of the reward + /// @param params Extra parameters to be used by the exercise function + function exercise(uint256 amount, address recipient, uint256 optionId, bytes calldata params) external virtual - returns (uint256 paymentAmount) + returns (bytes memory) { - return _exercise(amount, maxPaymentAmount, recipient); + return _exercise(amount, recipient, optionId, params); } - /// @notice Exercises options tokens to purchase the underlying tokens. + /// @notice Exercises options tokens, giving the reward to the recipient. + /// @dev WARNING: If `amount` is zero, the bytes returned will be empty and therefore, not decodable. /// @dev The options tokens are not burnt but sent to address(0) to avoid messing up the /// inflation schedule. - /// The oracle may revert if it cannot give a secure result. /// @param amount The amount of options tokens to exercise - /// @param maxPaymentAmount The maximum acceptable amount to pay. Used for slippage protection. - /// @param recipient The recipient of the purchased underlying tokens - /// @param deadline The Unix timestamp (in seconds) after which the call will revert - /// @return paymentAmount The amount paid to the treasury to purchase the underlying tokens - function exercise(uint256 amount, uint256 maxPaymentAmount, address recipient, uint256 deadline) + /// @param recipient The recipient of the reward + /// @param params Extra parameters to be used by the exercise function + /// @param deadline The deadline by which the transaction must be mined + function exercise(uint256 amount, address recipient, uint256 optionId, bytes calldata params, uint256 deadline) external virtual - returns (uint256 paymentAmount) + returns (bytes memory) { if (block.timestamp > deadline) revert OptionsToken__PastDeadline(); - return _exercise(amount, maxPaymentAmount, recipient); + return _exercise(amount, recipient, optionId, params); } /// ----------------------------------------------------------------------- /// Owner functions /// ----------------------------------------------------------------------- - /// @notice Sets the oracle contract. Only callable by the owner. - /// @param oracle_ The new oracle contract - function setOracle(IOracle oracle_) external onlyOwner { - oracle = oracle_; - emit SetOracle(oracle_); + /// @notice Adds a new Exercise contract to the available options. + /// @param impl Address of the Exercise contract, that implements BaseExercise. + /// @param isActive Whether oToken holders should be allowed to exercise using this option. + function addOption(address impl, bool isActive) external onlyOwner { + options.push(Option({impl: impl, isActive: isActive})); } - /// @notice Sets the treasury address. Only callable by the owner. - /// @param treasury_ The new treasury address - function setTreasury(address treasury_) external onlyOwner { - treasury = treasury_; - emit SetTreasury(treasury_); + /// @notice Sets an option as active or not. Determines if holders can use it to exercise. + /// @param optionId The option's ID. + /// @param isActive Whether oToken holders should be allowed to exercise using this option. + function setOptionActive(uint256 optionId, bool isActive) external onlyOwner { + options[optionId].isActive = isActive; } /// ----------------------------------------------------------------------- /// Internal functions /// ----------------------------------------------------------------------- - function _exercise(uint256 amount, uint256 maxPaymentAmount, address recipient) + function _exercise(uint256 amount, address recipient, uint256 optionId, bytes calldata params) internal virtual - returns (uint256 paymentAmount) + returns (bytes memory data) { // skip if amount is zero - if (amount == 0) return 0; + if (amount == 0) return new bytes(0); + + // get option + Option memory option = options[optionId]; + + // skip if option is not active + if (!option.isActive) revert OptionsToken__NotActive(); // transfer options tokens from msg.sender to address(0) // we transfer instead of burn because TokenAdmin cares about totalSupply // which we don't want to change in order to follow the emission schedule transfer(address(0), amount); - // transfer payment tokens from msg.sender to the treasury - paymentAmount = amount.mulWadUp(oracle.getPrice()); - if (paymentAmount > maxPaymentAmount) revert OptionsToken__SlippageTooHigh(); - paymentToken.safeTransferFrom(msg.sender, treasury, paymentAmount); - - // mint underlying tokens to recipient - underlyingToken.mint(recipient, amount); + // give rewards to recipient + data = IExercise(option.impl).exercise(msg.sender, amount, recipient, params); - emit Exercise(msg.sender, recipient, amount, paymentAmount); + emit Exercise(msg.sender, recipient, amount, params); } } diff --git a/src/exercise/BaseExercise.sol b/src/exercise/BaseExercise.sol new file mode 100644 index 0000000..e101ddf --- /dev/null +++ b/src/exercise/BaseExercise.sol @@ -0,0 +1,31 @@ +// SPDX-License-Identifier: AGPL-3.0 +pragma solidity ^0.8.13; + +import {IExercise} from "../interfaces/IExercise.sol"; +import {OptionsToken} from "../OptionsToken.sol"; + +abstract contract BaseExercise is IExercise { + error Exercise__NotOToken(); + + OptionsToken public immutable oToken; + + constructor (OptionsToken _oToken) { + oToken = _oToken; + } + + modifier onlyOToken() { + if (msg.sender != address(oToken)) revert Exercise__NotOToken(); + _; + } + + /// @notice Called by the oToken and handles rewarding logic for the user. + /// @dev *Must* have onlyOToken modifier. + /// @param from Wallet that is exercising tokens + /// @param amount Amount of tokens being exercised + /// @param recipient Wallet that will receive the rewards for exercising the oTokens + /// @param params Extraneous parameters that the function may use - abi.encoded struct + function exercise(address from, uint256 amount, address recipient, bytes memory params) + external + virtual + returns (bytes memory data); +} diff --git a/src/exercise/DiscountExercise.sol b/src/exercise/DiscountExercise.sol new file mode 100644 index 0000000..a70e08d --- /dev/null +++ b/src/exercise/DiscountExercise.sol @@ -0,0 +1,135 @@ +// SPDX-License-Identifier: AGPL-3.0 +pragma solidity ^0.8.13; + +import {Owned} from "solmate/auth/Owned.sol"; +import {ERC20} from "solmate/tokens/ERC20.sol"; +import {SafeTransferLib} from "solmate/utils/SafeTransferLib.sol"; +import {FixedPointMathLib} from "solmate/utils/FixedPointMathLib.sol"; + +import {BaseExercise} from "../exercise/BaseExercise.sol"; +import {IOracle} from "../interfaces/IOracle.sol"; +import {IERC20Mintable} from "../interfaces/IERC20Mintable.sol"; +import {OptionsToken} from "../OptionsToken.sol"; + +struct DiscountExerciseParams { + uint256 maxPaymentAmount; +} + +struct DiscountExerciseReturnData { + uint256 paymentAmount; +} + +/// @title Options Token Exercise Contract +/// @author @bigbadbeard, @lookee, @eidolon +/// @notice Contract that allows the holder of options tokens to exercise them, +/// in this case, by purchasing the underlying token at a discount to the market price. +/// @dev Assumes the underlying token and the payment token both use 18 decimals. +contract DiscountExercise is BaseExercise, Owned { + /// Library usage + using SafeTransferLib for ERC20; + using FixedPointMathLib for uint256; + + /// Errors + error Exercise__SlippageTooHigh(); + + /// Events + event Exercised(address indexed sender, address indexed recipient, uint256 amount, uint256 paymentAmount); + event SetOracle(IOracle indexed newOracle); + event SetTreasury(address indexed newTreasury); + + /// Immutable parameters + + /// @notice The token paid by the options token holder during redemption + ERC20 public immutable paymentToken; + + /// @notice The underlying token purchased during redemption + IERC20Mintable public immutable underlyingToken; + + /// Storage variables + + /// @notice The oracle contract that provides the current price to purchase + /// the underlying token while exercising options (the strike price) + IOracle public oracle; + + /// @notice The treasury address which receives tokens paid during redemption + address public treasury; + + constructor( + OptionsToken oToken_, + address owner_, + ERC20 paymentToken_, + IERC20Mintable underlyingToken_, + IOracle oracle_, + address treasury_ + ) BaseExercise(oToken_) Owned(owner_) { + paymentToken = paymentToken_; + underlyingToken = underlyingToken_; + oracle = oracle_; + treasury = treasury_; + + emit SetOracle(oracle_); + emit SetTreasury(treasury_); + } + + /// External functions + + /// @notice Exercises options tokens to purchase the underlying tokens. + /// @dev The oracle may revert if it cannot give a secure result. + /// @param from The user that is exercising their options tokens + /// @param amount The amount of options tokens to exercise + /// @param recipient The recipient of the purchased underlying tokens + /// @param params Extra parameters to be used by the exercise function + function exercise(address from, uint256 amount, address recipient, bytes memory params) + external + virtual + override + onlyOToken + returns (bytes memory data) + { + if (msg.sender != address(oToken)) revert Exercise__NotOToken(); + return _exercise(from, amount, recipient, params); + } + + /// Owner functions + + /// @notice Sets the oracle contract. Only callable by the owner. + /// @param oracle_ The new oracle contract + function setOracle(IOracle oracle_) external onlyOwner { + oracle = oracle_; + emit SetOracle(oracle_); + } + + /// @notice Sets the treasury address. Only callable by the owner. + /// @param treasury_ The new treasury address + function setTreasury(address treasury_) external onlyOwner { + treasury = treasury_; + emit SetTreasury(treasury_); + } + + /// Internal functions + + function _exercise(address from, uint256 amount, address recipient, bytes memory params) + internal + virtual + returns (bytes memory data) + { + // decode params + DiscountExerciseParams memory _params = abi.decode(params, (DiscountExerciseParams)); + + // transfer payment tokens from user to the treasury + uint256 paymentAmount = amount.mulWadUp(oracle.getPrice()); + if (paymentAmount > _params.maxPaymentAmount) revert Exercise__SlippageTooHigh(); + paymentToken.safeTransferFrom(from, treasury, paymentAmount); + + // mint underlying tokens to recipient + underlyingToken.mint(recipient, amount); + + data = abi.encode( + DiscountExerciseReturnData({ + paymentAmount: paymentAmount + }) + ); + + emit Exercised(from, recipient, amount, paymentAmount); + } +} diff --git a/src/interfaces/IExercise.sol b/src/interfaces/IExercise.sol new file mode 100644 index 0000000..3f12149 --- /dev/null +++ b/src/interfaces/IExercise.sol @@ -0,0 +1,10 @@ +// SPDX-License-Identifier: AGPL-3.0 +pragma solidity ^0.8.13; + +interface IExercise { + /// @notice Exercise the options token + /// @param amount The amount of options tokens to exercise + /// @param recipient The address that receives the underlying tokens + /// @param params Additional parameters for the exercise + function exercise(address from, uint256 amount, address recipient, bytes memory params) external returns (bytes memory data); +} diff --git a/test/OptionsToken.t.sol b/test/OptionsToken.t.sol index bd8c3d4..8ba400c 100644 --- a/test/OptionsToken.t.sol +++ b/test/OptionsToken.t.sol @@ -6,11 +6,13 @@ import "forge-std/Test.sol"; import {FixedPointMathLib} from "solmate/utils/FixedPointMathLib.sol"; import {OptionsToken} from "../src/OptionsToken.sol"; +import {DiscountExerciseParams, DiscountExerciseReturnData, DiscountExercise} from "../src/exercise/DiscountExercise.sol"; import {TestERC20Mintable} from "./mocks/TestERC20Mintable.sol"; import {BalancerOracle} from "../src/oracles/BalancerOracle.sol"; import {IERC20Mintable} from "../src/interfaces/IERC20Mintable.sol"; import {MockBalancerTwapOracle} from "./mocks/MockBalancerTwapOracle.sol"; + contract OptionsTokenTest is Test { using FixedPointMathLib for uint256; @@ -28,6 +30,7 @@ contract OptionsTokenTest is Test { address treasury; OptionsToken optionsToken; + DiscountExercise exerciser; BalancerOracle oracle; MockBalancerTwapOracle balancerTwapOracle; TestERC20Mintable paymentToken; @@ -45,12 +48,18 @@ contract OptionsTokenTest is Test { new BalancerOracle(balancerTwapOracle, owner, ORACLE_MULTIPLIER, ORACLE_SECS, ORACLE_AGO, ORACLE_MIN_PRICE); paymentToken = new TestERC20Mintable(); underlyingToken = IERC20Mintable(address(new TestERC20Mintable())); - optionsToken = - new OptionsToken("TIT Call Option Token", "oTIT", owner, tokenAdmin, paymentToken, underlyingToken, oracle, treasury); + optionsToken = new OptionsToken("TIT Call Option Token", "oTIT", owner, tokenAdmin); + + exerciser = new DiscountExercise(optionsToken, owner, paymentToken, underlyingToken, oracle, treasury); + + // add exerciser to the list of options + vm.startPrank(owner); + optionsToken.addOption(address(exerciser), true); + vm.stopPrank(); // set up contracts balancerTwapOracle.setTwapValue(ORACLE_INIT_TWAP_VALUE); - paymentToken.approve(address(optionsToken), type(uint256).max); + paymentToken.approve(address(exerciser), type(uint256).max); } function test_onlyTokenAdminCanMint(uint256 amount, address hacker) public { @@ -83,7 +92,8 @@ contract OptionsTokenTest is Test { paymentToken.mint(address(this), expectedPaymentAmount); // exercise options tokens - uint256 actualPaymentAmount = optionsToken.exercise(amount, expectedPaymentAmount, recipient); + DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount}); + bytes memory returnBytes = optionsToken.exercise(amount, recipient, 0, abi.encode(params)); // verify options tokens were transferred assertEqDecimal(optionsToken.balanceOf(address(this)), 0, 18, "user still has options tokens"); @@ -95,7 +105,10 @@ contract OptionsTokenTest is Test { assertEqDecimal( paymentToken.balanceOf(treasury), expectedPaymentAmount, 18, "treasury didn't receive payment tokens" ); - assertEqDecimal(actualPaymentAmount, expectedPaymentAmount, 18, "exercise returned wrong value"); + if (amount != 0) { + DiscountExerciseReturnData memory returnData = abi.decode(returnBytes, (DiscountExerciseReturnData)); + assertEqDecimal(returnData.paymentAmount, expectedPaymentAmount, 18, "exercise returned wrong value"); + } } function test_exerciseMinPrice(uint256 amount, address recipient) public { @@ -113,7 +126,8 @@ contract OptionsTokenTest is Test { paymentToken.mint(address(this), expectedPaymentAmount); // exercise options tokens - uint256 actualPaymentAmount = optionsToken.exercise(amount, expectedPaymentAmount, recipient); + DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount}); + bytes memory returnBytes = optionsToken.exercise(amount, recipient, 0, abi.encode(params)); // verify options tokens were transferred assertEqDecimal(optionsToken.balanceOf(address(this)), 0, 18, "user still has options tokens"); @@ -125,7 +139,10 @@ contract OptionsTokenTest is Test { assertEqDecimal( paymentToken.balanceOf(treasury), expectedPaymentAmount, 18, "treasury didn't receive payment tokens" ); - assertEqDecimal(actualPaymentAmount, expectedPaymentAmount, 18, "exercise returned wrong value"); + if (amount != 0) { + DiscountExerciseReturnData memory returnData = abi.decode(returnBytes, (DiscountExerciseReturnData)); + assertEqDecimal(returnData.paymentAmount, expectedPaymentAmount, 18, "exercise returned wrong value"); + } } function test_exerciseHighSlippage(uint256 amount, address recipient) public { @@ -141,8 +158,9 @@ contract OptionsTokenTest is Test { paymentToken.mint(address(this), expectedPaymentAmount); // exercise options tokens which should fail - vm.expectRevert(bytes4(keccak256("OptionsToken__SlippageTooHigh()"))); - optionsToken.exercise(amount, expectedPaymentAmount - 1, recipient); + DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount - 1}); + vm.expectRevert(bytes4(keccak256("Exercise__SlippageTooHigh()"))); + optionsToken.exercise(amount, recipient, 0, abi.encode(params)); } function test_exerciseTwapOracleNotReady(uint256 amount, address recipient) public { @@ -164,8 +182,9 @@ contract OptionsTokenTest is Test { oracle.setParams(ORACLE_MULTIPLIER, ORACLE_SECS, ORACLE_LARGEST_SAFETY_WINDOW, ORACLE_MIN_PRICE); // exercise options tokens which should fail + DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount}); vm.expectRevert(bytes4(keccak256("BalancerOracle__TWAPOracleNotReady()"))); - optionsToken.exercise(amount, expectedPaymentAmount, recipient); + optionsToken.exercise(amount, recipient, 0, abi.encode(params)); } function test_exercisePastDeadline(uint256 amount, address recipient, uint256 deadline) public { @@ -182,7 +201,48 @@ contract OptionsTokenTest is Test { paymentToken.mint(address(this), expectedPaymentAmount); // exercise options tokens + DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount}); vm.expectRevert(bytes4(keccak256("OptionsToken__PastDeadline()"))); - optionsToken.exercise(amount, expectedPaymentAmount, recipient, deadline); + optionsToken.exercise(amount, recipient, 0, abi.encode(params), deadline); + } + + function test_exerciseNotOToken(uint256 amount, address recipient) public { + amount = bound(amount, 0, MAX_SUPPLY); + + // mint options tokens + vm.prank(tokenAdmin); + optionsToken.mint(address(this), amount); + + uint256 expectedPaymentAmount = + amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(ORACLE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); + paymentToken.mint(address(this), expectedPaymentAmount); + + // exercise options tokens which should fail + DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount}); + vm.expectRevert(bytes4(keccak256("Exercise__NotOToken()"))); + exerciser.exercise(address(this), amount, recipient, abi.encode(params)); } + + function test_exerciseOptionNotActive(uint256 amount, address recipient) public { + amount = bound(amount, 1, MAX_SUPPLY); + + // mint options tokens + vm.prank(tokenAdmin); + optionsToken.mint(address(this), amount); + + // set option inactive + vm.prank(owner); + optionsToken.setOptionActive(0, false); + + // mint payment tokens + uint256 expectedPaymentAmount = + amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(ORACLE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); + paymentToken.mint(address(this), expectedPaymentAmount); + + // exercise options tokens which should fail + DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount}); + vm.expectRevert(bytes4(keccak256("OptionsToken__NotActive()"))); + optionsToken.exercise(amount, recipient, 0, abi.encode(params)); + } + } From 93dda5d124cb9ae4b2e9e898efe73fb1b7c9912d Mon Sep 17 00:00:00 2001 From: lookeey <71905281+lookeey@users.noreply.github.com> Date: Sun, 12 Nov 2023 22:21:22 -0300 Subject: [PATCH 02/64] forge install: v3-core 0.8 --- .gitmodules | 3 +++ lib/v3-core | 1 + 2 files changed, 4 insertions(+) create mode 160000 lib/v3-core diff --git a/.gitmodules b/.gitmodules index 5e0106b..522601e 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,3 +7,6 @@ [submodule "lib/create3-factory"] path = lib/create3-factory url = https://github.com/zeframlou/create3-factory +[submodule "lib/v3-core"] + path = lib/v3-core + url = https://github.com/uniswap/v3-core diff --git a/lib/v3-core b/lib/v3-core new file mode 160000 index 0000000..6562c52 --- /dev/null +++ b/lib/v3-core @@ -0,0 +1 @@ +Subproject commit 6562c52e8f75f0c10f9deaf44861847585fc8129 From a29b4aeb95d8e3c667f332e0c69ecd78af5695c9 Mon Sep 17 00:00:00 2001 From: Eidolon <92181746+imrtlfarm@users.noreply.github.com> Date: Sat, 18 Nov 2023 11:02:10 +0000 Subject: [PATCH 03/64] begin adding fees to base exercise --- src/exercise/BaseExercise.sol | 52 +++++++++++++++++++- src/exercise/DiscountExercise.sol | 16 ++----- src/interfaces/IERC20.sol | 79 +++++++++++++++++++++++++++++++ 3 files changed, 133 insertions(+), 14 deletions(-) create mode 100644 src/interfaces/IERC20.sol diff --git a/src/exercise/BaseExercise.sol b/src/exercise/BaseExercise.sol index e101ddf..aeda18f 100644 --- a/src/exercise/BaseExercise.sol +++ b/src/exercise/BaseExercise.sol @@ -3,14 +3,37 @@ pragma solidity ^0.8.13; import {IExercise} from "../interfaces/IExercise.sol"; import {OptionsToken} from "../OptionsToken.sol"; +import {SafeTransferLib} from "solmate/utils/SafeTransferLib.sol"; +import {FixedPointMathLib} from "solmate/utils/FixedPointMathLib.sol"; +import {Owned} from "solmate/auth/Owned.sol"; +import {ERC20} from "solmate/tokens/ERC20.sol"; + +abstract contract BaseExercise is IExercise, Owned { + using SafeTransferLib for ERC20; + using FixedPointMathLib for uint256; -abstract contract BaseExercise is IExercise { error Exercise__NotOToken(); + error Exercise__feeArrayLengthMismatch(); + + event SetFees(address[] feeRecipients, uint256[] feeBPS); + event DistributeFees(address[] feeRecipients, uint256[] feeBPS, uint256 totalAmount); + + uint256 public constant FEE_DENOMINATOR = 10_000; OptionsToken public immutable oToken; - constructor (OptionsToken _oToken) { + /// @notice The fee addresses which receive any tokens paid during redemption + address[] public feeRecipients; + + /// @notice The fee percentage in basis points, feeRecipients[n] receives + /// feeBPS[n] * fee / 10_000 in fees + uint256[] public feeBPS; + + constructor (OptionsToken _oToken, address[] memory _feeRecipients, uint256[] memory _feeBPS) { oToken = _oToken; + if (_feeRecipients.length != _feeBPS.length) revert Exercise__feeArrayLengthMismatch(); + feeRecipients = _feeRecipients; + feeBPS = _feeBPS; } modifier onlyOToken() { @@ -28,4 +51,29 @@ abstract contract BaseExercise is IExercise { external virtual returns (bytes memory data); + + function setFees(address[] memory _feeRecipients, uint256[] memory _feeBPS) external onlyOwner { + if (_feeRecipients.length != _feeBPS.length) revert Exercise__feeArrayLengthMismatch(); + feeRecipients = _feeRecipients; + feeBPS = _feeBPS; + emit SetFees(_feeRecipients, _feeBPS); + } + + /// @notice Distributes fees to the fee recipients from a token holder who has approved + function distributeFeesFrom(uint256 totalAmount, ERC20 token, address from) internal virtual{ + for (uint256 i = 0; i < feeRecipients.length; i++) { + uint256 feeAmount = totalAmount * feeBPS[i] / FEE_DENOMINATOR; + token.safeTransferFrom(from, feeRecipients[i], feeAmount); + } + emit DistributeFees(feeRecipients, feeBPS, totalAmount); + } + + /// @notice Distributes fees to the fee recipients from token balance of exercise contract + function distributeFees(uint256 totalAmount, ERC20 token, address from) internal virtual{ + for (uint256 i = 0; i < feeRecipients.length; i++) { + uint256 feeAmount = totalAmount * feeBPS[i] / FEE_DENOMINATOR; + token.safeTransfer(feeRecipients[i], feeAmount); + } + emit DistributeFees(feeRecipients, feeBPS, totalAmount); + } } diff --git a/src/exercise/DiscountExercise.sol b/src/exercise/DiscountExercise.sol index a70e08d..17816ee 100644 --- a/src/exercise/DiscountExercise.sol +++ b/src/exercise/DiscountExercise.sol @@ -24,7 +24,7 @@ struct DiscountExerciseReturnData { /// @notice Contract that allows the holder of options tokens to exercise them, /// in this case, by purchasing the underlying token at a discount to the market price. /// @dev Assumes the underlying token and the payment token both use 18 decimals. -contract DiscountExercise is BaseExercise, Owned { +contract DiscountExercise is BaseExercise { /// Library usage using SafeTransferLib for ERC20; using FixedPointMathLib for uint256; @@ -60,15 +60,14 @@ contract DiscountExercise is BaseExercise, Owned { ERC20 paymentToken_, IERC20Mintable underlyingToken_, IOracle oracle_, - address treasury_ - ) BaseExercise(oToken_) Owned(owner_) { + address[] memory feeRecipients_, + uint256[] memory feeBPS_ + ) BaseExercise(oToken_, feeRecipients_, feeBPS_) Owned(owner_) { paymentToken = paymentToken_; underlyingToken = underlyingToken_; oracle = oracle_; - treasury = treasury_; emit SetOracle(oracle_); - emit SetTreasury(treasury_); } /// External functions @@ -99,13 +98,6 @@ contract DiscountExercise is BaseExercise, Owned { emit SetOracle(oracle_); } - /// @notice Sets the treasury address. Only callable by the owner. - /// @param treasury_ The new treasury address - function setTreasury(address treasury_) external onlyOwner { - treasury = treasury_; - emit SetTreasury(treasury_); - } - /// Internal functions function _exercise(address from, uint256 amount, address recipient, bytes memory params) diff --git a/src/interfaces/IERC20.sol b/src/interfaces/IERC20.sol new file mode 100644 index 0000000..4ca8545 --- /dev/null +++ b/src/interfaces/IERC20.sol @@ -0,0 +1,79 @@ +// SPDX-License-Identifier: MIT +// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol) + +pragma solidity ^0.8.20; + +/** + * @dev Interface of the ERC20 standard as defined in the EIP. + */ +interface IERC20 { + /** + * @dev Emitted when `value` tokens are moved from one account (`from`) to + * another (`to`). + * + * Note that `value` may be zero. + */ + event Transfer(address indexed from, address indexed to, uint256 value); + + /** + * @dev Emitted when the allowance of a `spender` for an `owner` is set by + * a call to {approve}. `value` is the new allowance. + */ + event Approval(address indexed owner, address indexed spender, uint256 value); + + /** + * @dev Returns the value of tokens in existence. + */ + function totalSupply() external view returns (uint256); + + /** + * @dev Returns the value of tokens owned by `account`. + */ + function balanceOf(address account) external view returns (uint256); + + /** + * @dev Moves a `value` amount of tokens from the caller's account to `to`. + * + * Returns a boolean value indicating whether the operation succeeded. + * + * Emits a {Transfer} event. + */ + function transfer(address to, uint256 value) external returns (bool); + + /** + * @dev Returns the remaining number of tokens that `spender` will be + * allowed to spend on behalf of `owner` through {transferFrom}. This is + * zero by default. + * + * This value changes when {approve} or {transferFrom} are called. + */ + function allowance(address owner, address spender) external view returns (uint256); + + /** + * @dev Sets a `value` amount of tokens as the allowance of `spender` over the + * caller's tokens. + * + * Returns a boolean value indicating whether the operation succeeded. + * + * IMPORTANT: Beware that changing an allowance with this method brings the risk + * that someone may use both the old and the new allowance by unfortunate + * transaction ordering. One possible solution to mitigate this race + * condition is to first reduce the spender's allowance to 0 and set the + * desired value afterwards: + * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 + * + * Emits an {Approval} event. + */ + function approve(address spender, uint256 value) external returns (bool); + + /** + * @dev Moves a `value` amount of tokens from `from` to `to` using the + * allowance mechanism. `value` is then deducted from the caller's + * allowance. + * + * Returns a boolean value indicating whether the operation succeeded. + * + * Emits a {Transfer} event. + */ + function transferFrom(address from, address to, uint256 value) external returns (bool); +} \ No newline at end of file From dc94d13195cbcc5843c4c33eca4796f8f35e69b2 Mon Sep 17 00:00:00 2001 From: Eidolon <92181746+imrtlfarm@users.noreply.github.com> Date: Sat, 18 Nov 2023 11:02:44 +0000 Subject: [PATCH 04/64] delete IERC20.sol --- src/interfaces/IERC20.sol | 79 --------------------------------------- 1 file changed, 79 deletions(-) delete mode 100644 src/interfaces/IERC20.sol diff --git a/src/interfaces/IERC20.sol b/src/interfaces/IERC20.sol deleted file mode 100644 index 4ca8545..0000000 --- a/src/interfaces/IERC20.sol +++ /dev/null @@ -1,79 +0,0 @@ -// SPDX-License-Identifier: MIT -// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol) - -pragma solidity ^0.8.20; - -/** - * @dev Interface of the ERC20 standard as defined in the EIP. - */ -interface IERC20 { - /** - * @dev Emitted when `value` tokens are moved from one account (`from`) to - * another (`to`). - * - * Note that `value` may be zero. - */ - event Transfer(address indexed from, address indexed to, uint256 value); - - /** - * @dev Emitted when the allowance of a `spender` for an `owner` is set by - * a call to {approve}. `value` is the new allowance. - */ - event Approval(address indexed owner, address indexed spender, uint256 value); - - /** - * @dev Returns the value of tokens in existence. - */ - function totalSupply() external view returns (uint256); - - /** - * @dev Returns the value of tokens owned by `account`. - */ - function balanceOf(address account) external view returns (uint256); - - /** - * @dev Moves a `value` amount of tokens from the caller's account to `to`. - * - * Returns a boolean value indicating whether the operation succeeded. - * - * Emits a {Transfer} event. - */ - function transfer(address to, uint256 value) external returns (bool); - - /** - * @dev Returns the remaining number of tokens that `spender` will be - * allowed to spend on behalf of `owner` through {transferFrom}. This is - * zero by default. - * - * This value changes when {approve} or {transferFrom} are called. - */ - function allowance(address owner, address spender) external view returns (uint256); - - /** - * @dev Sets a `value` amount of tokens as the allowance of `spender` over the - * caller's tokens. - * - * Returns a boolean value indicating whether the operation succeeded. - * - * IMPORTANT: Beware that changing an allowance with this method brings the risk - * that someone may use both the old and the new allowance by unfortunate - * transaction ordering. One possible solution to mitigate this race - * condition is to first reduce the spender's allowance to 0 and set the - * desired value afterwards: - * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 - * - * Emits an {Approval} event. - */ - function approve(address spender, uint256 value) external returns (bool); - - /** - * @dev Moves a `value` amount of tokens from `from` to `to` using the - * allowance mechanism. `value` is then deducted from the caller's - * allowance. - * - * Returns a boolean value indicating whether the operation succeeded. - * - * Emits a {Transfer} event. - */ - function transferFrom(address from, address to, uint256 value) external returns (bool); -} \ No newline at end of file From b49b349bc434107854fe947f2ff502aff453f916 Mon Sep 17 00:00:00 2001 From: Eidolon <92181746+imrtlfarm@users.noreply.github.com> Date: Sat, 18 Nov 2023 11:07:54 +0000 Subject: [PATCH 05/64] change fee fees in discount exercsise --- src/exercise/DiscountExercise.sol | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/exercise/DiscountExercise.sol b/src/exercise/DiscountExercise.sol index 17816ee..648a73a 100644 --- a/src/exercise/DiscountExercise.sol +++ b/src/exercise/DiscountExercise.sol @@ -111,8 +111,7 @@ contract DiscountExercise is BaseExercise { // transfer payment tokens from user to the treasury uint256 paymentAmount = amount.mulWadUp(oracle.getPrice()); if (paymentAmount > _params.maxPaymentAmount) revert Exercise__SlippageTooHigh(); - paymentToken.safeTransferFrom(from, treasury, paymentAmount); - + distributeFeesFrom(paymentAmount, paymentToken, from); // mint underlying tokens to recipient underlyingToken.mint(recipient, amount); From 1ec57ad5f5e484410a27ca5062e08f19166fba04 Mon Sep 17 00:00:00 2001 From: lookeey <71905281+lookeey@users.noreply.github.com> Date: Mon, 20 Nov 2023 21:34:33 -0300 Subject: [PATCH 06/64] add univ3 oracle --- .env.example | 4 +- remappings.txt | 2 + src/interfaces/IUniswapPool.sol | 10 ++ src/oracles/UniswapV3Oracle.sol | 188 ++++++++++++++++++++++++++++ test/UniswapV3Oracle.t.sol | 213 ++++++++++++++++++++++++++++++++ test/interfaces/ISwapRouter.sol | 67 ++++++++++ test/mocks/MockUniswapPool.sol | 49 ++++++++ 7 files changed, 532 insertions(+), 1 deletion(-) create mode 100644 remappings.txt create mode 100644 src/interfaces/IUniswapPool.sol create mode 100644 src/oracles/UniswapV3Oracle.sol create mode 100644 test/UniswapV3Oracle.t.sol create mode 100644 test/interfaces/ISwapRouter.sol create mode 100644 test/mocks/MockUniswapPool.sol diff --git a/.env.example b/.env.example index 6bb663b..a8bd1d5 100644 --- a/.env.example +++ b/.env.example @@ -19,4 +19,6 @@ ORACLE_MIN_PRICE=XXX # 18 decimals OT_NAME="LIT Call Option Token" OT_SYMBOL="oLIT" -OT_PAYMENT_TOKEN=0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 # WETH \ No newline at end of file +OT_PAYMENT_TOKEN=0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 # WETH + +OPTIMISM_RPC_URL="https://mainnet.optimism.io" diff --git a/remappings.txt b/remappings.txt new file mode 100644 index 0000000..a127e27 --- /dev/null +++ b/remappings.txt @@ -0,0 +1,2 @@ +create3-factory/=lib/create3-factory/src/ +v3-core/=lib/v3-core/contracts/ diff --git a/src/interfaces/IUniswapPool.sol b/src/interfaces/IUniswapPool.sol new file mode 100644 index 0000000..1e6a893 --- /dev/null +++ b/src/interfaces/IUniswapPool.sol @@ -0,0 +1,10 @@ +pragma solidity ^0.8.0; + +import {IUniswapV3PoolDerivedState} from "v3-core/interfaces/pool/IUniswapV3PoolDerivedState.sol"; +import {IUniswapV3PoolImmutables} from "v3-core/interfaces/pool/IUniswapV3PoolImmutables.sol"; + +/** + * @dev Interface for querying historical data from a UniswapV3 Pool that can be used as a Price Oracle. + * @notice From v3-core/interfaces + */ +interface IUniswapPool is IUniswapV3PoolDerivedState, IUniswapV3PoolImmutables {} diff --git a/src/oracles/UniswapV3Oracle.sol b/src/oracles/UniswapV3Oracle.sol new file mode 100644 index 0000000..94d51e1 --- /dev/null +++ b/src/oracles/UniswapV3Oracle.sol @@ -0,0 +1,188 @@ +// SPDX-License-Identifier: AGPL-3.0 +pragma solidity ^0.8.13; + +import {Owned} from "solmate/auth/Owned.sol"; +import {FixedPointMathLib} from "solmate/utils/FixedPointMathLib.sol"; + +import {IOracle} from "../interfaces/IOracle.sol"; +import "forge-std/console.sol"; + +import {IUniswapPool} from "../interfaces/IUniswapPool.sol"; +import {TickMath} from "v3-core/libraries/TickMath.sol"; +import {FullMath} from "v3-core/libraries/FullMath.sol"; + +/// @title Oracle using Uniswap TWAP oracle as data source +/// @author zefram.eth & lookeey +/// @notice The oracle contract that provides the current price to purchase +/// the underlying token while exercising options. Uses UniswapV3 TWAP oracle +/// as data source, and then applies a multiplier & lower bound. +/// @dev IMPORTANT: This oracle assumes both tokens have 18 decimals, and +/// returns the price with 18 decimals. +contract UniswapV3Oracle is IOracle, Owned { + /// ----------------------------------------------------------------------- + /// Library usage + /// ----------------------------------------------------------------------- + + using FixedPointMathLib for uint256; + + /// ----------------------------------------------------------------------- + /// Errors + /// ----------------------------------------------------------------------- + + error UniswapOracle__TWAPOracleNotReady(); + + /// ----------------------------------------------------------------------- + /// Events + /// ----------------------------------------------------------------------- + + event SetParams(uint16 multiplier, uint56 secs, uint56 ago, uint128 minPrice); + + /// ----------------------------------------------------------------------- + /// Constants + /// ----------------------------------------------------------------------- + + /// @notice The denominator for converting the multiplier into a decimal number. + /// i.e. multiplier uses 4 decimals. + uint256 internal constant MULTIPLIER_DENOM = 10000; + + /// ----------------------------------------------------------------------- + /// Immutable parameters + /// ----------------------------------------------------------------------- + + /// @notice The UniswapV3 Pool contract (provides the oracle) + IUniswapPool public immutable uniswapPool; + + /// ----------------------------------------------------------------------- + /// Storage variables + /// ----------------------------------------------------------------------- + + /// @notice The multiplier applied to the TWAP value. Encodes the discount of + /// the options token. Uses 4 decimals. + uint16 public multiplier; + + /// @notice The size of the window to take the TWAP value over in seconds. + uint32 public secs; + + /// @notice The number of seconds in the past to take the TWAP from. The window + /// would be (block.timestamp - secs - ago, block.timestamp - ago]. + uint32 public ago; + + /// @notice The minimum value returned by getPrice(). Maintains a floor for the + /// price to mitigate potential attacks on the TWAP oracle. + uint128 public minPrice; + + /// @notice Whether the price should be returned in terms of token0. + /// If false, the price is returned in terms of token1. + bool public isToken0; + + /// ----------------------------------------------------------------------- + /// Constructor + /// ----------------------------------------------------------------------- + + constructor( + IUniswapPool uniswapPool_, + address token, + address owner_, + uint16 multiplier_, + uint32 secs_, + uint32 ago_, + uint128 minPrice_ + ) Owned(owner_) { + uniswapPool = uniswapPool_; + isToken0 = token == uniswapPool_.token0(); + multiplier = multiplier_; + secs = secs_; + ago = ago_; + minPrice = minPrice_; + + emit SetParams(multiplier_, secs_, ago_, minPrice_); + } + + /// ----------------------------------------------------------------------- + /// IOracle + /// ----------------------------------------------------------------------- + + /// @inheritdoc IOracle + function getPrice() external view override returns (uint256 price) { + /// ----------------------------------------------------------------------- + /// Storage loads + /// ----------------------------------------------------------------------- + + uint256 multiplier_ = multiplier; + uint32 secs_ = secs; + uint32 ago_ = ago; + uint256 minPrice_ = minPrice; + + /// ----------------------------------------------------------------------- + /// Validation + /// ----------------------------------------------------------------------- + + // The UniswapV3 pool reverts on invalid TWAP queries, so we don't need to + + /// ----------------------------------------------------------------------- + /// Computation + /// ----------------------------------------------------------------------- + + // query Uniswap oracle to get TWAP tick + { + uint32 _twapDuration = secs_; + uint32 _twapAgo = ago_; + uint32[] memory secondsAgo = new uint32[](2); + secondsAgo[0] = _twapDuration + _twapAgo; + secondsAgo[1] = _twapAgo; + + (int56[] memory tickCumulatives,) = uniswapPool.observe(secondsAgo); + int24 tick = int24((tickCumulatives[1] - tickCumulatives[0]) / int56(int32(_twapDuration))); + + // token decimals is 18 + uint256 decimals = 1e18; + + // from https://optimistic.etherscan.io/address/0xB210CE856631EeEB767eFa666EC7C1C57738d438#code#F5#L49 + uint160 sqrtRatioX96 = TickMath.getSqrtRatioAtTick(tick); + + // Calculate quoteAmount with better precision if it doesn't overflow when multiplied by itself + if (sqrtRatioX96 <= type(uint128).max) { + uint256 ratioX192 = uint256(sqrtRatioX96) * sqrtRatioX96; + price = isToken0 + ? FullMath.mulDiv(ratioX192, decimals, 1 << 192) + : FullMath.mulDiv(1 << 192, decimals, ratioX192); + } else { + uint256 ratioX128 = FullMath.mulDiv(sqrtRatioX96, sqrtRatioX96, 1 << 64); + price = isToken0 + ? FullMath.mulDiv(ratioX128, decimals, 1 << 128) + : FullMath.mulDiv(1 << 128, decimals, ratioX128); + } + } + + // apply multiplier to price + price = price.mulDivUp(multiplier_, MULTIPLIER_DENOM); + + // bound price above minPrice + price = price < minPrice_ ? minPrice_ : price; + } + + /// ----------------------------------------------------------------------- + /// Owner functions + /// ----------------------------------------------------------------------- + + /// @notice Updates the oracle parameters. Only callable by the owner. + /// @param multiplier_ The multiplier applied to the TWAP value. Encodes the discount of + /// the options token. Uses 4 decimals. + /// @param secs_ The size of the window to take the TWAP value over in seconds. + /// @param ago_ The number of seconds in the past to take the TWAP from. The window + /// would be (block.timestamp - secs - ago, block.timestamp - ago]. + /// @param minPrice_ The minimum value returned by getPrice(). Maintains a floor for the + /// price to mitigate potential attacks on the TWAP oracle. + /// @param isToken0_ Whether the price should be returned in terms of token0. + function setParams(uint16 multiplier_, uint32 secs_, uint32 ago_, uint128 minPrice_, bool isToken0_) + external + onlyOwner + { + multiplier = multiplier_; + secs = secs_; + ago = ago_; + minPrice = minPrice_; + isToken0 = isToken0_; + emit SetParams(multiplier_, secs_, ago_, minPrice_); + } +} diff --git a/test/UniswapV3Oracle.t.sol b/test/UniswapV3Oracle.t.sol new file mode 100644 index 0000000..2a9b8b7 --- /dev/null +++ b/test/UniswapV3Oracle.t.sol @@ -0,0 +1,213 @@ +// SPDX-License-Identifier: AGPL-3.0 +pragma solidity ^0.8.13; + +import "forge-std/Test.sol"; +import "forge-std/console.sol"; +import {UniswapV3Oracle} from "../src/oracles/UniswapV3Oracle.sol"; +import {IUniswapV3Pool} from "v3-core/interfaces/IUniswapV3Pool.sol"; +import {TickMath} from "v3-core/libraries/TickMath.sol"; +import {FullMath} from "v3-core/libraries/FullMath.sol"; +import {ISwapRouter} from "./interfaces/ISwapRouter.sol"; +import {IUniswapPool} from "../src/interfaces/IUniswapPool.sol"; +import {MockUniswapPool} from "./mocks/MockUniswapPool.sol"; +import {FixedPointMathLib} from "solmate/utils/FixedPointMathLib.sol"; +import {IERC20} from "forge-std/interfaces/IERC20.sol"; + +struct Params { + IUniswapPool pool; + address token; + address owner; + uint16 multiplier; + uint32 secs; + uint32 ago; + uint128 minPrice; +} + +contract UniswapOracleTest is Test { + using stdStorage for StdStorage; + + // mock config + Params _mock; + MockUniswapPool mockV3Pool; + // observation on 2023-09-20 11:26 UTC-3, UNIWETH Ethereum Pool + int56[2] sampleCumulatives = [int56(-4072715107990), int56(-4072608557758)]; + // expected price in terms of token0 + uint256 expectedPriceToken0 = 372078200928347021722; + + string OPTIMISM_RPC_URL = vm.envString("OPTIMISM_RPC_URL"); + uint32 FORK_BLOCK = 112198905; + + address SWAP_ROUTER_ADDRESS = 0xE592427A0AEce92De3Edee1F18E0157C05861564; + address WETH_OP_POOL_ADDRESS = 0x68F5C0A2DE713a54991E01858Fd27a3832401849; + address OP_ADDRESS = 0x4200000000000000000000000000000000000042; + address WETH_ADDRESS = 0x4200000000000000000000000000000000000006; + uint24 POOL_FEE = 3000; + + uint256 opFork; + + ISwapRouter swapRouter; + Params _default; + + function setUp() public { + mockV3Pool = new MockUniswapPool(); + mockV3Pool.setCumulatives(sampleCumulatives); + mockV3Pool.setToken0(OP_ADDRESS); + + _default = Params(IUniswapPool(WETH_OP_POOL_ADDRESS), OP_ADDRESS, address(this), 10000, 30 minutes, 0, 1000); + swapRouter = ISwapRouter(SWAP_ROUTER_ADDRESS); + } + + /// ---------------------------------------------------------------------- + /// Mock tests + /// ---------------------------------------------------------------------- + + function test_PriceToken0() public { + UniswapV3Oracle oracle = new UniswapV3Oracle( + mockV3Pool, + OP_ADDRESS, + _default.owner, + _default.multiplier, + _default.secs, + _default.ago, + _default.minPrice + ); + + uint256 price = oracle.getPrice(); + assertEq(price, expectedPriceToken0); + } + + function test_PriceToken1() public { + UniswapV3Oracle oracle = new UniswapV3Oracle( + mockV3Pool, + address(0), + _default.owner, + _default.multiplier, + _default.secs, + _default.ago, + _default.minPrice + ); + + uint256 price = oracle.getPrice(); + uint256 expectedPriceToken1 = price = FixedPointMathLib.divWadUp(1e18, price); + assertEq(price, expectedPriceToken1); + } + + function test_PriceToken0Multiplier() public { + uint16 multiplier = 5000; + UniswapV3Oracle oracle = new UniswapV3Oracle( + mockV3Pool, + _default.token, + _default.owner, + multiplier, + _default.secs, + _default.ago, + _default.minPrice + ); + + uint256 price = oracle.getPrice(); + uint256 expectedPriceWithMultiplier = FixedPointMathLib.mulDivUp(expectedPriceToken0, multiplier, 10000); + assertEq(price, expectedPriceWithMultiplier); + } + + /// ---------------------------------------------------------------------- + /// Fork tests + /// ---------------------------------------------------------------------- + + function test_priceWithinAcceptableRange() public { + opFork = vm.createSelectFork(OPTIMISM_RPC_URL, FORK_BLOCK); + + UniswapV3Oracle oracle = new UniswapV3Oracle( + _default.pool, + _default.token, + _default.owner, + _default.multiplier, + _default.secs, + _default.ago, + _default.minPrice + ); + + uint oraclePrice = oracle.getPrice(); + + (uint160 sqrtRatioX96,,,,,,) = IUniswapV3Pool(WETH_OP_POOL_ADDRESS).slot0(); + uint256 spotPrice = computePriceFromX96(sqrtRatioX96); + assertApproxEqRel(oraclePrice, spotPrice, 0.01 ether, "Price delta too big"); // 1% + } + + function test_priceManipulation() public { + opFork = vm.createSelectFork(OPTIMISM_RPC_URL, FORK_BLOCK); + + UniswapV3Oracle oracle = new UniswapV3Oracle( + _default.pool, + _default.token, + _default.owner, + _default.multiplier, + _default.secs, + _default.ago, + _default.minPrice + ); + + address manipulator1 = makeAddr("manipulator"); + deal(OP_ADDRESS, manipulator1, 1000000 ether); + + // register initial oracle price + uint256 price_1 = oracle.getPrice(); + + // perform a large swap + vm.startPrank(manipulator1); + ISwapRouter.ExactInputSingleParams memory paramsIn = + ISwapRouter.ExactInputSingleParams({ + tokenIn: OP_ADDRESS, + tokenOut: WETH_ADDRESS, + fee: POOL_FEE, + recipient: manipulator1, + deadline: block.timestamp, + amountIn: 1000000 ether, + amountOutMinimum: 0, + sqrtPriceLimitX96: 0 + }); + IERC20(OP_ADDRESS).approve(address(swapRouter), 1000000 ether); + uint amountOut = swapRouter.exactInputSingle(paramsIn); + vm.stopPrank(); + + // wait 60 seconds + skip(1 minutes); + + // perform additional, smaller swap + address manipulator2 = makeAddr("manipulator"); + deal(OP_ADDRESS, manipulator2, amountOut); + vm.startPrank(manipulator2); + ISwapRouter.ExactInputSingleParams memory paramsOut = + ISwapRouter.ExactInputSingleParams({ + tokenIn: OP_ADDRESS, + tokenOut: WETH_ADDRESS, + fee: POOL_FEE, + recipient: manipulator1, + deadline: block.timestamp, + amountIn: amountOut / 100, // perform small swap + amountOutMinimum: 0, + sqrtPriceLimitX96: 0 + }); + IERC20(OP_ADDRESS).approve(address(swapRouter), amountOut / 100); + swapRouter.exactInputSingle(paramsOut); + + assertApproxEqRel(price_1, oracle.getPrice(), 0.01 ether, "price variance too large"); + } + + function computePriceFromX96(uint160 sqrtRatioX96) internal view returns (uint256 price) { + bool isToken0 = OP_ADDRESS == IUniswapV3Pool(WETH_OP_POOL_ADDRESS).token0(); + uint decimals = 1e18; + + if (sqrtRatioX96 <= type(uint128).max) { + uint256 ratioX192 = uint256(sqrtRatioX96) * sqrtRatioX96; + price = isToken0 + ? FullMath.mulDiv(ratioX192, decimals, 1 << 192) + : FullMath.mulDiv(1 << 192, decimals, ratioX192); + } else { + uint256 ratioX128 = FullMath.mulDiv(sqrtRatioX96, sqrtRatioX96, 1 << 64); + price = isToken0 + ? FullMath.mulDiv(ratioX128, decimals, 1 << 128) + : FullMath.mulDiv(1 << 128, decimals, ratioX128); + } + } + +} diff --git a/test/interfaces/ISwapRouter.sol b/test/interfaces/ISwapRouter.sol new file mode 100644 index 0000000..b5fd3dd --- /dev/null +++ b/test/interfaces/ISwapRouter.sol @@ -0,0 +1,67 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +pragma solidity >=0.7.5; +pragma abicoder v2; + +import 'v3-core/interfaces/callback/IUniswapV3SwapCallback.sol'; + +/// @title Router token swapping functionality +/// @notice Functions for swapping tokens via Uniswap V3 +interface ISwapRouter is IUniswapV3SwapCallback { + struct ExactInputSingleParams { + address tokenIn; + address tokenOut; + uint24 fee; + address recipient; + uint256 deadline; + uint256 amountIn; + uint256 amountOutMinimum; + uint160 sqrtPriceLimitX96; + } + + /// @notice Swaps `amountIn` of one token for as much as possible of another token + /// @param params The parameters necessary for the swap, encoded as `ExactInputSingleParams` in calldata + /// @return amountOut The amount of the received token + function exactInputSingle(ExactInputSingleParams calldata params) external payable returns (uint256 amountOut); + + struct ExactInputParams { + bytes path; + address recipient; + uint256 deadline; + uint256 amountIn; + uint256 amountOutMinimum; + } + + /// @notice Swaps `amountIn` of one token for as much as possible of another along the specified path + /// @param params The parameters necessary for the multi-hop swap, encoded as `ExactInputParams` in calldata + /// @return amountOut The amount of the received token + function exactInput(ExactInputParams calldata params) external payable returns (uint256 amountOut); + + struct ExactOutputSingleParams { + address tokenIn; + address tokenOut; + uint24 fee; + address recipient; + uint256 deadline; + uint256 amountOut; + uint256 amountInMaximum; + uint160 sqrtPriceLimitX96; + } + + /// @notice Swaps as little as possible of one token for `amountOut` of another token + /// @param params The parameters necessary for the swap, encoded as `ExactOutputSingleParams` in calldata + /// @return amountIn The amount of the input token + function exactOutputSingle(ExactOutputSingleParams calldata params) external payable returns (uint256 amountIn); + + struct ExactOutputParams { + bytes path; + address recipient; + uint256 deadline; + uint256 amountOut; + uint256 amountInMaximum; + } + + /// @notice Swaps as little as possible of one token for `amountOut` of another along the specified path (reversed) + /// @param params The parameters necessary for the multi-hop swap, encoded as `ExactOutputParams` in calldata + /// @return amountIn The amount of the input token + function exactOutput(ExactOutputParams calldata params) external payable returns (uint256 amountIn); +} diff --git a/test/mocks/MockUniswapPool.sol b/test/mocks/MockUniswapPool.sol new file mode 100644 index 0000000..2ab41a9 --- /dev/null +++ b/test/mocks/MockUniswapPool.sol @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: AGPL-3.0 +pragma solidity ^0.8.11; + +import {IUniswapPool} from "../../src/interfaces/IUniswapPool.sol"; + +contract MockUniswapPool is IUniswapPool { + int56[2] cumulatives; + address public token0; + + function setCumulatives(int56[2] memory value) external { + cumulatives = value; + } + + function setToken0(address value) external { + token0 = value; + } + + function observe(uint32[] calldata secondsAgos) + external + view + returns (int56[] memory tickCumulatives, uint160[] memory secondsPerLiquidityCumulativeX128s) + { + secondsAgos; + secondsPerLiquidityCumulativeX128s; + + tickCumulatives = new int56[](2); + tickCumulatives[0] = cumulatives[0]; + tickCumulatives[1] = cumulatives[1]; + } + + // mandatory overrides + + function snapshotCumulativesInside(int24 tickLower, int24 tickUpper) + external + view + override + returns (int56 tickCumulativeInside, uint160 secondsPerLiquidityInsideX128, uint32 secondsInside) + {} + + function factory() external view override returns (address) {} + + function token1() external view override returns (address) {} + + function fee() external view override returns (uint24) {} + + function tickSpacing() external view override returns (int24) {} + + function maxLiquidityPerTick() external view override returns (uint128) {} +} From 5ea8c6f7bcff5e19dba51c3da1c70bc95074e3bf Mon Sep 17 00:00:00 2001 From: lookeey <71905281+lookeey@users.noreply.github.com> Date: Tue, 28 Nov 2023 18:50:52 -0300 Subject: [PATCH 07/64] review 1 --- src/OptionsToken.sol | 44 +++++++------------ src/exercise/DiscountExercise.sol | 8 ++-- src/interfaces/IERC20.sol | 20 +++++++++ src/interfaces/IExercise.sol | 1 + src/interfaces/IOptionsToken.sol | 12 +++++ test/OptionsToken.t.sol | 33 +++++++------- .../{TestERC20Mintable.sol => TestERC20.sol} | 2 +- 7 files changed, 69 insertions(+), 51 deletions(-) create mode 100644 src/interfaces/IERC20.sol create mode 100644 src/interfaces/IOptionsToken.sol rename test/mocks/{TestERC20Mintable.sol => TestERC20.sol} (80%) diff --git a/src/OptionsToken.sol b/src/OptionsToken.sol index 9ce21d7..3755f59 100644 --- a/src/OptionsToken.sol +++ b/src/OptionsToken.sol @@ -4,27 +4,23 @@ pragma solidity ^0.8.13; import {Owned} from "solmate/auth/Owned.sol"; import {ERC20} from "solmate/tokens/ERC20.sol"; +import {IOptionsToken} from "./interfaces/IOptionsToken.sol"; import {IOracle} from "./interfaces/IOracle.sol"; import {IERC20Mintable} from "./interfaces/IERC20Mintable.sol"; import {IExercise} from "./interfaces/IExercise.sol"; -struct Option { - address impl; - bool isActive; -} - /// @title Options Token /// @author zefram.eth /// @notice Options token representing the right to perform an advantageous action, /// such as purchasing the underlying token at a discount to the market price. -contract OptionsToken is ERC20, Owned, IERC20Mintable { +contract OptionsToken is IOptionsToken, ERC20, Owned, IERC20Mintable { /// ----------------------------------------------------------------------- /// Errors /// ----------------------------------------------------------------------- error OptionsToken__PastDeadline(); error OptionsToken__NotTokenAdmin(); - error OptionsToken__NotActive(); + error OptionsToken__NotOption(); /// ----------------------------------------------------------------------- /// Events @@ -45,7 +41,7 @@ contract OptionsToken is ERC20, Owned, IERC20Mintable { /// Storage variables /// ----------------------------------------------------------------------- - Option[] public options; + mapping (address => bool) public isOption; /// ----------------------------------------------------------------------- /// Constructor @@ -92,12 +88,12 @@ contract OptionsToken is ERC20, Owned, IERC20Mintable { /// @param amount The amount of options tokens to exercise /// @param recipient The recipient of the reward /// @param params Extra parameters to be used by the exercise function - function exercise(uint256 amount, address recipient, uint256 optionId, bytes calldata params) + function exercise(uint256 amount, address recipient, address option, bytes calldata params) external virtual returns (bytes memory) { - return _exercise(amount, recipient, optionId, params); + return _exercise(amount, recipient, option, params); } /// @notice Exercises options tokens, giving the reward to the recipient. @@ -108,13 +104,13 @@ contract OptionsToken is ERC20, Owned, IERC20Mintable { /// @param recipient The recipient of the reward /// @param params Extra parameters to be used by the exercise function /// @param deadline The deadline by which the transaction must be mined - function exercise(uint256 amount, address recipient, uint256 optionId, bytes calldata params, uint256 deadline) + function exercise(uint256 amount, address recipient, address option, bytes calldata params, uint256 deadline) external virtual returns (bytes memory) { if (block.timestamp > deadline) revert OptionsToken__PastDeadline(); - return _exercise(amount, recipient, optionId, params); + return _exercise(amount, recipient, option, params); } /// ----------------------------------------------------------------------- @@ -122,24 +118,17 @@ contract OptionsToken is ERC20, Owned, IERC20Mintable { /// ----------------------------------------------------------------------- /// @notice Adds a new Exercise contract to the available options. - /// @param impl Address of the Exercise contract, that implements BaseExercise. - /// @param isActive Whether oToken holders should be allowed to exercise using this option. - function addOption(address impl, bool isActive) external onlyOwner { - options.push(Option({impl: impl, isActive: isActive})); - } - - /// @notice Sets an option as active or not. Determines if holders can use it to exercise. - /// @param optionId The option's ID. - /// @param isActive Whether oToken holders should be allowed to exercise using this option. - function setOptionActive(uint256 optionId, bool isActive) external onlyOwner { - options[optionId].isActive = isActive; + /// @param _address Address of the Exercise contract, that implements BaseExercise. + /// @param _isOption Whether oToken holders should be allowed to exercise using this option. + function setOption(address _address, bool _isOption) external onlyOwner { + isOption[_address] = _isOption; } /// ----------------------------------------------------------------------- /// Internal functions /// ----------------------------------------------------------------------- - function _exercise(uint256 amount, address recipient, uint256 optionId, bytes calldata params) + function _exercise(uint256 amount, address recipient, address option, bytes calldata params) internal virtual returns (bytes memory data) @@ -147,11 +136,8 @@ contract OptionsToken is ERC20, Owned, IERC20Mintable { // skip if amount is zero if (amount == 0) return new bytes(0); - // get option - Option memory option = options[optionId]; - // skip if option is not active - if (!option.isActive) revert OptionsToken__NotActive(); + if (!isOption[option]) revert OptionsToken__NotOption(); // transfer options tokens from msg.sender to address(0) // we transfer instead of burn because TokenAdmin cares about totalSupply @@ -159,7 +145,7 @@ contract OptionsToken is ERC20, Owned, IERC20Mintable { transfer(address(0), amount); // give rewards to recipient - data = IExercise(option.impl).exercise(msg.sender, amount, recipient, params); + data = IExercise(option).exercise(msg.sender, amount, recipient, params); emit Exercise(msg.sender, recipient, amount, params); } diff --git a/src/exercise/DiscountExercise.sol b/src/exercise/DiscountExercise.sol index a70e08d..0fd8a9f 100644 --- a/src/exercise/DiscountExercise.sol +++ b/src/exercise/DiscountExercise.sol @@ -8,7 +8,6 @@ import {FixedPointMathLib} from "solmate/utils/FixedPointMathLib.sol"; import {BaseExercise} from "../exercise/BaseExercise.sol"; import {IOracle} from "../interfaces/IOracle.sol"; -import {IERC20Mintable} from "../interfaces/IERC20Mintable.sol"; import {OptionsToken} from "../OptionsToken.sol"; struct DiscountExerciseParams { @@ -43,7 +42,7 @@ contract DiscountExercise is BaseExercise, Owned { ERC20 public immutable paymentToken; /// @notice The underlying token purchased during redemption - IERC20Mintable public immutable underlyingToken; + ERC20 public immutable underlyingToken; /// Storage variables @@ -58,7 +57,7 @@ contract DiscountExercise is BaseExercise, Owned { OptionsToken oToken_, address owner_, ERC20 paymentToken_, - IERC20Mintable underlyingToken_, + ERC20 underlyingToken_, IOracle oracle_, address treasury_ ) BaseExercise(oToken_) Owned(owner_) { @@ -86,7 +85,6 @@ contract DiscountExercise is BaseExercise, Owned { onlyOToken returns (bytes memory data) { - if (msg.sender != address(oToken)) revert Exercise__NotOToken(); return _exercise(from, amount, recipient, params); } @@ -122,7 +120,7 @@ contract DiscountExercise is BaseExercise, Owned { paymentToken.safeTransferFrom(from, treasury, paymentAmount); // mint underlying tokens to recipient - underlyingToken.mint(recipient, amount); + underlyingToken.safeTransfer(recipient, amount); data = abi.encode( DiscountExerciseReturnData({ diff --git a/src/interfaces/IERC20.sol b/src/interfaces/IERC20.sol new file mode 100644 index 0000000..985aa77 --- /dev/null +++ b/src/interfaces/IERC20.sol @@ -0,0 +1,20 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.8.20; + +interface IERC20 { + event Transfer(address indexed from, address indexed to, uint256 value); + event Approval(address indexed owner, address indexed spender, uint256 value); + + function totalSupply() external view returns (uint256); + + function balanceOf(address account) external view returns (uint256); + + function transfer(address to, uint256 value) external returns (bool); + + function allowance(address owner, address spender) external view returns (uint256); + + function approve(address spender, uint256 value) external returns (bool); + + function transferFrom(address from, address to, uint256 value) external returns (bool); +} diff --git a/src/interfaces/IExercise.sol b/src/interfaces/IExercise.sol index 3f12149..59b0385 100644 --- a/src/interfaces/IExercise.sol +++ b/src/interfaces/IExercise.sol @@ -3,6 +3,7 @@ pragma solidity ^0.8.13; interface IExercise { /// @notice Exercise the options token + /// @param from Address to exercise options tokens from. /// @param amount The amount of options tokens to exercise /// @param recipient The address that receives the underlying tokens /// @param params Additional parameters for the exercise diff --git a/src/interfaces/IOptionsToken.sol b/src/interfaces/IOptionsToken.sol new file mode 100644 index 0000000..2f65e84 --- /dev/null +++ b/src/interfaces/IOptionsToken.sol @@ -0,0 +1,12 @@ +// SPDX-License-Identifier: AGPL-3.0 +pragma solidity ^0.8.13; + +interface IOptionsToken { + function exercise(uint256 amount, address recipient, address option, bytes calldata params, uint256 deadline) + external + returns (bytes memory); + + function setOption(address _address, bool _isOption) external; + + function isOption(address) external returns (bool); +} diff --git a/test/OptionsToken.t.sol b/test/OptionsToken.t.sol index 8ba400c..7ca4fa8 100644 --- a/test/OptionsToken.t.sol +++ b/test/OptionsToken.t.sol @@ -4,12 +4,12 @@ pragma solidity ^0.8.13; import "forge-std/Test.sol"; import {FixedPointMathLib} from "solmate/utils/FixedPointMathLib.sol"; +import {ERC20} from "solmate/tokens/ERC20.sol"; import {OptionsToken} from "../src/OptionsToken.sol"; import {DiscountExerciseParams, DiscountExerciseReturnData, DiscountExercise} from "../src/exercise/DiscountExercise.sol"; -import {TestERC20Mintable} from "./mocks/TestERC20Mintable.sol"; +import {TestERC20} from "./mocks/TestERC20.sol"; import {BalancerOracle} from "../src/oracles/BalancerOracle.sol"; -import {IERC20Mintable} from "../src/interfaces/IERC20Mintable.sol"; import {MockBalancerTwapOracle} from "./mocks/MockBalancerTwapOracle.sol"; @@ -33,8 +33,8 @@ contract OptionsTokenTest is Test { DiscountExercise exerciser; BalancerOracle oracle; MockBalancerTwapOracle balancerTwapOracle; - TestERC20Mintable paymentToken; - IERC20Mintable underlyingToken; + TestERC20 paymentToken; + address underlyingToken; function setUp() public { // set up accounts @@ -46,15 +46,16 @@ contract OptionsTokenTest is Test { balancerTwapOracle = new MockBalancerTwapOracle(); oracle = new BalancerOracle(balancerTwapOracle, owner, ORACLE_MULTIPLIER, ORACLE_SECS, ORACLE_AGO, ORACLE_MIN_PRICE); - paymentToken = new TestERC20Mintable(); - underlyingToken = IERC20Mintable(address(new TestERC20Mintable())); + paymentToken = new TestERC20(); + underlyingToken = address(new TestERC20()); optionsToken = new OptionsToken("TIT Call Option Token", "oTIT", owner, tokenAdmin); - exerciser = new DiscountExercise(optionsToken, owner, paymentToken, underlyingToken, oracle, treasury); + exerciser = new DiscountExercise(optionsToken, owner, paymentToken, ERC20(underlyingToken), oracle, treasury); + TestERC20(underlyingToken).mint(address(exerciser), 1e20 ether); // add exerciser to the list of options vm.startPrank(owner); - optionsToken.addOption(address(exerciser), true); + optionsToken.setOption(address(exerciser), true); vm.stopPrank(); // set up contracts @@ -93,7 +94,7 @@ contract OptionsTokenTest is Test { // exercise options tokens DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount}); - bytes memory returnBytes = optionsToken.exercise(amount, recipient, 0, abi.encode(params)); + bytes memory returnBytes = optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); // verify options tokens were transferred assertEqDecimal(optionsToken.balanceOf(address(this)), 0, 18, "user still has options tokens"); @@ -127,7 +128,7 @@ contract OptionsTokenTest is Test { // exercise options tokens DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount}); - bytes memory returnBytes = optionsToken.exercise(amount, recipient, 0, abi.encode(params)); + bytes memory returnBytes = optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); // verify options tokens were transferred assertEqDecimal(optionsToken.balanceOf(address(this)), 0, 18, "user still has options tokens"); @@ -160,7 +161,7 @@ contract OptionsTokenTest is Test { // exercise options tokens which should fail DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount - 1}); vm.expectRevert(bytes4(keccak256("Exercise__SlippageTooHigh()"))); - optionsToken.exercise(amount, recipient, 0, abi.encode(params)); + optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); } function test_exerciseTwapOracleNotReady(uint256 amount, address recipient) public { @@ -184,7 +185,7 @@ contract OptionsTokenTest is Test { // exercise options tokens which should fail DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount}); vm.expectRevert(bytes4(keccak256("BalancerOracle__TWAPOracleNotReady()"))); - optionsToken.exercise(amount, recipient, 0, abi.encode(params)); + optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); } function test_exercisePastDeadline(uint256 amount, address recipient, uint256 deadline) public { @@ -203,7 +204,7 @@ contract OptionsTokenTest is Test { // exercise options tokens DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount}); vm.expectRevert(bytes4(keccak256("OptionsToken__PastDeadline()"))); - optionsToken.exercise(amount, recipient, 0, abi.encode(params), deadline); + optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params), deadline); } function test_exerciseNotOToken(uint256 amount, address recipient) public { @@ -232,7 +233,7 @@ contract OptionsTokenTest is Test { // set option inactive vm.prank(owner); - optionsToken.setOptionActive(0, false); + optionsToken.setOption(address(exerciser), false); // mint payment tokens uint256 expectedPaymentAmount = @@ -241,8 +242,8 @@ contract OptionsTokenTest is Test { // exercise options tokens which should fail DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount}); - vm.expectRevert(bytes4(keccak256("OptionsToken__NotActive()"))); - optionsToken.exercise(amount, recipient, 0, abi.encode(params)); + vm.expectRevert(bytes4(keccak256("OptionsToken__NotOption()"))); + optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); } } diff --git a/test/mocks/TestERC20Mintable.sol b/test/mocks/TestERC20.sol similarity index 80% rename from test/mocks/TestERC20Mintable.sol rename to test/mocks/TestERC20.sol index 901683f..b9a5f3b 100644 --- a/test/mocks/TestERC20Mintable.sol +++ b/test/mocks/TestERC20.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.11; import {ERC20} from "solmate/tokens/ERC20.sol"; -contract TestERC20Mintable is ERC20("", "", 18) { +contract TestERC20 is ERC20("", "", 18) { function mint(address to, uint256 amount) external { _mint(to, amount); } From 8d146d7b50b354e81ca33129352e04cfe44535c9 Mon Sep 17 00:00:00 2001 From: lookeey <71905281+lookeey@users.noreply.github.com> Date: Tue, 28 Nov 2023 19:53:47 -0300 Subject: [PATCH 08/64] add thena oracle --- .env.example | 4 +- remappings.txt | 2 + src/interfaces/IThenaPair.sol | 33 ++++++ src/oracles/ThenaOracle.sol | 179 +++++++++++++++++++++++++++++++ test/ThenaOracle.t.sol | 127 ++++++++++++++++++++++ test/interfaces/IThenaRouter.sol | 11 ++ 6 files changed, 355 insertions(+), 1 deletion(-) create mode 100644 remappings.txt create mode 100644 src/interfaces/IThenaPair.sol create mode 100644 src/oracles/ThenaOracle.sol create mode 100644 test/ThenaOracle.t.sol create mode 100644 test/interfaces/IThenaRouter.sol diff --git a/.env.example b/.env.example index 6bb663b..dc65e11 100644 --- a/.env.example +++ b/.env.example @@ -19,4 +19,6 @@ ORACLE_MIN_PRICE=XXX # 18 decimals OT_NAME="LIT Call Option Token" OT_SYMBOL="oLIT" -OT_PAYMENT_TOKEN=0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 # WETH \ No newline at end of file +OT_PAYMENT_TOKEN=0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 # WETH + +BSC_RPC_URL="https://binance.llamarpc.com" diff --git a/remappings.txt b/remappings.txt new file mode 100644 index 0000000..dc0fb24 --- /dev/null +++ b/remappings.txt @@ -0,0 +1,2 @@ +create3-factory/=lib/create3-factory/src/ + diff --git a/src/interfaces/IThenaPair.sol b/src/interfaces/IThenaPair.sol new file mode 100644 index 0000000..93bfe65 --- /dev/null +++ b/src/interfaces/IThenaPair.sol @@ -0,0 +1,33 @@ +pragma solidity >=0.5; + +interface IThenaPair { + function getReserves() + external + view + returns ( + uint112 _reserve0, + uint112 _reserve1, + uint32 _blockTimestampLast + ); + + function reserve0CumulativeLast() external view returns (uint256); + + function reserve1CumulativeLast() external view returns (uint256); + + function currentCumulativePrices() + external + view + returns ( + uint256 reserve0Cumulative, + uint256 reserve1Cumulative, + uint256 blockTimestamp + ); + + function stable() external view returns (bool); + + function observationLength() external view returns (uint256); + + function observations(uint256) external view returns (uint256 timestamp, uint256 reserve0Cumulative, uint256 reserve1Cumulative); + + function token0() external view returns (address); +} diff --git a/src/oracles/ThenaOracle.sol b/src/oracles/ThenaOracle.sol new file mode 100644 index 0000000..e263d17 --- /dev/null +++ b/src/oracles/ThenaOracle.sol @@ -0,0 +1,179 @@ +// SPDX-License-Identifier: AGPL-3.0 +pragma solidity ^0.8.13; + +import {Owned} from "solmate/auth/Owned.sol"; +import {FixedPointMathLib} from "solmate/utils/FixedPointMathLib.sol"; + +import {IOracle} from "../interfaces/IOracle.sol"; +import {IThenaPair} from "../interfaces/IThenaPair.sol"; + +/// @title Oracle using Thena TWAP oracle as data source +/// @author zefram.eth/lookee +/// @notice The oracle contract that provides the current price to purchase +/// the underlying token while exercising options. Uses Thena TWAP oracle +/// as data source, and then applies a multiplier & lower bound. +/// Furthermore, the payment token and the underlying token must use 18 decimals. +/// This is because the Thena oracle returns the TWAP value in 18 decimals +/// and the OptionsToken contract also expects 18 decimals. +contract ThenaOracle is IOracle, Owned { + /// ----------------------------------------------------------------------- + /// Library usage + /// ----------------------------------------------------------------------- + + using FixedPointMathLib for uint256; + + /// ----------------------------------------------------------------------- + /// Errors + /// ----------------------------------------------------------------------- + + error ThenaOracle__StablePairsUnsupported(); + error ThenaOracle__Overflow(); + + /// ----------------------------------------------------------------------- + /// Events + /// ----------------------------------------------------------------------- + + event SetParams(bool isToken0, uint16 multiplier, uint56 secs, uint128 minPrice); + + /// ----------------------------------------------------------------------- + /// Constants + /// ----------------------------------------------------------------------- + + /// @notice The denominator for converting the multiplier into a decimal number. + /// i.e. multiplier uses 4 decimals. + uint256 internal constant MULTIPLIER_DENOM = 10000; + + /// ----------------------------------------------------------------------- + /// Immutable parameters + /// ----------------------------------------------------------------------- + + /// @notice The Thena TWAP oracle contract (usually a pool with oracle support) + IThenaPair public immutable thenaPair; + + /// ----------------------------------------------------------------------- + /// Storage variables + /// ----------------------------------------------------------------------- + + /// @notice The multiplier applied to the TWAP value. Encodes the discount of + /// the options token. Uses 4 decimals. + uint16 public multiplier; + + /// @notice The size of the window to take the TWAP value over in seconds. + uint56 public secs; + + /// @notice The minimum value returned by getPrice(). Maintains a floor for the + /// price to mitigate potential attacks on the TWAP oracle. + uint128 public minPrice; + + /// @notice Whether the price should be returned in terms of token0. + /// If false, the price is returned in terms of token1. + bool public isToken0; + + /// ----------------------------------------------------------------------- + /// Constructor + /// ----------------------------------------------------------------------- + + constructor( + IThenaPair thenaPair_, + address token, + address owner_, + uint16 multiplier_, + uint56 secs_, + uint128 minPrice_ + ) Owned(owner_) { + if (thenaPair_.stable()) revert ThenaOracle__StablePairsUnsupported(); + thenaPair = thenaPair_; + isToken0 = thenaPair_.token0() == token; + multiplier = multiplier_; + secs = secs_; + minPrice = minPrice_; + + emit SetParams(isToken0, multiplier_, secs_, minPrice_); + } + + /// ----------------------------------------------------------------------- + /// IOracle + /// ----------------------------------------------------------------------- + + /// @inheritdoc IOracle + function getPrice() external view override returns (uint256 price) { + /// ----------------------------------------------------------------------- + /// Storage loads + /// ----------------------------------------------------------------------- + + uint256 multiplier_ = multiplier; + uint256 secs_ = secs; + uint256 minPrice_ = minPrice; + + /// ----------------------------------------------------------------------- + /// Computation + /// ----------------------------------------------------------------------- + + // query Thena oracle to get TWAP value + { + ( + uint256 reserve0CumulativeCurrent, + uint256 reserve1CumulativeCurrent, + uint256 blockTimestampCurrent + ) = thenaPair.currentCumulativePrices(); + uint256 observationLength = IThenaPair(thenaPair).observationLength(); + ( + uint256 blockTimestampLast, + uint256 reserve0CumulativeLast, + uint256 reserve1CumulativeLast + ) = thenaPair.observations(observationLength - 1); + uint32 T = uint32(blockTimestampCurrent - blockTimestampLast); + if (T < secs_) { + ( + blockTimestampLast, + reserve0CumulativeLast, + reserve1CumulativeLast + ) = thenaPair.observations(observationLength - 2); + T = uint32(blockTimestampCurrent - blockTimestampLast); + } + uint112 reserve0 = safe112((reserve0CumulativeCurrent - reserve0CumulativeLast) / T); + uint112 reserve1 = safe112((reserve1CumulativeCurrent - reserve1CumulativeLast) / T); + + if (!isToken0) { + price = uint256(reserve0).divWadDown(reserve1); + } else { + price = uint256(reserve1).divWadDown(reserve0); + } + } + + // apply multiplier to price + price = price.mulDivUp(multiplier_, MULTIPLIER_DENOM); + + // bound price above minPrice + price = price < minPrice_ ? minPrice_ : price; + } + + /// ----------------------------------------------------------------------- + /// Owner functions + /// ----------------------------------------------------------------------- + + /// @notice Updates the oracle parameters. Only callable by the owner. + /// @param isToken0_ Whether to give the price of the token0 or token1. + /// @param multiplier_ The multiplier applied to the TWAP value. Encodes the discount of + /// the options token. Uses 4 decimals. + /// @param secs_ The size of the window to take the TWAP value over in seconds. + /// @param minPrice_ The minimum value returned by getPrice(). Maintains a floor for the + /// price to mitigate potential attacks on the TWAP oracle. + function setParams(bool isToken0_, uint16 multiplier_, uint56 secs_, uint128 minPrice_) external onlyOwner { + isToken0 = isToken0_; + multiplier = multiplier_; + secs = secs_; + minPrice = minPrice_; + emit SetParams(isToken0_, multiplier_, secs_, minPrice_); + } + + /// ----------------------------------------------------------------------- + /// Util functions + /// ----------------------------------------------------------------------- + + function safe112(uint256 n) internal pure returns (uint112) { + if (n >= 2**112) revert ThenaOracle__Overflow(); + return uint112(n); + } + +} diff --git a/test/ThenaOracle.t.sol b/test/ThenaOracle.t.sol new file mode 100644 index 0000000..331f694 --- /dev/null +++ b/test/ThenaOracle.t.sol @@ -0,0 +1,127 @@ +// SPDX-License-Identifier: AGPL-3.0 +pragma solidity ^0.8.13; + +import "forge-std/Test.sol"; +import "forge-std/console.sol"; +import {ThenaOracle} from "../src/oracles/ThenaOracle.sol"; +import {IThenaPair} from "../src/interfaces/IThenaPair.sol"; +import {IThenaRouter} from "./interfaces/IThenaRouter.sol"; +import {FixedPointMathLib} from "solmate/utils/FixedPointMathLib.sol"; +import {IERC20} from "forge-std/interfaces/IERC20.sol"; + +struct Params { + IThenaPair pair; + address token; + address owner; + uint16 multiplier; + uint32 secs; + uint128 minPrice; +} + +contract UniswapOracleTest is Test { + using stdStorage for StdStorage; + using FixedPointMathLib for uint256; + + string BSC_RPC_URL = vm.envString("BSC_RPC_URL"); + uint32 FORK_BLOCK = 33672842; + + address THENA_POOL_ADDRESS = 0x63Db6ba9E512186C2FAaDaCEF342FB4A40dc577c; + address THENA_ADDRESS = 0xF4C8E32EaDEC4BFe97E0F595AdD0f4450a863a11; + address BNB_ADDRESS = 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c; + address THENA_ROUTER = 0xd4ae6eCA985340Dd434D38F470aCCce4DC78D109; + + uint256 bscFork; + + Params _default; + + function setUp() public { + _default = Params(IThenaPair(THENA_POOL_ADDRESS), THENA_ADDRESS, address(this), 10000, 30 minutes, 1000); + bscFork = vm.createSelectFork(BSC_RPC_URL, FORK_BLOCK); + } + + function test_priceWithinAcceptableRange() public { + + ThenaOracle oracle = new ThenaOracle( + _default.pair, + _default.token, + _default.owner, + _default.multiplier, + _default.secs, + _default.minPrice + ); + + uint oraclePrice = oracle.getPrice(); + + uint256 spotPrice = getSpotPrice(_default.pair, _default.token); + assertApproxEqRel(oraclePrice, spotPrice, 0.01 ether, "Price delta too big"); // 1% + } + + function test_priceManipulation() public { + ThenaOracle oracle = new ThenaOracle( + _default.pair, + _default.token, + _default.owner, + _default.multiplier, + _default.secs, + _default.minPrice + ); + + address manipulator1 = makeAddr("manipulator"); + deal(THENA_ADDRESS, manipulator1, 1000000 ether); + + // register initial oracle price + uint256 price_1 = oracle.getPrice(); + + // perform a large swap + vm.startPrank(manipulator1); + IERC20(THENA_ADDRESS).approve(THENA_ROUTER, 1000000 ether); + + (uint256 reserve0, uint256 reserve1,) = _default.pair.getReserves(); + (uint256[] memory amountOut) = IThenaRouter(THENA_ROUTER).swapExactTokensForTokensSimple( + (THENA_ADDRESS == _default.pair.token0() ? reserve0 : reserve1) / 10, + 0, + THENA_ADDRESS, + BNB_ADDRESS, + false, + manipulator1, + type(uint32).max + ); + vm.stopPrank(); + + // price should not have changed + assertEq(oracle.getPrice(), price_1); + + // wait 60 seconds + skip(1 minutes); + + // perform additional, smaller swap + address manipulator2 = makeAddr("manipulator"); + deal(BNB_ADDRESS, manipulator2, amountOut[0] / 1000); + vm.startPrank(manipulator2); + IERC20(BNB_ADDRESS).approve(THENA_ROUTER, 1000000 ether); + + IThenaRouter(THENA_ROUTER).swapExactTokensForTokensSimple( + amountOut[0] / 1000, + 0, + BNB_ADDRESS, + THENA_ADDRESS, + false, + manipulator2, + type(uint32).max + ); + vm.stopPrank(); + + assertApproxEqRel(price_1, oracle.getPrice(), 0.01 ether, "price variance too large"); + } + + function getSpotPrice(IThenaPair pair, address token) internal view returns (uint256 price) { + bool isToken0 = token == pair.token0(); + (uint112 reserve0, uint112 reserve1,) = pair.getReserves(); + if (isToken0) { + price = uint256(reserve1).divWadDown(reserve0); + } else { + price = uint256(reserve0).divWadDown(reserve1); + } + } + +} diff --git a/test/interfaces/IThenaRouter.sol b/test/interfaces/IThenaRouter.sol new file mode 100644 index 0000000..a9f9061 --- /dev/null +++ b/test/interfaces/IThenaRouter.sol @@ -0,0 +1,11 @@ +interface IThenaRouter { + function swapExactTokensForTokensSimple( + uint amountIn, + uint amountOutMin, + address tokenFrom, + address tokenTo, + bool stable, + address to, + uint deadline + ) external returns (uint[] memory amounts); +} From 51135d0979573616dce5bc71088500f419f22444 Mon Sep 17 00:00:00 2001 From: lookeey <71905281+lookeey@users.noreply.github.com> Date: Tue, 28 Nov 2023 20:17:30 -0300 Subject: [PATCH 09/64] review 1 --- src/oracles/ThenaOracle.sol | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/oracles/ThenaOracle.sol b/src/oracles/ThenaOracle.sol index e263d17..1ac6818 100644 --- a/src/oracles/ThenaOracle.sol +++ b/src/oracles/ThenaOracle.sol @@ -153,18 +153,18 @@ contract ThenaOracle is IOracle, Owned { /// ----------------------------------------------------------------------- /// @notice Updates the oracle parameters. Only callable by the owner. - /// @param isToken0_ Whether to give the price of the token0 or token1. + /// @param token Target token used for pricing. /// @param multiplier_ The multiplier applied to the TWAP value. Encodes the discount of /// the options token. Uses 4 decimals. /// @param secs_ The size of the window to take the TWAP value over in seconds. /// @param minPrice_ The minimum value returned by getPrice(). Maintains a floor for the /// price to mitigate potential attacks on the TWAP oracle. - function setParams(bool isToken0_, uint16 multiplier_, uint56 secs_, uint128 minPrice_) external onlyOwner { - isToken0 = isToken0_; + function setParams(address token, uint16 multiplier_, uint56 secs_, uint128 minPrice_) external onlyOwner { + isToken0 = thenaPair.token0() == token; multiplier = multiplier_; secs = secs_; minPrice = minPrice_; - emit SetParams(isToken0_, multiplier_, secs_, minPrice_); + emit SetParams(isToken0, multiplier_, secs_, minPrice_); } /// ----------------------------------------------------------------------- From 0fed3d3e129e86c52a71b1ac0448c6533681473c Mon Sep 17 00:00:00 2001 From: lookeey <71905281+lookeey@users.noreply.github.com> Date: Tue, 28 Nov 2023 21:02:34 -0300 Subject: [PATCH 10/64] review 1 --- src/oracles/UniswapV3Oracle.sol | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/src/oracles/UniswapV3Oracle.sol b/src/oracles/UniswapV3Oracle.sol index 94d51e1..4750e2d 100644 --- a/src/oracles/UniswapV3Oracle.sol +++ b/src/oracles/UniswapV3Oracle.sol @@ -35,7 +35,7 @@ contract UniswapV3Oracle is IOracle, Owned { /// Events /// ----------------------------------------------------------------------- - event SetParams(uint16 multiplier, uint56 secs, uint56 ago, uint128 minPrice); + event SetParams(bool isToken0, uint16 multiplier, uint56 secs, uint56 ago, uint128 minPrice); /// ----------------------------------------------------------------------- /// Constants @@ -95,7 +95,7 @@ contract UniswapV3Oracle is IOracle, Owned { ago = ago_; minPrice = minPrice_; - emit SetParams(multiplier_, secs_, ago_, minPrice_); + emit SetParams(isToken0, multiplier_, secs_, ago_, minPrice_); } /// ----------------------------------------------------------------------- @@ -134,8 +134,7 @@ contract UniswapV3Oracle is IOracle, Owned { (int56[] memory tickCumulatives,) = uniswapPool.observe(secondsAgo); int24 tick = int24((tickCumulatives[1] - tickCumulatives[0]) / int56(int32(_twapDuration))); - // token decimals is 18 - uint256 decimals = 1e18; + uint256 decimalPrecision = 1e18; // from https://optimistic.etherscan.io/address/0xB210CE856631EeEB767eFa666EC7C1C57738d438#code#F5#L49 uint160 sqrtRatioX96 = TickMath.getSqrtRatioAtTick(tick); @@ -144,13 +143,13 @@ contract UniswapV3Oracle is IOracle, Owned { if (sqrtRatioX96 <= type(uint128).max) { uint256 ratioX192 = uint256(sqrtRatioX96) * sqrtRatioX96; price = isToken0 - ? FullMath.mulDiv(ratioX192, decimals, 1 << 192) - : FullMath.mulDiv(1 << 192, decimals, ratioX192); + ? FullMath.mulDiv(ratioX192, decimalPrecision, 1 << 192) + : FullMath.mulDiv(1 << 192, decimalPrecision, ratioX192); } else { uint256 ratioX128 = FullMath.mulDiv(sqrtRatioX96, sqrtRatioX96, 1 << 64); price = isToken0 - ? FullMath.mulDiv(ratioX128, decimals, 1 << 128) - : FullMath.mulDiv(1 << 128, decimals, ratioX128); + ? FullMath.mulDiv(ratioX128, decimalPrecision, 1 << 128) + : FullMath.mulDiv(1 << 128, decimalPrecision, ratioX128); } } @@ -166,6 +165,7 @@ contract UniswapV3Oracle is IOracle, Owned { /// ----------------------------------------------------------------------- /// @notice Updates the oracle parameters. Only callable by the owner. + /// @param token Target token used for pricing. /// @param multiplier_ The multiplier applied to the TWAP value. Encodes the discount of /// the options token. Uses 4 decimals. /// @param secs_ The size of the window to take the TWAP value over in seconds. @@ -173,16 +173,15 @@ contract UniswapV3Oracle is IOracle, Owned { /// would be (block.timestamp - secs - ago, block.timestamp - ago]. /// @param minPrice_ The minimum value returned by getPrice(). Maintains a floor for the /// price to mitigate potential attacks on the TWAP oracle. - /// @param isToken0_ Whether the price should be returned in terms of token0. - function setParams(uint16 multiplier_, uint32 secs_, uint32 ago_, uint128 minPrice_, bool isToken0_) + function setParams(address token, uint16 multiplier_, uint32 secs_, uint32 ago_, uint128 minPrice_) external onlyOwner { + isToken0 = token == uniswapPool.token0(); multiplier = multiplier_; secs = secs_; ago = ago_; minPrice = minPrice_; - isToken0 = isToken0_; - emit SetParams(multiplier_, secs_, ago_, minPrice_); + emit SetParams(isToken0, multiplier_, secs_, ago_, minPrice_); } } From d84496cf8fbf90a5a37bd36b205c1e8c8cb6d33a Mon Sep 17 00:00:00 2001 From: lookeey <71905281+lookeey@users.noreply.github.com> Date: Wed, 29 Nov 2023 15:55:55 -0300 Subject: [PATCH 11/64] increase coverage --- src/interfaces/IThenaPair.sol | 2 ++ test/ThenaOracle.t.sol | 64 +++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) diff --git a/src/interfaces/IThenaPair.sol b/src/interfaces/IThenaPair.sol index 93bfe65..543a982 100644 --- a/src/interfaces/IThenaPair.sol +++ b/src/interfaces/IThenaPair.sol @@ -30,4 +30,6 @@ interface IThenaPair { function observations(uint256) external view returns (uint256 timestamp, uint256 reserve0Cumulative, uint256 reserve1Cumulative); function token0() external view returns (address); + + function token1() external view returns (address); } diff --git a/test/ThenaOracle.t.sol b/test/ThenaOracle.t.sol index 331f694..7c7733b 100644 --- a/test/ThenaOracle.t.sol +++ b/test/ThenaOracle.t.sol @@ -30,6 +30,8 @@ contract UniswapOracleTest is Test { address BNB_ADDRESS = 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c; address THENA_ROUTER = 0xd4ae6eCA985340Dd434D38F470aCCce4DC78D109; + uint MULTIPLIER_DENOM = 10000; + uint256 bscFork; Params _default; @@ -56,6 +58,64 @@ contract UniswapOracleTest is Test { assertApproxEqRel(oraclePrice, spotPrice, 0.01 ether, "Price delta too big"); // 1% } + function test_priceToken1() public { + + ThenaOracle oracleToken0 = new ThenaOracle( + _default.pair, + IThenaPair(_default.pair).token0(), + _default.owner, + _default.multiplier, + _default.secs, + _default.minPrice + ); + + ThenaOracle oracleToken1 = new ThenaOracle( + _default.pair, + IThenaPair(_default.pair).token1(), + _default.owner, + _default.multiplier, + _default.secs, + _default.minPrice + ); + + uint priceToken0 = oracleToken0.getPrice(); + uint priceToken1 = oracleToken1.getPrice(); + + assertEq(priceToken1, uint256(1e18).divWadDown(priceToken0), "incorrect price"); // 1% + } + + function test_priceMultiplier(uint multiplier) public { + multiplier = bound(multiplier, 0, 10000); + + ThenaOracle oracle0 = new ThenaOracle( + _default.pair, + _default.token, + _default.owner, + _default.multiplier, + _default.secs, + _default.minPrice + ); + + ThenaOracle oracle1 = new ThenaOracle( + _default.pair, + _default.token, + _default.owner, + uint16(multiplier), + _default.secs, + _default.minPrice + ); + + uint price0 = oracle0.getPrice(); + uint price1 = oracle1.getPrice(); + + uint expectedPrice = max( + price0.mulDivUp(multiplier, MULTIPLIER_DENOM), + _default.minPrice + ); + + assertEq(price1, expectedPrice, "incorrect price multiplier"); // 1% + } + function test_priceManipulation() public { ThenaOracle oracle = new ThenaOracle( _default.pair, @@ -124,4 +184,8 @@ contract UniswapOracleTest is Test { } } + function max(uint x, uint y) internal pure returns (uint z) { + z = x > y ? x : y; + } + } From 42abf165df003e064f5c8c0b86236c997716d0ee Mon Sep 17 00:00:00 2001 From: lookeey <71905281+lookeey@users.noreply.github.com> Date: Fri, 1 Dec 2023 14:40:56 -0300 Subject: [PATCH 12/64] fix test address --- test/ThenaOracle.t.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/ThenaOracle.t.sol b/test/ThenaOracle.t.sol index 7c7733b..f6ba49c 100644 --- a/test/ThenaOracle.t.sol +++ b/test/ThenaOracle.t.sol @@ -155,7 +155,7 @@ contract UniswapOracleTest is Test { skip(1 minutes); // perform additional, smaller swap - address manipulator2 = makeAddr("manipulator"); + address manipulator2 = makeAddr("manipulator2"); deal(BNB_ADDRESS, manipulator2, amountOut[0] / 1000); vm.startPrank(manipulator2); IERC20(BNB_ADDRESS).approve(THENA_ROUTER, 1000000 ether); From e8e2db9100c007cc294c08619897a37b6de43ce9 Mon Sep 17 00:00:00 2001 From: lookeey <71905281+lookeey@users.noreply.github.com> Date: Fri, 1 Dec 2023 14:47:31 -0300 Subject: [PATCH 13/64] remove console import, optimize variables --- src/oracles/UniswapV3Oracle.sol | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/oracles/UniswapV3Oracle.sol b/src/oracles/UniswapV3Oracle.sol index 4750e2d..696a6d4 100644 --- a/src/oracles/UniswapV3Oracle.sol +++ b/src/oracles/UniswapV3Oracle.sol @@ -5,7 +5,6 @@ import {Owned} from "solmate/auth/Owned.sol"; import {FixedPointMathLib} from "solmate/utils/FixedPointMathLib.sol"; import {IOracle} from "../interfaces/IOracle.sol"; -import "forge-std/console.sol"; import {IUniswapPool} from "../interfaces/IUniswapPool.sol"; import {TickMath} from "v3-core/libraries/TickMath.sol"; @@ -108,9 +107,6 @@ contract UniswapV3Oracle is IOracle, Owned { /// Storage loads /// ----------------------------------------------------------------------- - uint256 multiplier_ = multiplier; - uint32 secs_ = secs; - uint32 ago_ = ago; uint256 minPrice_ = minPrice; /// ----------------------------------------------------------------------- @@ -125,8 +121,8 @@ contract UniswapV3Oracle is IOracle, Owned { // query Uniswap oracle to get TWAP tick { - uint32 _twapDuration = secs_; - uint32 _twapAgo = ago_; + uint32 _twapDuration = secs; + uint32 _twapAgo = ago; uint32[] memory secondsAgo = new uint32[](2); secondsAgo[0] = _twapDuration + _twapAgo; secondsAgo[1] = _twapAgo; @@ -154,7 +150,7 @@ contract UniswapV3Oracle is IOracle, Owned { } // apply multiplier to price - price = price.mulDivUp(multiplier_, MULTIPLIER_DENOM); + price = price.mulDivUp(multiplier, MULTIPLIER_DENOM); // bound price above minPrice price = price < minPrice_ ? minPrice_ : price; From 296b52632ec0fc007faca70c6941c882fe512ee2 Mon Sep 17 00:00:00 2001 From: lookeey <71905281+lookeey@users.noreply.github.com> Date: Mon, 11 Dec 2023 23:26:09 -0300 Subject: [PATCH 14/64] feat/test: balancer oracle tests and target token --- src/interfaces/IBalancer2TokensPool.sol | 8 + src/interfaces/IBalancerTwapOracle.sol | 9 + src/interfaces/IBalancerVault.sol | 177 ++++++++++++++++ src/oracles/BalancerOracle.sol | 34 +++- test/BalancerOracle.t.sol | 256 ++++++++++++++++++++++++ test/OptionsToken.t.sol | 33 ++- test/mocks/MockBalancerTwapOracle.sol | 84 ++++++-- 7 files changed, 555 insertions(+), 46 deletions(-) create mode 100644 src/interfaces/IBalancer2TokensPool.sol create mode 100644 src/interfaces/IBalancerVault.sol create mode 100644 test/BalancerOracle.t.sol diff --git a/src/interfaces/IBalancer2TokensPool.sol b/src/interfaces/IBalancer2TokensPool.sol new file mode 100644 index 0000000..0f8b086 --- /dev/null +++ b/src/interfaces/IBalancer2TokensPool.sol @@ -0,0 +1,8 @@ +// SPDX-License-Identifier: AGPL-3.0 +pragma solidity ^0.8.13; + +import "../interfaces/IBalancerTwapOracle.sol"; + +interface IBalancer2TokensPool is IBalancerTwapOracle { + function getNormalizedWeights() external view returns (uint256[] memory); +} diff --git a/src/interfaces/IBalancerTwapOracle.sol b/src/interfaces/IBalancerTwapOracle.sol index dec77ba..5044d79 100644 --- a/src/interfaces/IBalancerTwapOracle.sol +++ b/src/interfaces/IBalancerTwapOracle.sol @@ -14,6 +14,8 @@ pragma solidity ^0.8.0; +import {IVault} from "../interfaces/IBalancerVault.sol"; + /** * @dev Interface for querying historical data from a Pool that can be used as a Price Oracle. * @@ -25,6 +27,13 @@ pragma solidity ^0.8.0; * is not older than the largest safe query window. */ interface IBalancerTwapOracle { + /** + * @notice Returns the Balancer Vault + */ + function getVault() external view returns (IVault); + + function getPoolId() external view returns (bytes32); + // The three values that can be queried: // // - PAIR_PRICE: the price of the tokens in the Pool, expressed as the price of the second token in units of the diff --git a/src/interfaces/IBalancerVault.sol b/src/interfaces/IBalancerVault.sol new file mode 100644 index 0000000..2628237 --- /dev/null +++ b/src/interfaces/IBalancerVault.sol @@ -0,0 +1,177 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + + +pragma experimental ABIEncoderV2; + +pragma solidity >=0.7.0 <0.9.0; + +/** + * @dev This is an empty interface used to represent either ERC20-conforming token contracts or ETH (using the zero + * address sentinel value). We're just relying on the fact that `interface` can be used to declare new address-like + * types. + * + * This concept is unrelated to a Pool's Asset Managers. + */ +interface IAsset { + // solhint-disable-previous-line no-empty-blocks +} + +/** + * @dev Minimal interface for interacting with Balancer's vault. + */ +interface IVault { + +/** + * @dev Called by users to join a Pool, which transfers tokens from `sender` into the Pool's balance. This will + * trigger custom Pool behavior, which will typically grant something in return to `recipient` - often tokenized + * Pool shares. + * + * If the caller is not `sender`, it must be an authorized relayer for them. + * + * The `assets` and `maxAmountsIn` arrays must have the same length, and each entry indicates the maximum amount + * to send for each asset. The amounts to send are decided by the Pool and not the Vault: it just enforces + * these maximums. + * + * If joining a Pool that holds WETH, it is possible to send ETH directly: the Vault will do the wrapping. To enable + * this mechanism, the IAsset sentinel value (the zero address) must be passed in the `assets` array instead of the + * WETH address. Note that it is not possible to combine ETH and WETH in the same join. Any excess ETH will be sent + * back to the caller (not the sender, which is important for relayers). + * + * `assets` must have the same length and order as the array returned by `getPoolTokens`. This prevents issues when + * interacting with Pools that register and deregister tokens frequently. If sending ETH however, the array must be + * sorted *before* replacing the WETH address with the ETH sentinel value (the zero address), which means the final + * `assets` array might not be sorted. Pools with no registered tokens cannot be joined. + * + * If `fromInternalBalance` is true, the caller's Internal Balance will be preferred: ERC20 transfers will only + * be made for the difference between the requested amount and Internal Balance (if any). Note that ETH cannot be + * withdrawn from Internal Balance: attempting to do so will trigger a revert. + * + * This causes the Vault to call the `IBasePool.onJoinPool` hook on the Pool's contract, where Pools implement + * their own custom logic. This typically requires additional information from the user (such as the expected number + * of Pool shares). This can be encoded in the `userData` argument, which is ignored by the Vault and passed + * directly to the Pool's contract, as is `recipient`. + * + * Emits a `PoolBalanceChanged` event. + */ + function joinPool( + bytes32 poolId, + address sender, + address recipient, + JoinPoolRequest memory request + ) external payable; + + struct JoinPoolRequest { + IAsset[] assets; + uint256[] maxAmountsIn; + bytes userData; + bool fromInternalBalance; + } + + enum PoolSpecialization { GENERAL, MINIMAL_SWAP_INFO, TWO_TOKEN } + + /** + * @dev Returns a Pool's contract address and specialization setting. + */ + function getPool(bytes32 poolId) external view returns (address, PoolSpecialization); + + /** + * @dev Returns a Pool's registered tokens, the total balance for each, and the latest block when *any* of + * the tokens' `balances` changed. + * + * The order of the `tokens` array is the same order that will be used in `joinPool`, `exitPool`, as well as in all + * Pool hooks (where applicable). Calls to `registerTokens` and `deregisterTokens` may change this order. + * + * If a Pool only registers tokens once, and these are sorted in ascending order, they will be stored in the same + * order as passed to `registerTokens`. + * + * Total balances include both tokens held by the Vault and those withdrawn by the Pool's Asset Managers. These are + * the amounts used by joins, exits and swaps. For a detailed breakdown of token balances, use `getPoolTokenInfo` + * instead. + */ + function getPoolTokens(bytes32 poolId) + external + view + returns ( + address[] memory tokens, + uint256[] memory, + uint256 + ); + + + /** + * @dev All tokens in a swap are either sent from the `sender` account to the Vault, or from the Vault to the + * `recipient` account. + * + * If the caller is not `sender`, it must be an authorized relayer for them. + * + * If `fromInternalBalance` is true, the `sender`'s Internal Balance will be preferred, performing an ERC20 + * transfer for the difference between the requested amount and the User's Internal Balance (if any). The `sender` + * must have allowed the Vault to use their tokens via `IERC20.approve()`. This matches the behavior of + * `joinPool`. + * + * If `toInternalBalance` is true, tokens will be deposited to `recipient`'s internal balance instead of + * transferred. This matches the behavior of `exitPool`. + * + * Note that ETH cannot be deposited to or withdrawn from Internal Balance: attempting to do so will trigger a + * revert. + */ + struct FundManagement { + address sender; + bool fromInternalBalance; + address payable recipient; + bool toInternalBalance; + } + + enum SwapKind { GIVEN_IN, GIVEN_OUT } + + /** + * @dev Performs a swap with a single Pool. + * + * If the swap is 'given in' (the number of tokens to send to the Pool is known), it returns the amount of tokens + * taken from the Pool, which must be greater than or equal to `limit`. + * + * If the swap is 'given out' (the number of tokens to take from the Pool is known), it returns the amount of tokens + * sent to the Pool, which must be less than or equal to `limit`. + * + * Internal Balance usage and the recipient are determined by the `funds` struct. + * + * Emits a `Swap` event. + */ + function swap( + SingleSwap memory singleSwap, + FundManagement memory funds, + uint256 limit, + uint256 deadline + ) external payable returns (uint256); + + /** + * @dev Data for a single swap executed by `swap`. `amount` is either `amountIn` or `amountOut` depending on + * the `kind` value. + * + * `assetIn` and `assetOut` are either token addresses, or the IAsset sentinel value for ETH (the zero address). + * Note that Pools never interact with ETH directly: it will be wrapped to or unwrapped from WETH by the Vault. + * + * The `userData` field is ignored by the Vault, but forwarded to the Pool in the `onSwap` hook, and may be + * used to extend swap behavior. + */ + struct SingleSwap { + bytes32 poolId; + SwapKind kind; + IAsset assetIn; + IAsset assetOut; + uint256 amount; + bytes userData; + } +} diff --git a/src/oracles/BalancerOracle.sol b/src/oracles/BalancerOracle.sol index d5f04b4..2f57251 100644 --- a/src/oracles/BalancerOracle.sol +++ b/src/oracles/BalancerOracle.sol @@ -5,6 +5,7 @@ import {Owned} from "solmate/auth/Owned.sol"; import {FixedPointMathLib} from "solmate/utils/FixedPointMathLib.sol"; import {IOracle} from "../interfaces/IOracle.sol"; +import {IVault} from "../interfaces/IBalancerVault.sol"; import {IBalancerTwapOracle} from "../interfaces/IBalancerTwapOracle.sol"; /// @title Oracle using Balancer TWAP oracle as data source @@ -12,10 +13,7 @@ import {IBalancerTwapOracle} from "../interfaces/IBalancerTwapOracle.sol"; /// @notice The oracle contract that provides the current price to purchase /// the underlying token while exercising options. Uses Balancer TWAP oracle /// as data source, and then applies a multiplier & lower bound. -/// @dev IMPORTANT: The Balancer pool must use the payment token of the options -/// token as the first token and the underlying token as the second token, due to -/// how the Balancer oracle represents the price. -/// Furthermore, the payment token and the underlying token must use 18 decimals. +/// @dev IMPORTANT: The payment token and the underlying token must use 18 decimals. /// This is because the Balancer oracle returns the TWAP value in 18 decimals /// and the OptionsToken contract also expects 18 decimals. contract BalancerOracle is IOracle, Owned { @@ -30,6 +28,7 @@ contract BalancerOracle is IOracle, Owned { /// ----------------------------------------------------------------------- error BalancerOracle__TWAPOracleNotReady(); + error BalancerOracle__BelowMinPrice(); /// ----------------------------------------------------------------------- /// Events @@ -71,12 +70,17 @@ contract BalancerOracle is IOracle, Owned { /// price to mitigate potential attacks on the TWAP oracle. uint128 public minPrice; + /// @notice Whether the price should be returned in terms of token0. + /// If false, the price is returned in terms of token1. + bool public isToken0; + /// ----------------------------------------------------------------------- /// Constructor /// ----------------------------------------------------------------------- constructor( IBalancerTwapOracle balancerTwapOracle_, + address token, address owner_, uint16 multiplier_, uint56 secs_, @@ -84,6 +88,11 @@ contract BalancerOracle is IOracle, Owned { uint128 minPrice_ ) Owned(owner_) { balancerTwapOracle = balancerTwapOracle_; + + IVault vault = balancerTwapOracle.getVault(); + (address[] memory poolTokens,,) = vault.getPoolTokens(balancerTwapOracle_.getPoolId()); + isToken0 = poolTokens[0] == token; + multiplier = multiplier_; secs = secs_; ago = ago_; @@ -132,11 +141,16 @@ contract BalancerOracle is IOracle, Owned { price = balancerTwapOracle.getTimeWeightedAverage(queries)[0]; } + if (isToken0) { + // convert price to token0 + price = uint256(1e18).divWadDown(price); + } + + // apply min price + if (price < minPrice_) revert BalancerOracle__BelowMinPrice(); + // apply multiplier to price price = price.mulDivUp(multiplier_, MULTIPLIER_DENOM); - - // bound price above minPrice - price = price < minPrice_ ? minPrice_ : price; } /// ----------------------------------------------------------------------- @@ -151,7 +165,11 @@ contract BalancerOracle is IOracle, Owned { /// would be (block.timestamp - secs - ago, block.timestamp - ago]. /// @param minPrice_ The minimum value returned by getPrice(). Maintains a floor for the /// price to mitigate potential attacks on the TWAP oracle. - function setParams(uint16 multiplier_, uint56 secs_, uint56 ago_, uint128 minPrice_) external onlyOwner { + function setParams(address token, uint16 multiplier_, uint56 secs_, uint56 ago_, uint128 minPrice_) external onlyOwner { + IVault vault = balancerTwapOracle.getVault(); + (address[] memory poolTokens,,) = vault.getPoolTokens(balancerTwapOracle.getPoolId()); + isToken0 = poolTokens[0] == token; + multiplier = multiplier_; secs = secs_; ago = ago_; diff --git a/test/BalancerOracle.t.sol b/test/BalancerOracle.t.sol new file mode 100644 index 0000000..cdf949f --- /dev/null +++ b/test/BalancerOracle.t.sol @@ -0,0 +1,256 @@ +// SPDX-License-Identifier: AGPL-3.0 +pragma solidity ^0.8.13; + +import "forge-std/Test.sol"; +import "forge-std/console.sol"; +import {BalancerOracle} from "../src/oracles/BalancerOracle.sol"; +import {IBalancerTwapOracle} from "../src/interfaces/IBalancerTwapOracle.sol"; +import {IVault, IAsset} from "../src/interfaces/IBalancerVault.sol"; +import {IBalancer2TokensPool} from "../src/interfaces/IBalancer2TokensPool.sol"; +import {FixedPointMathLib} from "solmate/utils/FixedPointMathLib.sol"; +import {IERC20} from "forge-std/interfaces/IERC20.sol"; + +struct Params { + IBalancerTwapOracle pair; + address token; + address owner; + uint16 multiplier; + uint32 secs; + uint32 ago; + uint128 minPrice; +} + +contract BalancerOracleTest is Test { + using stdStorage for StdStorage; + using FixedPointMathLib for uint256; + + string MAINNET_RPC_URL = vm.envString("MAINNET_RPC_URL"); + uint32 FORK_BLOCK = 18764758; + + address TOKEN_ADDRESS = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; + address PAYMENT_ADDRESS = 0xfd0205066521550D7d7AB19DA8F72bb004b4C341; + address POOL_ADDRESS = 0x9232a548DD9E81BaC65500b5e0d918F8Ba93675C; + + uint MULTIPLIER_DENOM = 10000; + + uint256 opFork; + + Params _default; + + function setUp() public { + _default = Params(IBalancerTwapOracle(POOL_ADDRESS), TOKEN_ADDRESS, address(this), 10000, 30 minutes, 0, 1000); + opFork = vm.createSelectFork(MAINNET_RPC_URL, FORK_BLOCK); + } + + function test_priceWithinAcceptableRange() public { + + BalancerOracle oracle = new BalancerOracle( + _default.pair, + _default.token, + _default.owner, + _default.multiplier, + _default.secs, + _default.ago, + _default.minPrice + ); + + uint oraclePrice = oracle.getPrice(); + + uint256 spotPrice = getSpotPrice(address(_default.pair), _default.token); + assertApproxEqRel(oraclePrice, spotPrice, 0.01 ether, "Price delta too big"); // 1% + } + + function test_priceToken1() public { + IVault vault = _default.pair.getVault(); + (address[] memory poolTokens,,) = vault.getPoolTokens(_default.pair.getPoolId()); + + BalancerOracle oracleToken0 = new BalancerOracle( + _default.pair, + poolTokens[0], + _default.owner, + _default.multiplier, + _default.secs, + _default.ago, + _default.minPrice + ); + + BalancerOracle oracleToken1 = new BalancerOracle( + _default.pair, + poolTokens[1], + _default.owner, + _default.multiplier, + _default.secs, + _default.ago, + _default.minPrice + ); + + uint priceToken0 = oracleToken0.getPrice(); + uint priceToken1 = oracleToken1.getPrice(); + + assertEq(priceToken1, uint256(1e18).divWadDown(priceToken0), "incorrect price"); // 1% + } + + function test_priceMultiplier(uint multiplier) public { + multiplier = bound(multiplier, 0, 10000); + + BalancerOracle oracle0 = new BalancerOracle( + _default.pair, + _default.token, + _default.owner, + _default.multiplier, + _default.secs, + _default.ago, + _default.minPrice + ); + + BalancerOracle oracle1 = new BalancerOracle( + _default.pair, + _default.token, + _default.owner, + uint16(multiplier), + _default.secs, + _default.ago, + _default.minPrice + ); + + uint price0 = oracle0.getPrice(); + uint price1 = oracle1.getPrice(); + + uint expectedPrice = price0.mulDivUp(multiplier, MULTIPLIER_DENOM); + + assertEq(price1, expectedPrice, "incorrect price multiplier"); + } + + function test_singleBlockManipulation() public { + IVault vault = _default.pair.getVault(); + BalancerOracle oracle = new BalancerOracle( + _default.pair, + _default.token, + _default.owner, + _default.multiplier, + _default.secs, + _default.ago, + _default.minPrice + ); + + address manipulator1 = makeAddr("manipulator"); + deal(TOKEN_ADDRESS, manipulator1, 1000000 ether); + + vm.startPrank(manipulator1); + IERC20(TOKEN_ADDRESS).approve(address(vault), 1000000 ether); + + (address[] memory tokens, uint256[] memory reserves,) = vault.getPoolTokens(_default.pair.getPoolId()); + + // swap 1 token to update oracle to latest block + swap(address(_default.pair), tokens[0], tokens[1], 1, manipulator1); + + // register initial oracle price + uint256 price_1 = oracle.getPrice(); + + swap(address(_default.pair), tokens[0], tokens[1], reserves[0] / 10, manipulator1); + + vm.stopPrank(); + + // check price variation + assertEq(oracle.getPrice(), price_1, "single block price variation"); + } + + function test_priceManipulation(uint256 skipTime) public { + skipTime = bound(skipTime, 1, _default.secs); + IVault vault = _default.pair.getVault(); + BalancerOracle oracle = new BalancerOracle( + _default.pair, + _default.token, + _default.owner, + _default.multiplier, + _default.secs, + _default.ago, + _default.minPrice + ); + + address manipulator1 = makeAddr("manipulator"); + deal(TOKEN_ADDRESS, manipulator1, 1000000 ether); + + vm.startPrank(manipulator1); + + // swap 1 token to update oracle to latest block + IERC20(TOKEN_ADDRESS).approve(address(vault), 1000000 ether); + swap(address(_default.pair), TOKEN_ADDRESS, PAYMENT_ADDRESS, 1, manipulator1); + + // register initial oracle price + uint256 price_1 = oracle.getPrice(); + + // perform a large swap (25% of reserves) + (address[] memory tokens, uint256[] memory reserves,) = vault.getPoolTokens(_default.pair.getPoolId()); + swap(address(_default.pair), tokens[0], tokens[1], reserves[0] / 4, manipulator1); + + vm.stopPrank(); + + // wait + skip(skipTime); + // update block + vm.roll(block.number + 1); + + // oracle price is only updated on swaps + assertEq(price_1, oracle.getPrice(), "price updated"); + + // perform additional, smaller swap + address manipulator2 = makeAddr("manipulator2"); + deal(PAYMENT_ADDRESS, manipulator2, 1); + vm.startPrank(manipulator2); + IERC20(PAYMENT_ADDRESS).approve(address(vault), 1); + swap(address(_default.pair), tokens[1], tokens[0], 1, manipulator2); + vm.stopPrank(); + + // weighted average of the first recorded oracle price and the current spot price + // weighted by the time since the last update + uint256 spotAverage = ((price_1 * (_default.secs - skipTime)) + (getSpotPrice(address(_default.pair), _default.token) * skipTime)) / _default.secs; + + assertApproxEqRel(spotAverage, oracle.getPrice(), 0.01 ether, "price variance too large"); + } + + function getSpotPrice(address pool, address token) internal view returns (uint256 price) { + IVault vault = IBalancerTwapOracle(pool).getVault(); + bytes32 poolId = IBalancerTwapOracle(pool).getPoolId(); + (address[] memory poolTokens,,) = vault.getPoolTokens(poolId); + + bool isToken0 = token == poolTokens[0]; + (,uint[] memory balances, ) = vault.getPoolTokens(poolId); + uint[] memory weights = IBalancer2TokensPool(pool).getNormalizedWeights(); + + price = isToken0 ? + (balances[1] * weights[0]).divWadDown(balances[0] * weights[1]) : + (balances[0] * weights[1]).divWadDown(balances[1] * weights[0]); + } + + function max(uint x, uint y) internal pure returns (uint z) { + z = x > y ? x : y; + } + + function swap(address pool, address tokenIn, address tokenOut, uint amountIn, address sender) internal returns (uint amountOut) { + bytes32 poolId = IBalancerTwapOracle(pool).getPoolId(); + IVault.SingleSwap memory singleSwap = IVault.SingleSwap( + poolId, + IVault.SwapKind.GIVEN_IN, + IAsset(tokenIn), + IAsset(tokenOut), + amountIn, + "" + ); + + IVault.FundManagement memory funds = IVault.FundManagement( + sender, + false, + payable(sender), + false + ); + + return IVault(IBalancer2TokensPool(pool).getVault()).swap( + singleSwap, + funds, + 0, + type(uint256).max + ); + } + +} diff --git a/test/OptionsToken.t.sol b/test/OptionsToken.t.sol index 7ca4fa8..81107ae 100644 --- a/test/OptionsToken.t.sol +++ b/test/OptionsToken.t.sol @@ -43,13 +43,18 @@ contract OptionsTokenTest is Test { treasury = makeAddr("treasury"); // deploy contracts - balancerTwapOracle = new MockBalancerTwapOracle(); - oracle = - new BalancerOracle(balancerTwapOracle, owner, ORACLE_MULTIPLIER, ORACLE_SECS, ORACLE_AGO, ORACLE_MIN_PRICE); paymentToken = new TestERC20(); underlyingToken = address(new TestERC20()); optionsToken = new OptionsToken("TIT Call Option Token", "oTIT", owner, tokenAdmin); + address[] memory tokens = new address[](2); + tokens[0] = underlyingToken; + tokens[1] = address(paymentToken); + + balancerTwapOracle = new MockBalancerTwapOracle(tokens); + oracle = + new BalancerOracle(balancerTwapOracle, underlyingToken, owner, ORACLE_MULTIPLIER, ORACLE_SECS, ORACLE_AGO, ORACLE_MIN_PRICE); + exerciser = new DiscountExercise(optionsToken, owner, paymentToken, ERC20(underlyingToken), oracle, treasury); TestERC20(underlyingToken).mint(address(exerciser), 1e20 ether); @@ -113,7 +118,7 @@ contract OptionsTokenTest is Test { } function test_exerciseMinPrice(uint256 amount, address recipient) public { - amount = bound(amount, 0, MAX_SUPPLY); + amount = bound(amount, 1, MAX_SUPPLY); // mint options tokens vm.prank(tokenAdmin); @@ -128,22 +133,8 @@ contract OptionsTokenTest is Test { // exercise options tokens DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount}); - bytes memory returnBytes = optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); - - // verify options tokens were transferred - assertEqDecimal(optionsToken.balanceOf(address(this)), 0, 18, "user still has options tokens"); - assertEqDecimal(optionsToken.balanceOf(address(0)), amount, 18, "address(0) didn't get options tokens"); - assertEqDecimal(optionsToken.totalSupply(), amount, 18, "total supply changed"); - - // verify payment tokens were transferred - assertEqDecimal(paymentToken.balanceOf(address(this)), 0, 18, "user still has payment tokens"); - assertEqDecimal( - paymentToken.balanceOf(treasury), expectedPaymentAmount, 18, "treasury didn't receive payment tokens" - ); - if (amount != 0) { - DiscountExerciseReturnData memory returnData = abi.decode(returnBytes, (DiscountExerciseReturnData)); - assertEqDecimal(returnData.paymentAmount, expectedPaymentAmount, 18, "exercise returned wrong value"); - } + vm.expectRevert(bytes4(keccak256("BalancerOracle__BelowMinPrice()"))); + optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); } function test_exerciseHighSlippage(uint256 amount, address recipient) public { @@ -180,7 +171,7 @@ contract OptionsTokenTest is Test { // such that the TWAP window becomes (block.timestamp - ORACLE_LARGEST_SAFETY_WINDOW - ORACLE_SECS, block.timestamp - ORACLE_LARGEST_SAFETY_WINDOW] // which is outside of the largest safety window vm.prank(owner); - oracle.setParams(ORACLE_MULTIPLIER, ORACLE_SECS, ORACLE_LARGEST_SAFETY_WINDOW, ORACLE_MIN_PRICE); + oracle.setParams(address(0), ORACLE_MULTIPLIER, ORACLE_SECS, ORACLE_LARGEST_SAFETY_WINDOW, ORACLE_MIN_PRICE); // exercise options tokens which should fail DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount}); diff --git a/test/mocks/MockBalancerTwapOracle.sol b/test/mocks/MockBalancerTwapOracle.sol index 0ace245..1f31322 100644 --- a/test/mocks/MockBalancerTwapOracle.sol +++ b/test/mocks/MockBalancerTwapOracle.sol @@ -2,39 +2,89 @@ pragma solidity ^0.8.11; import {IBalancerTwapOracle} from "../../src/interfaces/IBalancerTwapOracle.sol"; +import {IVault} from "../../src/interfaces/IBalancerTwapOracle.sol"; -contract MockBalancerTwapOracle is IBalancerTwapOracle { - uint256 twapValue; +contract MockVault is IVault { + address[] tokens = new address[](2); - function setTwapValue(uint256 value) external { - twapValue = value; + constructor (address[] memory _tokens) { + tokens = _tokens; } - function getTimeWeightedAverage(IBalancerTwapOracle.OracleAverageQuery[] memory queries) + function joinPool( + bytes32 poolId, + address sender, + address recipient, + JoinPoolRequest memory request + ) external payable override {} + + function getPool( + bytes32 poolId + ) external view override returns (address, PoolSpecialization) {} + + function getPoolTokens( + bytes32 poolId + ) external view override - returns (uint256[] memory results) + returns (address[] memory tokens, uint256[] memory, uint256) { - queries; - results = new uint256[](1); - results[0] = twapValue; + tokens = new address[](2); + tokens[0] = tokens[0]; + tokens[1] = tokens[1]; } - function getLatest(IBalancerTwapOracle.Variable variable) external view override returns (uint256) { - // not implemented + function swap( + SingleSwap memory singleSwap, + FundManagement memory funds, + uint256 limit, + uint256 deadline + ) external payable override returns (uint256) {} +} + +contract MockBalancerTwapOracle is IBalancerTwapOracle { + uint256 twapValue; + IVault mockVault; + + constructor (address[] memory tokens) { + mockVault = new MockVault(tokens); } - function getLargestSafeQueryWindow() external pure override returns (uint256) { - return 24 hours; // simulates an oracle that can look back at most 24 hours + function setTwapValue(uint256 value) external { + twapValue = value; + } + + function getTimeWeightedAverage( + IBalancerTwapOracle.OracleAverageQuery[] memory queries + ) external view override returns (uint256[] memory results) { + queries; + results = new uint256[](1); + results[0] = twapValue; } - function getPastAccumulators(IBalancerTwapOracle.OracleAccumulatorQuery[] memory queries) + function getLargestSafeQueryWindow() external - view + pure override - returns (int256[] memory results) + returns (uint256) { - // not implemented + return 24 hours; // simulates an oracle that can look back at most 24 hours } + + function getPastAccumulators( + IBalancerTwapOracle.OracleAccumulatorQuery[] memory queries + ) external view override returns (int256[] memory results) { + } + + function getLatest( + IBalancerTwapOracle.Variable variable + ) external view override returns (uint256) { + } + + function getVault() external view override returns (IVault) { + return mockVault; + } + + function getPoolId() external view override returns (bytes32) {} } From 598f06688df26d3efd797d530a38af0b46f721c6 Mon Sep 17 00:00:00 2001 From: lookeey <71905281+lookeey@users.noreply.github.com> Date: Mon, 11 Dec 2023 23:31:25 -0300 Subject: [PATCH 15/64] remove unnecessary function --- test/BalancerOracle.t.sol | 4 ---- 1 file changed, 4 deletions(-) diff --git a/test/BalancerOracle.t.sol b/test/BalancerOracle.t.sol index cdf949f..450c494 100644 --- a/test/BalancerOracle.t.sol +++ b/test/BalancerOracle.t.sol @@ -223,10 +223,6 @@ contract BalancerOracleTest is Test { (balances[0] * weights[1]).divWadDown(balances[1] * weights[0]); } - function max(uint x, uint y) internal pure returns (uint z) { - z = x > y ? x : y; - } - function swap(address pool, address tokenIn, address tokenOut, uint amountIn, address sender) internal returns (uint amountOut) { bytes32 poolId = IBalancerTwapOracle(pool).getPoolId(); IVault.SingleSwap memory singleSwap = IVault.SingleSwap( From ea56289cfca249f1a1c08a0820f32f212250f2da Mon Sep 17 00:00:00 2001 From: lookeey <71905281+lookeey@users.noreply.github.com> Date: Wed, 13 Dec 2023 12:46:17 -0300 Subject: [PATCH 16/64] change pool used for tests --- test/ThenaOracle.t.sol | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/test/ThenaOracle.t.sol b/test/ThenaOracle.t.sol index f6ba49c..c851b26 100644 --- a/test/ThenaOracle.t.sol +++ b/test/ThenaOracle.t.sol @@ -18,16 +18,16 @@ struct Params { uint128 minPrice; } -contract UniswapOracleTest is Test { +contract ThenaOracleTest is Test { using stdStorage for StdStorage; using FixedPointMathLib for uint256; string BSC_RPC_URL = vm.envString("BSC_RPC_URL"); uint32 FORK_BLOCK = 33672842; - address THENA_POOL_ADDRESS = 0x63Db6ba9E512186C2FAaDaCEF342FB4A40dc577c; - address THENA_ADDRESS = 0xF4C8E32EaDEC4BFe97E0F595AdD0f4450a863a11; - address BNB_ADDRESS = 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c; + address POOL_ADDRESS = 0x63Db6ba9E512186C2FAaDaCEF342FB4A40dc577c; + address TOKEN_ADDRESS = 0x4d2d32d8652058Bf98c772953E1Df5c5c85D9F45; + address PAYMENT_TOKEN_ADDRESS = 0x55d398326f99059fF775485246999027B3197955; address THENA_ROUTER = 0xd4ae6eCA985340Dd434D38F470aCCce4DC78D109; uint MULTIPLIER_DENOM = 10000; @@ -37,7 +37,7 @@ contract UniswapOracleTest is Test { Params _default; function setUp() public { - _default = Params(IThenaPair(THENA_POOL_ADDRESS), THENA_ADDRESS, address(this), 10000, 30 minutes, 1000); + _default = Params(IThenaPair(POOL_ADDRESS), TOKEN_ADDRESS, address(this), 10000, 30 minutes, 1000); bscFork = vm.createSelectFork(BSC_RPC_URL, FORK_BLOCK); } @@ -127,21 +127,21 @@ contract UniswapOracleTest is Test { ); address manipulator1 = makeAddr("manipulator"); - deal(THENA_ADDRESS, manipulator1, 1000000 ether); + deal(TOKEN_ADDRESS, manipulator1, 1000000 ether); // register initial oracle price uint256 price_1 = oracle.getPrice(); // perform a large swap vm.startPrank(manipulator1); - IERC20(THENA_ADDRESS).approve(THENA_ROUTER, 1000000 ether); + IERC20(TOKEN_ADDRESS).approve(THENA_ROUTER, 1000000 ether); (uint256 reserve0, uint256 reserve1,) = _default.pair.getReserves(); (uint256[] memory amountOut) = IThenaRouter(THENA_ROUTER).swapExactTokensForTokensSimple( - (THENA_ADDRESS == _default.pair.token0() ? reserve0 : reserve1) / 10, + (TOKEN_ADDRESS == _default.pair.token0() ? reserve0 : reserve1) / 10, 0, - THENA_ADDRESS, - BNB_ADDRESS, + TOKEN_ADDRESS, + PAYMENT_TOKEN_ADDRESS, false, manipulator1, type(uint32).max @@ -156,15 +156,15 @@ contract UniswapOracleTest is Test { // perform additional, smaller swap address manipulator2 = makeAddr("manipulator2"); - deal(BNB_ADDRESS, manipulator2, amountOut[0] / 1000); + deal(PAYMENT_TOKEN_ADDRESS, manipulator2, amountOut[0] / 1000); vm.startPrank(manipulator2); - IERC20(BNB_ADDRESS).approve(THENA_ROUTER, 1000000 ether); + IERC20(PAYMENT_TOKEN_ADDRESS).approve(THENA_ROUTER, 1000000 ether); IThenaRouter(THENA_ROUTER).swapExactTokensForTokensSimple( amountOut[0] / 1000, 0, - BNB_ADDRESS, - THENA_ADDRESS, + PAYMENT_TOKEN_ADDRESS, + TOKEN_ADDRESS, false, manipulator2, type(uint32).max From 34eaf89cbe93d46743d96bf707f6a29c78bd4d62 Mon Sep 17 00:00:00 2001 From: lookeey <71905281+lookeey@users.noreply.github.com> Date: Fri, 15 Dec 2023 14:41:55 -0300 Subject: [PATCH 17/64] improve/fix tests --- src/interfaces/IThenaPair.sol | 2 + test/ThenaOracle.t.sol | 69 +++++++++++++++++++++++------------ 2 files changed, 48 insertions(+), 23 deletions(-) diff --git a/src/interfaces/IThenaPair.sol b/src/interfaces/IThenaPair.sol index 543a982..974cb14 100644 --- a/src/interfaces/IThenaPair.sol +++ b/src/interfaces/IThenaPair.sol @@ -32,4 +32,6 @@ interface IThenaPair { function token0() external view returns (address); function token1() external view returns (address); + + function sync() external; } diff --git a/test/ThenaOracle.t.sol b/test/ThenaOracle.t.sol index c851b26..09b2faa 100644 --- a/test/ThenaOracle.t.sol +++ b/test/ThenaOracle.t.sol @@ -2,7 +2,6 @@ pragma solidity ^0.8.13; import "forge-std/Test.sol"; -import "forge-std/console.sol"; import {ThenaOracle} from "../src/oracles/ThenaOracle.sol"; import {IThenaPair} from "../src/interfaces/IThenaPair.sol"; import {IThenaRouter} from "./interfaces/IThenaRouter.sol"; @@ -25,7 +24,7 @@ contract ThenaOracleTest is Test { string BSC_RPC_URL = vm.envString("BSC_RPC_URL"); uint32 FORK_BLOCK = 33672842; - address POOL_ADDRESS = 0x63Db6ba9E512186C2FAaDaCEF342FB4A40dc577c; + address POOL_ADDRESS = 0x56EDFf25385B1DaE39d816d006d14CeCf96026aF; address TOKEN_ADDRESS = 0x4d2d32d8652058Bf98c772953E1Df5c5c85D9F45; address PAYMENT_TOKEN_ADDRESS = 0x55d398326f99059fF775485246999027B3197955; address THENA_ROUTER = 0xd4ae6eCA985340Dd434D38F470aCCce4DC78D109; @@ -55,7 +54,7 @@ contract ThenaOracleTest is Test { uint oraclePrice = oracle.getPrice(); uint256 spotPrice = getSpotPrice(_default.pair, _default.token); - assertApproxEqRel(oraclePrice, spotPrice, 0.01 ether, "Price delta too big"); // 1% + assertApproxEqRel(oraclePrice, spotPrice, 0.01 ether, "Price delta too large"); // 1% } function test_priceToken1() public { @@ -116,7 +115,7 @@ contract ThenaOracleTest is Test { assertEq(price1, expectedPrice, "incorrect price multiplier"); // 1% } - function test_priceManipulation() public { + function test_singleBlockManipulation() public { ThenaOracle oracle = new ThenaOracle( _default.pair, _default.token, @@ -126,52 +125,76 @@ contract ThenaOracleTest is Test { _default.minPrice ); - address manipulator1 = makeAddr("manipulator"); - deal(TOKEN_ADDRESS, manipulator1, 1000000 ether); + address manipulator = makeAddr("manipulator"); + deal(TOKEN_ADDRESS, manipulator, 1000000 ether); // register initial oracle price uint256 price_1 = oracle.getPrice(); // perform a large swap - vm.startPrank(manipulator1); + vm.startPrank(manipulator); IERC20(TOKEN_ADDRESS).approve(THENA_ROUTER, 1000000 ether); (uint256 reserve0, uint256 reserve1,) = _default.pair.getReserves(); - (uint256[] memory amountOut) = IThenaRouter(THENA_ROUTER).swapExactTokensForTokensSimple( + IThenaRouter(THENA_ROUTER).swapExactTokensForTokensSimple( (TOKEN_ADDRESS == _default.pair.token0() ? reserve0 : reserve1) / 10, 0, TOKEN_ADDRESS, PAYMENT_TOKEN_ADDRESS, false, - manipulator1, + manipulator, type(uint32).max ); vm.stopPrank(); // price should not have changed - assertEq(oracle.getPrice(), price_1); + assertEq(oracle.getPrice(), price_1, "single block price variation"); + } - // wait 60 seconds - skip(1 minutes); - - // perform additional, smaller swap - address manipulator2 = makeAddr("manipulator2"); - deal(PAYMENT_TOKEN_ADDRESS, manipulator2, amountOut[0] / 1000); - vm.startPrank(manipulator2); - IERC20(PAYMENT_TOKEN_ADDRESS).approve(THENA_ROUTER, 1000000 ether); + function test_priceManipulation(uint256 skipTime) public { + skipTime = bound(skipTime, 1, _default.secs); + ThenaOracle oracle = new ThenaOracle( + _default.pair, + _default.token, + _default.owner, + _default.multiplier, + _default.secs, + _default.minPrice + ); + + // clean twap for test + skip(1 hours); + _default.pair.sync(); + skip(1 hours); + _default.pair.sync(); + skip(1 hours); + // register initial oracle price + uint256 price_1 = oracle.getPrice(); + + // perform a large swap + address manipulator = makeAddr("manipulator"); + vm.startPrank(manipulator); + (uint256 reserve0, uint256 reserve1,) = _default.pair.getReserves(); + uint256 amountIn = (TOKEN_ADDRESS == _default.pair.token0() ? reserve0 : reserve1) / 4; + IERC20(TOKEN_ADDRESS).approve(THENA_ROUTER, amountIn); IThenaRouter(THENA_ROUTER).swapExactTokensForTokensSimple( - amountOut[0] / 1000, + amountIn, 0, - PAYMENT_TOKEN_ADDRESS, TOKEN_ADDRESS, + PAYMENT_TOKEN_ADDRESS, false, - manipulator2, + manipulator, type(uint32).max ); vm.stopPrank(); - - assertApproxEqRel(price_1, oracle.getPrice(), 0.01 ether, "price variance too large"); + + // wait + skip(skipTime); + + uint256 expectedMinPrice = (price_1 * (_default.secs - skipTime) + getSpotPrice(_default.pair, _default.token) * skipTime) / _default.secs; + + assertGeDecimal(oracle.getPrice(), expectedMinPrice, 18, "price variation too large"); } function getSpotPrice(IThenaPair pair, address token) internal view returns (uint256 price) { From c63565be2ffe13416deb81486e491ddfb0339ed6 Mon Sep 17 00:00:00 2001 From: lookeey <71905281+lookeey@users.noreply.github.com> Date: Fri, 15 Dec 2023 16:57:29 -0300 Subject: [PATCH 18/64] improve tests, revert on minPrice --- src/interfaces/IUniswapPool.sol | 10 --- src/oracles/UniswapV3Oracle.sol | 14 ++-- test/UniswapV3Oracle.t.sol | 130 ++++++++++++++++++++++++------ test/mocks/MockUniswapPool.sol | 137 +++++++++++++++++++++++++++++++- 4 files changed, 247 insertions(+), 44 deletions(-) delete mode 100644 src/interfaces/IUniswapPool.sol diff --git a/src/interfaces/IUniswapPool.sol b/src/interfaces/IUniswapPool.sol deleted file mode 100644 index 1e6a893..0000000 --- a/src/interfaces/IUniswapPool.sol +++ /dev/null @@ -1,10 +0,0 @@ -pragma solidity ^0.8.0; - -import {IUniswapV3PoolDerivedState} from "v3-core/interfaces/pool/IUniswapV3PoolDerivedState.sol"; -import {IUniswapV3PoolImmutables} from "v3-core/interfaces/pool/IUniswapV3PoolImmutables.sol"; - -/** - * @dev Interface for querying historical data from a UniswapV3 Pool that can be used as a Price Oracle. - * @notice From v3-core/interfaces - */ -interface IUniswapPool is IUniswapV3PoolDerivedState, IUniswapV3PoolImmutables {} diff --git a/src/oracles/UniswapV3Oracle.sol b/src/oracles/UniswapV3Oracle.sol index 696a6d4..9345da8 100644 --- a/src/oracles/UniswapV3Oracle.sol +++ b/src/oracles/UniswapV3Oracle.sol @@ -6,7 +6,7 @@ import {FixedPointMathLib} from "solmate/utils/FixedPointMathLib.sol"; import {IOracle} from "../interfaces/IOracle.sol"; -import {IUniswapPool} from "../interfaces/IUniswapPool.sol"; +import {IUniswapV3Pool} from "v3-core/interfaces/IUniswapV3Pool.sol"; import {TickMath} from "v3-core/libraries/TickMath.sol"; import {FullMath} from "v3-core/libraries/FullMath.sol"; @@ -28,7 +28,7 @@ contract UniswapV3Oracle is IOracle, Owned { /// Errors /// ----------------------------------------------------------------------- - error UniswapOracle__TWAPOracleNotReady(); + error UniswapOracle__BelowMinPrice(); /// ----------------------------------------------------------------------- /// Events @@ -49,7 +49,7 @@ contract UniswapV3Oracle is IOracle, Owned { /// ----------------------------------------------------------------------- /// @notice The UniswapV3 Pool contract (provides the oracle) - IUniswapPool public immutable uniswapPool; + IUniswapV3Pool public immutable uniswapPool; /// ----------------------------------------------------------------------- /// Storage variables @@ -79,7 +79,7 @@ contract UniswapV3Oracle is IOracle, Owned { /// ----------------------------------------------------------------------- constructor( - IUniswapPool uniswapPool_, + IUniswapV3Pool uniswapPool_, address token, address owner_, uint16 multiplier_, @@ -149,11 +149,11 @@ contract UniswapV3Oracle is IOracle, Owned { } } + // apply minimum price + if (price < minPrice_) revert UniswapOracle__BelowMinPrice(); + // apply multiplier to price price = price.mulDivUp(multiplier, MULTIPLIER_DENOM); - - // bound price above minPrice - price = price < minPrice_ ? minPrice_ : price; } /// ----------------------------------------------------------------------- diff --git a/test/UniswapV3Oracle.t.sol b/test/UniswapV3Oracle.t.sol index 2a9b8b7..9631845 100644 --- a/test/UniswapV3Oracle.t.sol +++ b/test/UniswapV3Oracle.t.sol @@ -2,19 +2,18 @@ pragma solidity ^0.8.13; import "forge-std/Test.sol"; -import "forge-std/console.sol"; import {UniswapV3Oracle} from "../src/oracles/UniswapV3Oracle.sol"; import {IUniswapV3Pool} from "v3-core/interfaces/IUniswapV3Pool.sol"; import {TickMath} from "v3-core/libraries/TickMath.sol"; import {FullMath} from "v3-core/libraries/FullMath.sol"; import {ISwapRouter} from "./interfaces/ISwapRouter.sol"; -import {IUniswapPool} from "../src/interfaces/IUniswapPool.sol"; +import {IUniswapV3Pool} from "v3-core/interfaces/IUniswapV3Pool.sol"; import {MockUniswapPool} from "./mocks/MockUniswapPool.sol"; import {FixedPointMathLib} from "solmate/utils/FixedPointMathLib.sol"; import {IERC20} from "forge-std/interfaces/IERC20.sol"; struct Params { - IUniswapPool pool; + IUniswapV3Pool pool; address token; address owner; uint16 multiplier; @@ -53,7 +52,7 @@ contract UniswapOracleTest is Test { mockV3Pool.setCumulatives(sampleCumulatives); mockV3Pool.setToken0(OP_ADDRESS); - _default = Params(IUniswapPool(WETH_OP_POOL_ADDRESS), OP_ADDRESS, address(this), 10000, 30 minutes, 0, 1000); + _default = Params(IUniswapV3Pool(WETH_OP_POOL_ADDRESS), OP_ADDRESS, address(this), 10000, 30 minutes, 0, 1000); swapRouter = ISwapRouter(SWAP_ROUTER_ADDRESS); } @@ -133,7 +132,7 @@ contract UniswapOracleTest is Test { assertApproxEqRel(oraclePrice, spotPrice, 0.01 ether, "Price delta too big"); // 1% } - function test_priceManipulation() public { + function test_revertMinPrice() public { opFork = vm.createSelectFork(OPTIMISM_RPC_URL, FORK_BLOCK); UniswapV3Oracle oracle = new UniswapV3Oracle( @@ -146,51 +145,132 @@ contract UniswapOracleTest is Test { _default.minPrice ); - address manipulator1 = makeAddr("manipulator"); - deal(OP_ADDRESS, manipulator1, 1000000 ether); + skip(_default.secs); + + uint256 price = oracle.getPrice(); + + uint256 amountIn = 100000 ether; + deal(OP_ADDRESS, address(this), amountIn); + ISwapRouter.ExactInputSingleParams memory paramsIn = + ISwapRouter.ExactInputSingleParams({ + tokenIn: OP_ADDRESS, + tokenOut: WETH_ADDRESS, + fee: POOL_FEE, + recipient: address(this), + deadline: block.timestamp, + amountIn: amountIn, + amountOutMinimum: 0, + sqrtPriceLimitX96: 0 + }); + IERC20(OP_ADDRESS).approve(address(swapRouter), amountIn); + swapRouter.exactInputSingle(paramsIn); + + // deploy a new oracle with a minPrice that is too high + UniswapV3Oracle oracleMinPrice = new UniswapV3Oracle( + _default.pool, + _default.token, + _default.owner, + _default.multiplier, + _default.secs, + _default.ago, + uint128(price) + ); + + skip(_default.secs); + + vm.expectRevert(UniswapV3Oracle.UniswapOracle__BelowMinPrice.selector); + oracleMinPrice.getPrice(); + } + + function test_singleBlockManipulation() public { + opFork = vm.createSelectFork(OPTIMISM_RPC_URL, FORK_BLOCK); + + UniswapV3Oracle oracle = new UniswapV3Oracle( + _default.pool, + _default.token, + _default.owner, + _default.multiplier, + _default.secs, + _default.ago, + _default.minPrice + ); + + address manipulator = makeAddr("manipulator"); + deal(OP_ADDRESS, manipulator, 1000000 ether); // register initial oracle price uint256 price_1 = oracle.getPrice(); // perform a large swap - vm.startPrank(manipulator1); + vm.startPrank(manipulator); + uint256 reserve = IERC20(OP_ADDRESS).balanceOf(WETH_OP_POOL_ADDRESS); + uint256 amountIn = reserve / 4; ISwapRouter.ExactInputSingleParams memory paramsIn = ISwapRouter.ExactInputSingleParams({ tokenIn: OP_ADDRESS, tokenOut: WETH_ADDRESS, fee: POOL_FEE, - recipient: manipulator1, + recipient: manipulator, deadline: block.timestamp, - amountIn: 1000000 ether, + amountIn: amountIn, amountOutMinimum: 0, sqrtPriceLimitX96: 0 }); - IERC20(OP_ADDRESS).approve(address(swapRouter), 1000000 ether); - uint amountOut = swapRouter.exactInputSingle(paramsIn); + IERC20(OP_ADDRESS).approve(address(swapRouter), amountIn); + swapRouter.exactInputSingle(paramsIn); vm.stopPrank(); - // wait 60 seconds - skip(1 minutes); - - // perform additional, smaller swap - address manipulator2 = makeAddr("manipulator"); - deal(OP_ADDRESS, manipulator2, amountOut); - vm.startPrank(manipulator2); - ISwapRouter.ExactInputSingleParams memory paramsOut = + // price should not have changed + assertEqDecimal(price_1, oracle.getPrice(), 18); + } + + function test_priceManipulation(uint256 skipTime) public { + skipTime = bound(skipTime, 1, _default.secs); + opFork = vm.createSelectFork(OPTIMISM_RPC_URL, FORK_BLOCK); + + UniswapV3Oracle oracle = new UniswapV3Oracle( + _default.pool, + _default.token, + _default.owner, + _default.multiplier, + _default.secs, + _default.ago, + _default.minPrice + ); + + address manipulator = makeAddr("manipulator"); + deal(OP_ADDRESS, manipulator, 1000000 ether); + + // register initial oracle price + uint256 price_1 = oracle.getPrice(); + + // perform a large swap + vm.startPrank(manipulator); + uint256 reserve = IERC20(OP_ADDRESS).balanceOf(WETH_OP_POOL_ADDRESS); + uint256 amountIn = reserve / 4; + ISwapRouter.ExactInputSingleParams memory paramsIn = ISwapRouter.ExactInputSingleParams({ tokenIn: OP_ADDRESS, tokenOut: WETH_ADDRESS, fee: POOL_FEE, - recipient: manipulator1, + recipient: manipulator, deadline: block.timestamp, - amountIn: amountOut / 100, // perform small swap + amountIn: amountIn, amountOutMinimum: 0, sqrtPriceLimitX96: 0 }); - IERC20(OP_ADDRESS).approve(address(swapRouter), amountOut / 100); - swapRouter.exactInputSingle(paramsOut); + IERC20(OP_ADDRESS).approve(address(swapRouter), amountIn); + swapRouter.exactInputSingle(paramsIn); + vm.stopPrank(); + + // wait + skip(skipTime); + + (uint160 sqrtRatioX96,,,,,,) = IUniswapV3Pool(WETH_OP_POOL_ADDRESS).slot0(); + uint256 spotPrice = computePriceFromX96(sqrtRatioX96); + uint256 expectedPrice = (price_1 * (_default.secs - skipTime) + spotPrice * skipTime) / _default.secs; - assertApproxEqRel(price_1, oracle.getPrice(), 0.01 ether, "price variance too large"); + assertApproxEqRel(oracle.getPrice(), expectedPrice, 0.001 ether, "price variance too large"); } function computePriceFromX96(uint160 sqrtRatioX96) internal view returns (uint256 price) { diff --git a/test/mocks/MockUniswapPool.sol b/test/mocks/MockUniswapPool.sol index 2ab41a9..2709b5a 100644 --- a/test/mocks/MockUniswapPool.sol +++ b/test/mocks/MockUniswapPool.sol @@ -1,9 +1,9 @@ // SPDX-License-Identifier: AGPL-3.0 pragma solidity ^0.8.11; -import {IUniswapPool} from "../../src/interfaces/IUniswapPool.sol"; +import {IUniswapV3Pool} from "v3-core/interfaces/IUniswapV3Pool.sol"; -contract MockUniswapPool is IUniswapPool { +contract MockUniswapPool is IUniswapV3Pool { int56[2] cumulatives; address public token0; @@ -46,4 +46,137 @@ contract MockUniswapPool is IUniswapPool { function tickSpacing() external view override returns (int24) {} function maxLiquidityPerTick() external view override returns (uint128) {} + + function slot0() + external + view + override + returns ( + uint160 sqrtPriceX96, + int24 tick, + uint16 observationIndex, + uint16 observationCardinality, + uint16 observationCardinalityNext, + uint8 feeProtocol, + bool unlocked + ) + {} + + function feeGrowthGlobal0X128() external view override returns (uint256) {} + + function feeGrowthGlobal1X128() external view override returns (uint256) {} + + function protocolFees() + external + view + override + returns (uint128, uint128) + {} + + function liquidity() external view override returns (uint128) {} + + function ticks( + int24 tick + ) + external + view + override + returns ( + uint128 liquidityGross, + int128 liquidityNet, + uint256 feeGrowthOutside0X128, + uint256 feeGrowthOutside1X128, + int56 tickCumulativeOutside, + uint160 secondsPerLiquidityOutsideX128, + uint32 secondsOutside, + bool initialized + ) + {} + + function tickBitmap( + int16 wordPosition + ) external view override returns (uint256) {} + + function positions( + bytes32 key + ) + external + view + override + returns ( + uint128 _liquidity, + uint256 feeGrowthInside0LastX128, + uint256 feeGrowthInside1LastX128, + uint128 tokensOwed0, + uint128 tokensOwed1 + ) + {} + + function observations( + uint256 index + ) + external + view + override + returns ( + uint32 blockTimestamp, + int56 tickCumulative, + uint160 secondsPerLiquidityCumulativeX128, + bool initialized + ) + {} + + function initialize(uint160 sqrtPriceX96) external override {} + + function mint( + address recipient, + int24 tickLower, + int24 tickUpper, + uint128 amount, + bytes calldata data + ) external override returns (uint256 amount0, uint256 amount1) {} + + function collect( + address recipient, + int24 tickLower, + int24 tickUpper, + uint128 amount0Requested, + uint128 amount1Requested + ) external override returns (uint128 amount0, uint128 amount1) {} + + function burn( + int24 tickLower, + int24 tickUpper, + uint128 amount + ) external override returns (uint256 amount0, uint256 amount1) {} + + function swap( + address recipient, + bool zeroForOne, + int256 amountSpecified, + uint160 sqrtPriceLimitX96, + bytes calldata data + ) external override returns (int256 amount0, int256 amount1) {} + + function flash( + address recipient, + uint256 amount0, + uint256 amount1, + bytes calldata data + ) external override {} + + function increaseObservationCardinalityNext( + uint16 observationCardinalityNext + ) external override {} + + function setFeeProtocol( + uint8 feeProtocol0, + uint8 feeProtocol1 + ) external override {} + + function collectProtocol( + address recipient, + uint128 amount0Requested, + uint128 amount1Requested + ) external override returns (uint128 amount0, uint128 amount1) {} } From 448e7abc8b6a39e644aa47457748149d8e28c390 Mon Sep 17 00:00:00 2001 From: lookeey <71905281+lookeey@users.noreply.github.com> Date: Fri, 15 Dec 2023 17:09:46 -0300 Subject: [PATCH 19/64] review 2 --- src/OptionsToken.sol | 20 ++------------ src/exercise/DiscountExercise.sol | 7 ++++- src/interfaces/IERC20.sol | 20 -------------- src/interfaces/IOptionsToken.sol | 2 +- test/OptionsToken.t.sol | 43 ++++++++++++++++++++++++------- 5 files changed, 43 insertions(+), 49 deletions(-) delete mode 100644 src/interfaces/IERC20.sol diff --git a/src/OptionsToken.sol b/src/OptionsToken.sol index 3755f59..8bab818 100644 --- a/src/OptionsToken.sol +++ b/src/OptionsToken.sol @@ -18,7 +18,6 @@ contract OptionsToken is IOptionsToken, ERC20, Owned, IERC20Mintable { /// Errors /// ----------------------------------------------------------------------- - error OptionsToken__PastDeadline(); error OptionsToken__NotTokenAdmin(); error OptionsToken__NotOption(); @@ -29,6 +28,7 @@ contract OptionsToken is IOptionsToken, ERC20, Owned, IERC20Mintable { event Exercise(address indexed sender, address indexed recipient, uint256 amount, bytes parameters); event SetOracle(IOracle indexed newOracle); event SetTreasury(address indexed newTreasury); + event SetOption(address indexed option, bool isOption); /// ----------------------------------------------------------------------- /// Immutable parameters @@ -96,23 +96,6 @@ contract OptionsToken is IOptionsToken, ERC20, Owned, IERC20Mintable { return _exercise(amount, recipient, option, params); } - /// @notice Exercises options tokens, giving the reward to the recipient. - /// @dev WARNING: If `amount` is zero, the bytes returned will be empty and therefore, not decodable. - /// @dev The options tokens are not burnt but sent to address(0) to avoid messing up the - /// inflation schedule. - /// @param amount The amount of options tokens to exercise - /// @param recipient The recipient of the reward - /// @param params Extra parameters to be used by the exercise function - /// @param deadline The deadline by which the transaction must be mined - function exercise(uint256 amount, address recipient, address option, bytes calldata params, uint256 deadline) - external - virtual - returns (bytes memory) - { - if (block.timestamp > deadline) revert OptionsToken__PastDeadline(); - return _exercise(amount, recipient, option, params); - } - /// ----------------------------------------------------------------------- /// Owner functions /// ----------------------------------------------------------------------- @@ -122,6 +105,7 @@ contract OptionsToken is IOptionsToken, ERC20, Owned, IERC20Mintable { /// @param _isOption Whether oToken holders should be allowed to exercise using this option. function setOption(address _address, bool _isOption) external onlyOwner { isOption[_address] = _isOption; + emit SetOption(_address, _isOption); } /// ----------------------------------------------------------------------- diff --git a/src/exercise/DiscountExercise.sol b/src/exercise/DiscountExercise.sol index 0fd8a9f..a17a67e 100644 --- a/src/exercise/DiscountExercise.sol +++ b/src/exercise/DiscountExercise.sol @@ -12,6 +12,7 @@ import {OptionsToken} from "../OptionsToken.sol"; struct DiscountExerciseParams { uint256 maxPaymentAmount; + uint256 deadline; } struct DiscountExerciseReturnData { @@ -30,6 +31,7 @@ contract DiscountExercise is BaseExercise, Owned { /// Errors error Exercise__SlippageTooHigh(); + error Exercise__PastDeadline(); /// Events event Exercised(address indexed sender, address indexed recipient, uint256 amount, uint256 paymentAmount); @@ -114,12 +116,15 @@ contract DiscountExercise is BaseExercise, Owned { // decode params DiscountExerciseParams memory _params = abi.decode(params, (DiscountExerciseParams)); + if (block.timestamp > _params.deadline) revert Exercise__PastDeadline(); + // transfer payment tokens from user to the treasury + // this price includes the discount uint256 paymentAmount = amount.mulWadUp(oracle.getPrice()); if (paymentAmount > _params.maxPaymentAmount) revert Exercise__SlippageTooHigh(); paymentToken.safeTransferFrom(from, treasury, paymentAmount); - // mint underlying tokens to recipient + // transfer underlying tokens to recipient underlyingToken.safeTransfer(recipient, amount); data = abi.encode( diff --git a/src/interfaces/IERC20.sol b/src/interfaces/IERC20.sol deleted file mode 100644 index 985aa77..0000000 --- a/src/interfaces/IERC20.sol +++ /dev/null @@ -1,20 +0,0 @@ -// SPDX-License-Identifier: MIT - -pragma solidity ^0.8.20; - -interface IERC20 { - event Transfer(address indexed from, address indexed to, uint256 value); - event Approval(address indexed owner, address indexed spender, uint256 value); - - function totalSupply() external view returns (uint256); - - function balanceOf(address account) external view returns (uint256); - - function transfer(address to, uint256 value) external returns (bool); - - function allowance(address owner, address spender) external view returns (uint256); - - function approve(address spender, uint256 value) external returns (bool); - - function transferFrom(address from, address to, uint256 value) external returns (bool); -} diff --git a/src/interfaces/IOptionsToken.sol b/src/interfaces/IOptionsToken.sol index 2f65e84..c85e501 100644 --- a/src/interfaces/IOptionsToken.sol +++ b/src/interfaces/IOptionsToken.sol @@ -2,7 +2,7 @@ pragma solidity ^0.8.13; interface IOptionsToken { - function exercise(uint256 amount, address recipient, address option, bytes calldata params, uint256 deadline) + function exercise(uint256 amount, address recipient, address option, bytes calldata params) external returns (bytes memory); diff --git a/test/OptionsToken.t.sol b/test/OptionsToken.t.sol index 7ca4fa8..10c24be 100644 --- a/test/OptionsToken.t.sol +++ b/test/OptionsToken.t.sol @@ -93,7 +93,10 @@ contract OptionsTokenTest is Test { paymentToken.mint(address(this), expectedPaymentAmount); // exercise options tokens - DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount}); + DiscountExerciseParams memory params = DiscountExerciseParams({ + maxPaymentAmount: expectedPaymentAmount, + deadline: type(uint256).max + }); bytes memory returnBytes = optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); // verify options tokens were transferred @@ -127,7 +130,10 @@ contract OptionsTokenTest is Test { paymentToken.mint(address(this), expectedPaymentAmount); // exercise options tokens - DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount}); + DiscountExerciseParams memory params = DiscountExerciseParams({ + maxPaymentAmount: expectedPaymentAmount, + deadline: type(uint256).max + }); bytes memory returnBytes = optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); // verify options tokens were transferred @@ -159,7 +165,10 @@ contract OptionsTokenTest is Test { paymentToken.mint(address(this), expectedPaymentAmount); // exercise options tokens which should fail - DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount - 1}); + DiscountExerciseParams memory params = DiscountExerciseParams({ + maxPaymentAmount: expectedPaymentAmount - 1, + deadline: type(uint256).max + }); vm.expectRevert(bytes4(keccak256("Exercise__SlippageTooHigh()"))); optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); } @@ -183,7 +192,10 @@ contract OptionsTokenTest is Test { oracle.setParams(ORACLE_MULTIPLIER, ORACLE_SECS, ORACLE_LARGEST_SAFETY_WINDOW, ORACLE_MIN_PRICE); // exercise options tokens which should fail - DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount}); + DiscountExerciseParams memory params = DiscountExerciseParams({ + maxPaymentAmount: expectedPaymentAmount, + deadline: type(uint256).max + }); vm.expectRevert(bytes4(keccak256("BalancerOracle__TWAPOracleNotReady()"))); optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); } @@ -191,6 +203,8 @@ contract OptionsTokenTest is Test { function test_exercisePastDeadline(uint256 amount, address recipient, uint256 deadline) public { amount = bound(amount, 0, MAX_SUPPLY); deadline = bound(deadline, 0, block.timestamp - 1); + console.log("deadline: %s", deadline); + console.log("block.timestamp: %s", block.timestamp); // mint options tokens vm.prank(tokenAdmin); @@ -202,9 +216,14 @@ contract OptionsTokenTest is Test { paymentToken.mint(address(this), expectedPaymentAmount); // exercise options tokens - DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount}); - vm.expectRevert(bytes4(keccak256("OptionsToken__PastDeadline()"))); - optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params), deadline); + DiscountExerciseParams memory params = DiscountExerciseParams({ + maxPaymentAmount: expectedPaymentAmount, + deadline: deadline + }); + if (amount != 0) { + vm.expectRevert(bytes4(keccak256("Exercise__PastDeadline()"))); + } + optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); } function test_exerciseNotOToken(uint256 amount, address recipient) public { @@ -219,7 +238,10 @@ contract OptionsTokenTest is Test { paymentToken.mint(address(this), expectedPaymentAmount); // exercise options tokens which should fail - DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount}); + DiscountExerciseParams memory params = DiscountExerciseParams({ + maxPaymentAmount: expectedPaymentAmount, + deadline: type(uint256).max + }); vm.expectRevert(bytes4(keccak256("Exercise__NotOToken()"))); exerciser.exercise(address(this), amount, recipient, abi.encode(params)); } @@ -241,7 +263,10 @@ contract OptionsTokenTest is Test { paymentToken.mint(address(this), expectedPaymentAmount); // exercise options tokens which should fail - DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount}); + DiscountExerciseParams memory params = DiscountExerciseParams({ + maxPaymentAmount: expectedPaymentAmount, + deadline: type(uint256).max + }); vm.expectRevert(bytes4(keccak256("OptionsToken__NotOption()"))); optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); } From 940c974ed81bc9379f6267a0a7f5aab3cc867115 Mon Sep 17 00:00:00 2001 From: lookeey <71905281+lookeey@users.noreply.github.com> Date: Fri, 15 Dec 2023 18:47:21 -0300 Subject: [PATCH 20/64] revert on min price, fix tests --- src/oracles/ThenaOracle.sol | 7 ++--- test/ThenaOracle.t.sol | 55 ++++++++++++++++++++++++++++++++++--- 2 files changed, 54 insertions(+), 8 deletions(-) diff --git a/src/oracles/ThenaOracle.sol b/src/oracles/ThenaOracle.sol index 1ac6818..6ae50ae 100644 --- a/src/oracles/ThenaOracle.sol +++ b/src/oracles/ThenaOracle.sol @@ -28,6 +28,7 @@ contract ThenaOracle is IOracle, Owned { error ThenaOracle__StablePairsUnsupported(); error ThenaOracle__Overflow(); + error ThenaOracle__BelowMinPrice(); /// ----------------------------------------------------------------------- /// Events @@ -103,7 +104,6 @@ contract ThenaOracle is IOracle, Owned { uint256 multiplier_ = multiplier; uint256 secs_ = secs; - uint256 minPrice_ = minPrice; /// ----------------------------------------------------------------------- /// Computation @@ -141,11 +141,10 @@ contract ThenaOracle is IOracle, Owned { } } + if (price < minPrice) revert ThenaOracle__BelowMinPrice(); + // apply multiplier to price price = price.mulDivUp(multiplier_, MULTIPLIER_DENOM); - - // bound price above minPrice - price = price < minPrice_ ? minPrice_ : price; } /// ----------------------------------------------------------------------- diff --git a/test/ThenaOracle.t.sol b/test/ThenaOracle.t.sol index 09b2faa..320ffb1 100644 --- a/test/ThenaOracle.t.sol +++ b/test/ThenaOracle.t.sol @@ -80,7 +80,7 @@ contract ThenaOracleTest is Test { uint priceToken0 = oracleToken0.getPrice(); uint priceToken1 = oracleToken1.getPrice(); - assertEq(priceToken1, uint256(1e18).divWadDown(priceToken0), "incorrect price"); // 1% + assertApproxEqAbs(priceToken1, uint256(1e18).divWadDown(priceToken0), 1, "incorrect price"); // 1% } function test_priceMultiplier(uint multiplier) public { @@ -107,12 +107,58 @@ contract ThenaOracleTest is Test { uint price0 = oracle0.getPrice(); uint price1 = oracle1.getPrice(); - uint expectedPrice = max( - price0.mulDivUp(multiplier, MULTIPLIER_DENOM), + uint expectedPrice = price0.mulDivDown(multiplier, MULTIPLIER_DENOM); + + assertApproxEqAbs(price1, expectedPrice, 1, "incorrect price multiplier"); // 1% + } + + function test_revertMinPrice() public { + ThenaOracle oracle = new ThenaOracle( + _default.pair, + _default.token, + _default.owner, + _default.multiplier, + _default.secs, _default.minPrice ); - assertEq(price1, expectedPrice, "incorrect price multiplier"); // 1% + // clean twap for test + skip(1 hours); + _default.pair.sync(); + skip(1 hours); + _default.pair.sync(); + skip(1 hours); + + // register initial oracle price + uint256 price = oracle.getPrice(); + + // drag price below min + uint256 amountIn = 10000000; + deal(TOKEN_ADDRESS, address(this), amountIn); + IERC20(TOKEN_ADDRESS).approve(THENA_ROUTER, amountIn); + IThenaRouter(THENA_ROUTER).swapExactTokensForTokensSimple( + amountIn, + 0, + TOKEN_ADDRESS, + PAYMENT_TOKEN_ADDRESS, + false, + address(this), + type(uint32).max + ); + + ThenaOracle oracleMinPrice = new ThenaOracle( + _default.pair, + _default.token, + _default.owner, + _default.multiplier, + _default.secs, + uint128(price) + ); + + skip(_default.secs); + + vm.expectRevert(ThenaOracle.ThenaOracle__BelowMinPrice.selector); + oracleMinPrice.getPrice(); } function test_singleBlockManipulation() public { @@ -174,6 +220,7 @@ contract ThenaOracleTest is Test { // perform a large swap address manipulator = makeAddr("manipulator"); + deal(TOKEN_ADDRESS, manipulator, 2**128); vm.startPrank(manipulator); (uint256 reserve0, uint256 reserve1,) = _default.pair.getReserves(); uint256 amountIn = (TOKEN_ADDRESS == _default.pair.token0() ? reserve0 : reserve1) / 4; From 3c47df81eb4545f60cc8d101ff47733a6752b002 Mon Sep 17 00:00:00 2001 From: lookeey <71905281+lookeey@users.noreply.github.com> Date: Fri, 15 Dec 2023 19:37:17 -0300 Subject: [PATCH 21/64] account full fees, add tests --- src/exercise/BaseExercise.sol | 4 +++- test/OptionsToken.t.sol | 28 +++++++++++++++++++++++----- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/src/exercise/BaseExercise.sol b/src/exercise/BaseExercise.sol index aeda18f..09c6214 100644 --- a/src/exercise/BaseExercise.sol +++ b/src/exercise/BaseExercise.sol @@ -61,10 +61,12 @@ abstract contract BaseExercise is IExercise, Owned { /// @notice Distributes fees to the fee recipients from a token holder who has approved function distributeFeesFrom(uint256 totalAmount, ERC20 token, address from) internal virtual{ - for (uint256 i = 0; i < feeRecipients.length; i++) { + for (uint256 i = 0; i < feeRecipients.length - 1; i++) { uint256 feeAmount = totalAmount * feeBPS[i] / FEE_DENOMINATOR; token.safeTransferFrom(from, feeRecipients[i], feeAmount); + totalAmount -= feeAmount; } + token.safeTransferFrom(from, feeRecipients[feeRecipients.length - 1], totalAmount); emit DistributeFees(feeRecipients, feeBPS, totalAmount); } diff --git a/test/OptionsToken.t.sol b/test/OptionsToken.t.sol index 10c24be..e6e2739 100644 --- a/test/OptionsToken.t.sol +++ b/test/OptionsToken.t.sol @@ -27,7 +27,8 @@ contract OptionsTokenTest is Test { address owner; address tokenAdmin; - address treasury; + address[] feeRecipients_; + uint256[] feeBPS_; OptionsToken optionsToken; DiscountExercise exerciser; @@ -40,7 +41,14 @@ contract OptionsTokenTest is Test { // set up accounts owner = makeAddr("owner"); tokenAdmin = makeAddr("tokenAdmin"); - treasury = makeAddr("treasury"); + + feeRecipients_ = new address[](2); + feeRecipients_[0] = makeAddr("feeRecipient"); + feeRecipients_[1] = makeAddr("feeRecipient2"); + + feeBPS_ = new uint256[](2); + feeBPS_[0] = 1000; // 10% + feeBPS_[1] = 9000; // 90% // deploy contracts balancerTwapOracle = new MockBalancerTwapOracle(); @@ -50,7 +58,7 @@ contract OptionsTokenTest is Test { underlyingToken = address(new TestERC20()); optionsToken = new OptionsToken("TIT Call Option Token", "oTIT", owner, tokenAdmin); - exerciser = new DiscountExercise(optionsToken, owner, paymentToken, ERC20(underlyingToken), oracle, treasury); + exerciser = new DiscountExercise(optionsToken, owner, paymentToken, ERC20(underlyingToken), oracle, feeRecipients_, feeBPS_); TestERC20(underlyingToken).mint(address(exerciser), 1e20 ether); // add exerciser to the list of options @@ -106,8 +114,13 @@ contract OptionsTokenTest is Test { // verify payment tokens were transferred assertEqDecimal(paymentToken.balanceOf(address(this)), 0, 18, "user still has payment tokens"); + uint256 paymentFee1 = expectedPaymentAmount.mulDivDown(feeBPS_[0], 10000); + uint256 paymentFee2 = expectedPaymentAmount - paymentFee1; + assertEqDecimal( + paymentToken.balanceOf(feeRecipients_[0]), paymentFee1, 18, "fee recipient 1 didn't receive payment tokens" + ); assertEqDecimal( - paymentToken.balanceOf(treasury), expectedPaymentAmount, 18, "treasury didn't receive payment tokens" + paymentToken.balanceOf(feeRecipients_[1]), paymentFee2, 18, "fee recipient 2 didn't receive payment tokens" ); if (amount != 0) { DiscountExerciseReturnData memory returnData = abi.decode(returnBytes, (DiscountExerciseReturnData)); @@ -143,8 +156,13 @@ contract OptionsTokenTest is Test { // verify payment tokens were transferred assertEqDecimal(paymentToken.balanceOf(address(this)), 0, 18, "user still has payment tokens"); + uint256 paymentFee1 = expectedPaymentAmount.mulDivDown(feeBPS_[0], 10000); + uint256 paymentFee2 = expectedPaymentAmount - paymentFee1; + assertEqDecimal( + paymentToken.balanceOf(feeRecipients_[0]), paymentFee1, 18, "fee recipient 1 didn't receive payment tokens" + ); assertEqDecimal( - paymentToken.balanceOf(treasury), expectedPaymentAmount, 18, "treasury didn't receive payment tokens" + paymentToken.balanceOf(feeRecipients_[1]), paymentFee2, 18, "fee recipient 2 didn't receive payment tokens" ); if (amount != 0) { DiscountExerciseReturnData memory returnData = abi.decode(returnBytes, (DiscountExerciseReturnData)); From 588852b81732ce980f0659248882b162f3dec520 Mon Sep 17 00:00:00 2001 From: lookeey <71905281+lookeey@users.noreply.github.com> Date: Thu, 28 Dec 2023 13:29:15 -0300 Subject: [PATCH 22/64] improve interfaces --- src/OptionsToken.sol | 50 +++++++++++++++++++++---------- src/exercise/BaseExercise.sol | 9 +++--- src/exercise/DiscountExercise.sol | 16 ++-------- src/interfaces/IExercise.sol | 9 +++++- src/interfaces/IOptionsToken.sol | 6 ++-- test/OptionsToken.t.sol | 34 +++++++++------------ 6 files changed, 68 insertions(+), 56 deletions(-) diff --git a/src/OptionsToken.sol b/src/OptionsToken.sol index 8bab818..f6485c5 100644 --- a/src/OptionsToken.sol +++ b/src/OptionsToken.sol @@ -19,16 +19,23 @@ contract OptionsToken is IOptionsToken, ERC20, Owned, IERC20Mintable { /// ----------------------------------------------------------------------- error OptionsToken__NotTokenAdmin(); - error OptionsToken__NotOption(); + error OptionsToken__NotExerciseContract(); /// ----------------------------------------------------------------------- /// Events /// ----------------------------------------------------------------------- - event Exercise(address indexed sender, address indexed recipient, uint256 amount, bytes parameters); + event Exercise( + address indexed sender, + address indexed recipient, + uint256 amount, + address data0, + uint256 data1, + uint256 data2 + ); event SetOracle(IOracle indexed newOracle); event SetTreasury(address indexed newTreasury); - event SetOption(address indexed option, bool isOption); + event SetExerciseContract(address indexed _address, bool _isExercise); /// ----------------------------------------------------------------------- /// Immutable parameters @@ -41,7 +48,7 @@ contract OptionsToken is IOptionsToken, ERC20, Owned, IERC20Mintable { /// Storage variables /// ----------------------------------------------------------------------- - mapping (address => bool) public isOption; + mapping (address => bool) public isExerciseContract; /// ----------------------------------------------------------------------- /// Constructor @@ -91,7 +98,7 @@ contract OptionsToken is IOptionsToken, ERC20, Owned, IERC20Mintable { function exercise(uint256 amount, address recipient, address option, bytes calldata params) external virtual - returns (bytes memory) + returns (uint256 paymentAmount, address, uint256, uint256) // misc data { return _exercise(amount, recipient, option, params); } @@ -102,10 +109,10 @@ contract OptionsToken is IOptionsToken, ERC20, Owned, IERC20Mintable { /// @notice Adds a new Exercise contract to the available options. /// @param _address Address of the Exercise contract, that implements BaseExercise. - /// @param _isOption Whether oToken holders should be allowed to exercise using this option. - function setOption(address _address, bool _isOption) external onlyOwner { - isOption[_address] = _isOption; - emit SetOption(_address, _isOption); + /// @param _isExercise Whether oToken holders should be allowed to exercise using this option. + function setExerciseContract(address _address, bool _isExercise) external onlyOwner { + isExerciseContract[_address] = _isExercise; + emit SetExerciseContract(_address, _isExercise); } /// ----------------------------------------------------------------------- @@ -115,13 +122,13 @@ contract OptionsToken is IOptionsToken, ERC20, Owned, IERC20Mintable { function _exercise(uint256 amount, address recipient, address option, bytes calldata params) internal virtual - returns (bytes memory data) + returns (uint256 paymentAmount, address data0, uint256 data1, uint256 data2) // misc data { // skip if amount is zero - if (amount == 0) return new bytes(0); + if (amount == 0) return (0, address(0), 0, 0); // skip if option is not active - if (!isOption[option]) revert OptionsToken__NotOption(); + if (!isExerciseContract[option]) revert OptionsToken__NotExerciseContract(); // transfer options tokens from msg.sender to address(0) // we transfer instead of burn because TokenAdmin cares about totalSupply @@ -129,8 +136,21 @@ contract OptionsToken is IOptionsToken, ERC20, Owned, IERC20Mintable { transfer(address(0), amount); // give rewards to recipient - data = IExercise(option).exercise(msg.sender, amount, recipient, params); - - emit Exercise(msg.sender, recipient, amount, params); + ( + paymentAmount, + data0, + data1, + data2 + ) = IExercise(option).exercise(msg.sender, amount, recipient, params); + + // emit event + emit Exercise( + msg.sender, + recipient, + amount, + data0, + data1, + data2 + ); } } diff --git a/src/exercise/BaseExercise.sol b/src/exercise/BaseExercise.sol index e101ddf..fa133ae 100644 --- a/src/exercise/BaseExercise.sol +++ b/src/exercise/BaseExercise.sol @@ -2,14 +2,14 @@ pragma solidity ^0.8.13; import {IExercise} from "../interfaces/IExercise.sol"; -import {OptionsToken} from "../OptionsToken.sol"; +import {IOptionsToken} from "../OptionsToken.sol"; abstract contract BaseExercise is IExercise { error Exercise__NotOToken(); - OptionsToken public immutable oToken; + IOptionsToken public immutable oToken; - constructor (OptionsToken _oToken) { + constructor (IOptionsToken _oToken) { oToken = _oToken; } @@ -24,8 +24,9 @@ abstract contract BaseExercise is IExercise { /// @param amount Amount of tokens being exercised /// @param recipient Wallet that will receive the rewards for exercising the oTokens /// @param params Extraneous parameters that the function may use - abi.encoded struct + /// @dev Additional returns are reserved for future use function exercise(address from, uint256 amount, address recipient, bytes memory params) external virtual - returns (bytes memory data); + returns (uint paymentAmount, address, uint256, uint256); } diff --git a/src/exercise/DiscountExercise.sol b/src/exercise/DiscountExercise.sol index a17a67e..c0aa95a 100644 --- a/src/exercise/DiscountExercise.sol +++ b/src/exercise/DiscountExercise.sol @@ -15,10 +15,6 @@ struct DiscountExerciseParams { uint256 deadline; } -struct DiscountExerciseReturnData { - uint256 paymentAmount; -} - /// @title Options Token Exercise Contract /// @author @bigbadbeard, @lookee, @eidolon /// @notice Contract that allows the holder of options tokens to exercise them, @@ -85,7 +81,7 @@ contract DiscountExercise is BaseExercise, Owned { virtual override onlyOToken - returns (bytes memory data) + returns (uint paymentAmount, address, uint256, uint256) { return _exercise(from, amount, recipient, params); } @@ -111,7 +107,7 @@ contract DiscountExercise is BaseExercise, Owned { function _exercise(address from, uint256 amount, address recipient, bytes memory params) internal virtual - returns (bytes memory data) + returns (uint256 paymentAmount, address, uint256, uint256) { // decode params DiscountExerciseParams memory _params = abi.decode(params, (DiscountExerciseParams)); @@ -120,19 +116,13 @@ contract DiscountExercise is BaseExercise, Owned { // transfer payment tokens from user to the treasury // this price includes the discount - uint256 paymentAmount = amount.mulWadUp(oracle.getPrice()); + paymentAmount = amount.mulWadUp(oracle.getPrice()); if (paymentAmount > _params.maxPaymentAmount) revert Exercise__SlippageTooHigh(); paymentToken.safeTransferFrom(from, treasury, paymentAmount); // transfer underlying tokens to recipient underlyingToken.safeTransfer(recipient, amount); - data = abi.encode( - DiscountExerciseReturnData({ - paymentAmount: paymentAmount - }) - ); - emit Exercised(from, recipient, amount, paymentAmount); } } diff --git a/src/interfaces/IExercise.sol b/src/interfaces/IExercise.sol index 59b0385..e23bc9e 100644 --- a/src/interfaces/IExercise.sol +++ b/src/interfaces/IExercise.sol @@ -7,5 +7,12 @@ interface IExercise { /// @param amount The amount of options tokens to exercise /// @param recipient The address that receives the underlying tokens /// @param params Additional parameters for the exercise - function exercise(address from, uint256 amount, address recipient, bytes memory params) external returns (bytes memory data); + /// @return paymentAmount The amount of underlying tokens to pay to the exercise contract + /// @dev Additional returns are reserved for future use + function exercise( + address from, + uint256 amount, + address recipient, + bytes memory params + ) external returns (uint256 paymentAmount, address, uint, uint); } diff --git a/src/interfaces/IOptionsToken.sol b/src/interfaces/IOptionsToken.sol index c85e501..5ac8e63 100644 --- a/src/interfaces/IOptionsToken.sol +++ b/src/interfaces/IOptionsToken.sol @@ -4,9 +4,9 @@ pragma solidity ^0.8.13; interface IOptionsToken { function exercise(uint256 amount, address recipient, address option, bytes calldata params) external - returns (bytes memory); + returns (uint256 paymentAmount, address, uint256, uint256); - function setOption(address _address, bool _isOption) external; + function setExerciseContract(address _address, bool _isExercise) external; - function isOption(address) external returns (bool); + function isExerciseContract(address) external returns (bool); } diff --git a/test/OptionsToken.t.sol b/test/OptionsToken.t.sol index 10c24be..666756f 100644 --- a/test/OptionsToken.t.sol +++ b/test/OptionsToken.t.sol @@ -7,7 +7,7 @@ import {FixedPointMathLib} from "solmate/utils/FixedPointMathLib.sol"; import {ERC20} from "solmate/tokens/ERC20.sol"; import {OptionsToken} from "../src/OptionsToken.sol"; -import {DiscountExerciseParams, DiscountExerciseReturnData, DiscountExercise} from "../src/exercise/DiscountExercise.sol"; +import {DiscountExerciseParams, DiscountExercise, BaseExercise} from "../src/exercise/DiscountExercise.sol"; import {TestERC20} from "./mocks/TestERC20.sol"; import {BalancerOracle} from "../src/oracles/BalancerOracle.sol"; import {MockBalancerTwapOracle} from "./mocks/MockBalancerTwapOracle.sol"; @@ -55,7 +55,7 @@ contract OptionsTokenTest is Test { // add exerciser to the list of options vm.startPrank(owner); - optionsToken.setOption(address(exerciser), true); + optionsToken.setExerciseContract(address(exerciser), true); vm.stopPrank(); // set up contracts @@ -68,7 +68,7 @@ contract OptionsTokenTest is Test { // try minting as non token admin vm.startPrank(hacker); - vm.expectRevert(bytes4(keccak256("OptionsToken__NotTokenAdmin()"))); + vm.expectRevert(OptionsToken.OptionsToken__NotTokenAdmin.selector); optionsToken.mint(address(this), amount); vm.stopPrank(); @@ -97,7 +97,7 @@ contract OptionsTokenTest is Test { maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max }); - bytes memory returnBytes = optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); + (uint256 paymentAmount,,,) = optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); // verify options tokens were transferred assertEqDecimal(optionsToken.balanceOf(address(this)), 0, 18, "user still has options tokens"); @@ -109,10 +109,7 @@ contract OptionsTokenTest is Test { assertEqDecimal( paymentToken.balanceOf(treasury), expectedPaymentAmount, 18, "treasury didn't receive payment tokens" ); - if (amount != 0) { - DiscountExerciseReturnData memory returnData = abi.decode(returnBytes, (DiscountExerciseReturnData)); - assertEqDecimal(returnData.paymentAmount, expectedPaymentAmount, 18, "exercise returned wrong value"); - } + assertEqDecimal(paymentAmount, expectedPaymentAmount, 18, "exercise returned wrong value"); } function test_exerciseMinPrice(uint256 amount, address recipient) public { @@ -134,7 +131,7 @@ contract OptionsTokenTest is Test { maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max }); - bytes memory returnBytes = optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); + (uint paymentAmount,,,) = optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); // verify options tokens were transferred assertEqDecimal(optionsToken.balanceOf(address(this)), 0, 18, "user still has options tokens"); @@ -146,10 +143,7 @@ contract OptionsTokenTest is Test { assertEqDecimal( paymentToken.balanceOf(treasury), expectedPaymentAmount, 18, "treasury didn't receive payment tokens" ); - if (amount != 0) { - DiscountExerciseReturnData memory returnData = abi.decode(returnBytes, (DiscountExerciseReturnData)); - assertEqDecimal(returnData.paymentAmount, expectedPaymentAmount, 18, "exercise returned wrong value"); - } + assertEqDecimal(paymentAmount, expectedPaymentAmount, 18, "exercise returned wrong value"); } function test_exerciseHighSlippage(uint256 amount, address recipient) public { @@ -169,7 +163,7 @@ contract OptionsTokenTest is Test { maxPaymentAmount: expectedPaymentAmount - 1, deadline: type(uint256).max }); - vm.expectRevert(bytes4(keccak256("Exercise__SlippageTooHigh()"))); + vm.expectRevert(DiscountExercise.Exercise__SlippageTooHigh.selector); optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); } @@ -196,7 +190,7 @@ contract OptionsTokenTest is Test { maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max }); - vm.expectRevert(bytes4(keccak256("BalancerOracle__TWAPOracleNotReady()"))); + vm.expectRevert(BalancerOracle.BalancerOracle__TWAPOracleNotReady.selector); optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); } @@ -221,7 +215,7 @@ contract OptionsTokenTest is Test { deadline: deadline }); if (amount != 0) { - vm.expectRevert(bytes4(keccak256("Exercise__PastDeadline()"))); + vm.expectRevert(DiscountExercise.Exercise__PastDeadline.selector); } optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); } @@ -242,11 +236,11 @@ contract OptionsTokenTest is Test { maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max }); - vm.expectRevert(bytes4(keccak256("Exercise__NotOToken()"))); + vm.expectRevert(BaseExercise.Exercise__NotOToken.selector); exerciser.exercise(address(this), amount, recipient, abi.encode(params)); } - function test_exerciseOptionNotActive(uint256 amount, address recipient) public { + function test_exerciseNotExerciseContract(uint256 amount, address recipient) public { amount = bound(amount, 1, MAX_SUPPLY); // mint options tokens @@ -255,7 +249,7 @@ contract OptionsTokenTest is Test { // set option inactive vm.prank(owner); - optionsToken.setOption(address(exerciser), false); + optionsToken.setExerciseContract(address(exerciser), false); // mint payment tokens uint256 expectedPaymentAmount = @@ -267,7 +261,7 @@ contract OptionsTokenTest is Test { maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max }); - vm.expectRevert(bytes4(keccak256("OptionsToken__NotOption()"))); + vm.expectRevert(OptionsToken.OptionsToken__NotExerciseContract.selector); optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); } From 03ce56694c6434116417a2b7d1fdc8a8f033a463 Mon Sep 17 00:00:00 2001 From: lookeey <71905281+lookeey@users.noreply.github.com> Date: Thu, 28 Dec 2023 15:03:30 -0300 Subject: [PATCH 23/64] move multiplier to exercise --- src/exercise/DiscountExercise.sol | 25 ++++++++++++- src/oracles/BalancerOracle.sol | 25 ++----------- test/BalancerOracle.t.sol | 38 +------------------- test/OptionsToken.t.sol | 59 +++++++++++++++++++++++++------ 4 files changed, 77 insertions(+), 70 deletions(-) diff --git a/src/exercise/DiscountExercise.sol b/src/exercise/DiscountExercise.sol index c0aa95a..e6a8f29 100644 --- a/src/exercise/DiscountExercise.sol +++ b/src/exercise/DiscountExercise.sol @@ -33,6 +33,13 @@ contract DiscountExercise is BaseExercise, Owned { event Exercised(address indexed sender, address indexed recipient, uint256 amount, uint256 paymentAmount); event SetOracle(IOracle indexed newOracle); event SetTreasury(address indexed newTreasury); + event SetMultiplier(uint256 indexed newMultiplier); + + /// Constants + + /// @notice The denominator for converting the multiplier into a decimal number. + /// i.e. multiplier uses 4 decimals. + uint256 internal constant MULTIPLIER_DENOM = 10000; /// Immutable parameters @@ -48,6 +55,10 @@ contract DiscountExercise is BaseExercise, Owned { /// the underlying token while exercising options (the strike price) IOracle public oracle; + /// @notice The multiplier applied to the TWAP value. Encodes the discount of + /// the options token. Uses 4 decimals. + uint256 public multiplier; + /// @notice The treasury address which receives tokens paid during redemption address public treasury; @@ -57,15 +68,18 @@ contract DiscountExercise is BaseExercise, Owned { ERC20 paymentToken_, ERC20 underlyingToken_, IOracle oracle_, + uint256 multiplier_, address treasury_ ) BaseExercise(oToken_) Owned(owner_) { paymentToken = paymentToken_; underlyingToken = underlyingToken_; oracle = oracle_; + multiplier = multiplier_; treasury = treasury_; emit SetOracle(oracle_); emit SetTreasury(treasury_); + emit SetMultiplier(multiplier_); } /// External functions @@ -95,6 +109,13 @@ contract DiscountExercise is BaseExercise, Owned { emit SetOracle(oracle_); } + /// @notice Sets the discount multiplier. + /// @param multiplier_ The new multiplier + function setMultiplier(uint256 multiplier_) external onlyOwner { + multiplier = multiplier_; + emit SetMultiplier(multiplier_); + } + /// @notice Sets the treasury address. Only callable by the owner. /// @param treasury_ The new treasury address function setTreasury(address treasury_) external onlyOwner { @@ -114,9 +135,11 @@ contract DiscountExercise is BaseExercise, Owned { if (block.timestamp > _params.deadline) revert Exercise__PastDeadline(); + // apply multiplier to price + uint256 price = oracle.getPrice().mulDivUp(multiplier, MULTIPLIER_DENOM); // transfer payment tokens from user to the treasury // this price includes the discount - paymentAmount = amount.mulWadUp(oracle.getPrice()); + paymentAmount = amount.mulWadUp(price); if (paymentAmount > _params.maxPaymentAmount) revert Exercise__SlippageTooHigh(); paymentToken.safeTransferFrom(from, treasury, paymentAmount); diff --git a/src/oracles/BalancerOracle.sol b/src/oracles/BalancerOracle.sol index 2f57251..28cb189 100644 --- a/src/oracles/BalancerOracle.sol +++ b/src/oracles/BalancerOracle.sol @@ -34,15 +34,7 @@ contract BalancerOracle is IOracle, Owned { /// Events /// ----------------------------------------------------------------------- - event SetParams(uint16 multiplier, uint56 secs, uint56 ago, uint128 minPrice); - - /// ----------------------------------------------------------------------- - /// Constants - /// ----------------------------------------------------------------------- - - /// @notice The denominator for converting the multiplier into a decimal number. - /// i.e. multiplier uses 4 decimals. - uint256 internal constant MULTIPLIER_DENOM = 10000; + event SetParams(uint56 secs, uint56 ago, uint128 minPrice); /// ----------------------------------------------------------------------- /// Immutable parameters @@ -55,10 +47,6 @@ contract BalancerOracle is IOracle, Owned { /// Storage variables /// ----------------------------------------------------------------------- - /// @notice The multiplier applied to the TWAP value. Encodes the discount of - /// the options token. Uses 4 decimals. - uint16 public multiplier; - /// @notice The size of the window to take the TWAP value over in seconds. uint56 public secs; @@ -82,7 +70,6 @@ contract BalancerOracle is IOracle, Owned { IBalancerTwapOracle balancerTwapOracle_, address token, address owner_, - uint16 multiplier_, uint56 secs_, uint56 ago_, uint128 minPrice_ @@ -93,12 +80,11 @@ contract BalancerOracle is IOracle, Owned { (address[] memory poolTokens,,) = vault.getPoolTokens(balancerTwapOracle_.getPoolId()); isToken0 = poolTokens[0] == token; - multiplier = multiplier_; secs = secs_; ago = ago_; minPrice = minPrice_; - emit SetParams(multiplier_, secs_, ago_, minPrice_); + emit SetParams(secs_, ago_, minPrice_); } /// ----------------------------------------------------------------------- @@ -111,7 +97,6 @@ contract BalancerOracle is IOracle, Owned { /// Storage loads /// ----------------------------------------------------------------------- - uint256 multiplier_ = multiplier; uint256 secs_ = secs; uint256 ago_ = ago; uint256 minPrice_ = minPrice; @@ -148,9 +133,6 @@ contract BalancerOracle is IOracle, Owned { // apply min price if (price < minPrice_) revert BalancerOracle__BelowMinPrice(); - - // apply multiplier to price - price = price.mulDivUp(multiplier_, MULTIPLIER_DENOM); } /// ----------------------------------------------------------------------- @@ -170,10 +152,9 @@ contract BalancerOracle is IOracle, Owned { (address[] memory poolTokens,,) = vault.getPoolTokens(balancerTwapOracle.getPoolId()); isToken0 = poolTokens[0] == token; - multiplier = multiplier_; secs = secs_; ago = ago_; minPrice = minPrice_; - emit SetParams(multiplier_, secs_, ago_, minPrice_); + emit SetParams(secs_, ago_, minPrice_); } } diff --git a/test/BalancerOracle.t.sol b/test/BalancerOracle.t.sol index 450c494..5b1f21b 100644 --- a/test/BalancerOracle.t.sol +++ b/test/BalancerOracle.t.sol @@ -14,7 +14,6 @@ struct Params { IBalancerTwapOracle pair; address token; address owner; - uint16 multiplier; uint32 secs; uint32 ago; uint128 minPrice; @@ -38,7 +37,7 @@ contract BalancerOracleTest is Test { Params _default; function setUp() public { - _default = Params(IBalancerTwapOracle(POOL_ADDRESS), TOKEN_ADDRESS, address(this), 10000, 30 minutes, 0, 1000); + _default = Params(IBalancerTwapOracle(POOL_ADDRESS), TOKEN_ADDRESS, address(this), 30 minutes, 0, 1000); opFork = vm.createSelectFork(MAINNET_RPC_URL, FORK_BLOCK); } @@ -48,7 +47,6 @@ contract BalancerOracleTest is Test { _default.pair, _default.token, _default.owner, - _default.multiplier, _default.secs, _default.ago, _default.minPrice @@ -68,7 +66,6 @@ contract BalancerOracleTest is Test { _default.pair, poolTokens[0], _default.owner, - _default.multiplier, _default.secs, _default.ago, _default.minPrice @@ -78,7 +75,6 @@ contract BalancerOracleTest is Test { _default.pair, poolTokens[1], _default.owner, - _default.multiplier, _default.secs, _default.ago, _default.minPrice @@ -90,36 +86,6 @@ contract BalancerOracleTest is Test { assertEq(priceToken1, uint256(1e18).divWadDown(priceToken0), "incorrect price"); // 1% } - function test_priceMultiplier(uint multiplier) public { - multiplier = bound(multiplier, 0, 10000); - - BalancerOracle oracle0 = new BalancerOracle( - _default.pair, - _default.token, - _default.owner, - _default.multiplier, - _default.secs, - _default.ago, - _default.minPrice - ); - - BalancerOracle oracle1 = new BalancerOracle( - _default.pair, - _default.token, - _default.owner, - uint16(multiplier), - _default.secs, - _default.ago, - _default.minPrice - ); - - uint price0 = oracle0.getPrice(); - uint price1 = oracle1.getPrice(); - - uint expectedPrice = price0.mulDivUp(multiplier, MULTIPLIER_DENOM); - - assertEq(price1, expectedPrice, "incorrect price multiplier"); - } function test_singleBlockManipulation() public { IVault vault = _default.pair.getVault(); @@ -127,7 +93,6 @@ contract BalancerOracleTest is Test { _default.pair, _default.token, _default.owner, - _default.multiplier, _default.secs, _default.ago, _default.minPrice @@ -162,7 +127,6 @@ contract BalancerOracleTest is Test { _default.pair, _default.token, _default.owner, - _default.multiplier, _default.secs, _default.ago, _default.minPrice diff --git a/test/OptionsToken.t.sol b/test/OptionsToken.t.sol index 69af8a4..9ff60c6 100644 --- a/test/OptionsToken.t.sol +++ b/test/OptionsToken.t.sol @@ -16,7 +16,7 @@ import {MockBalancerTwapOracle} from "./mocks/MockBalancerTwapOracle.sol"; contract OptionsTokenTest is Test { using FixedPointMathLib for uint256; - uint16 constant ORACLE_MULTIPLIER = 5000; // 0.5 + uint16 constant PRICE_MULTIPLIER = 5000; // 0.5 uint56 constant ORACLE_SECS = 30 minutes; uint56 constant ORACLE_AGO = 2 minutes; uint128 constant ORACLE_MIN_PRICE = 1e17; @@ -53,9 +53,9 @@ contract OptionsTokenTest is Test { balancerTwapOracle = new MockBalancerTwapOracle(tokens); oracle = - new BalancerOracle(balancerTwapOracle, underlyingToken, owner, ORACLE_MULTIPLIER, ORACLE_SECS, ORACLE_AGO, ORACLE_MIN_PRICE); + new BalancerOracle(balancerTwapOracle, underlyingToken, owner, ORACLE_SECS, ORACLE_AGO, ORACLE_MIN_PRICE); - exerciser = new DiscountExercise(optionsToken, owner, paymentToken, ERC20(underlyingToken), oracle, treasury); + exerciser = new DiscountExercise(optionsToken, owner, paymentToken, ERC20(underlyingToken), oracle, PRICE_MULTIPLIER, treasury); TestERC20(underlyingToken).mint(address(exerciser), 1e20 ether); // add exerciser to the list of options @@ -94,7 +94,7 @@ contract OptionsTokenTest is Test { // mint payment tokens uint256 expectedPaymentAmount = - amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(ORACLE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); + amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); paymentToken.mint(address(this), expectedPaymentAmount); // exercise options tokens @@ -137,6 +137,45 @@ contract OptionsTokenTest is Test { optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); } + function test_priceMultiplier(uint256 amount, uint multiplier) public { + amount = bound(amount, 3000, (1e20) / 2); + + vm.prank(owner); + exerciser.setMultiplier(10000); // 100% of price + + // mint options tokens + vm.prank(tokenAdmin); + optionsToken.mint(address(this), amount * 2); + + // mint payment tokens + uint256 expectedPaymentAmount = + amount.mulWadUp(ORACLE_INIT_TWAP_VALUE); + paymentToken.mint(address(this), expectedPaymentAmount); + + // exercise options tokens + DiscountExerciseParams memory params = DiscountExerciseParams({ + maxPaymentAmount: expectedPaymentAmount, + deadline: type(uint256).max + }); + (uint256 paidAmount,,,) = optionsToken.exercise(amount, address(this), address(exerciser), abi.encode(params)); + + // update multiplier + multiplier = bound(multiplier, 5000, 10000); + vm.prank(owner); + exerciser.setMultiplier(multiplier); + + // exercise options tokens + uint256 newPrice = oracle.getPrice().mulDivUp(multiplier, 10000); + uint256 newExpectedPaymentAmount = amount.mulWadUp(newPrice); + params.maxPaymentAmount = newExpectedPaymentAmount; + + paymentToken.mint(address(this), newExpectedPaymentAmount); + console.log(paidAmount, newExpectedPaymentAmount); + (uint256 newPaidAmount,,,) = optionsToken.exercise(amount, address(this), address(exerciser), abi.encode(params)); + + assertEq(newPaidAmount, paidAmount.mulDivUp(multiplier, 10000), "incorrect discount"); + } + function test_exerciseHighSlippage(uint256 amount, address recipient) public { amount = bound(amount, 1, MAX_SUPPLY); @@ -146,7 +185,7 @@ contract OptionsTokenTest is Test { // mint payment tokens uint256 expectedPaymentAmount = - amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(ORACLE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); + amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); paymentToken.mint(address(this), expectedPaymentAmount); // exercise options tokens which should fail @@ -167,14 +206,14 @@ contract OptionsTokenTest is Test { // mint payment tokens uint256 expectedPaymentAmount = - amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(ORACLE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); + amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); paymentToken.mint(address(this), expectedPaymentAmount); // update oracle params // such that the TWAP window becomes (block.timestamp - ORACLE_LARGEST_SAFETY_WINDOW - ORACLE_SECS, block.timestamp - ORACLE_LARGEST_SAFETY_WINDOW] // which is outside of the largest safety window vm.prank(owner); - oracle.setParams(address(0), ORACLE_MULTIPLIER, ORACLE_SECS, ORACLE_LARGEST_SAFETY_WINDOW, ORACLE_MIN_PRICE); + oracle.setParams(address(0), PRICE_MULTIPLIER, ORACLE_SECS, ORACLE_LARGEST_SAFETY_WINDOW, ORACLE_MIN_PRICE); // exercise options tokens which should fail DiscountExerciseParams memory params = DiscountExerciseParams({ @@ -197,7 +236,7 @@ contract OptionsTokenTest is Test { // mint payment tokens uint256 expectedPaymentAmount = - amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(ORACLE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); + amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); paymentToken.mint(address(this), expectedPaymentAmount); // exercise options tokens @@ -219,7 +258,7 @@ contract OptionsTokenTest is Test { optionsToken.mint(address(this), amount); uint256 expectedPaymentAmount = - amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(ORACLE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); + amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); paymentToken.mint(address(this), expectedPaymentAmount); // exercise options tokens which should fail @@ -244,7 +283,7 @@ contract OptionsTokenTest is Test { // mint payment tokens uint256 expectedPaymentAmount = - amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(ORACLE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); + amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); paymentToken.mint(address(this), expectedPaymentAmount); // exercise options tokens which should fail From c8a79da17ad44beca6de7b854720abeb167025f4 Mon Sep 17 00:00:00 2001 From: lookeey <71905281+lookeey@users.noreply.github.com> Date: Thu, 28 Dec 2023 15:07:32 -0300 Subject: [PATCH 24/64] forge install: openzeppelin-contracts-upgradeable v5.0.0 --- .gitmodules | 3 +++ lib/openzeppelin-contracts-upgradeable | 1 + 2 files changed, 4 insertions(+) create mode 160000 lib/openzeppelin-contracts-upgradeable diff --git a/.gitmodules b/.gitmodules index 5e0106b..504d939 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,3 +7,6 @@ [submodule "lib/create3-factory"] path = lib/create3-factory url = https://github.com/zeframlou/create3-factory +[submodule "lib/openzeppelin-contracts-upgradeable"] + path = lib/openzeppelin-contracts-upgradeable + url = https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable diff --git a/lib/openzeppelin-contracts-upgradeable b/lib/openzeppelin-contracts-upgradeable new file mode 160000 index 0000000..625fb3c --- /dev/null +++ b/lib/openzeppelin-contracts-upgradeable @@ -0,0 +1 @@ +Subproject commit 625fb3c2b2696f1747ba2e72d1e1113066e6c177 From e04518354900c36b53d797c4746ee33b67e5454b Mon Sep 17 00:00:00 2001 From: lookeey <71905281+lookeey@users.noreply.github.com> Date: Thu, 28 Dec 2023 15:19:01 -0300 Subject: [PATCH 25/64] forge install: openzeppelin-contracts v5.0.0 --- .gitmodules | 3 +++ lib/openzeppelin-contracts | 1 + 2 files changed, 4 insertions(+) create mode 160000 lib/openzeppelin-contracts diff --git a/.gitmodules b/.gitmodules index 504d939..74fac45 100644 --- a/.gitmodules +++ b/.gitmodules @@ -10,3 +10,6 @@ [submodule "lib/openzeppelin-contracts-upgradeable"] path = lib/openzeppelin-contracts-upgradeable url = https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable +[submodule "lib/openzeppelin-contracts"] + path = lib/openzeppelin-contracts + url = https://github.com/OpenZeppelin/openzeppelin-contracts diff --git a/lib/openzeppelin-contracts b/lib/openzeppelin-contracts new file mode 160000 index 0000000..932fddf --- /dev/null +++ b/lib/openzeppelin-contracts @@ -0,0 +1 @@ +Subproject commit 932fddf69a699a9a80fd2396fd1a2ab91cdda123 From 8b1fb7192e884b7ebc10022ece295d9f6664aa19 Mon Sep 17 00:00:00 2001 From: lookeey <71905281+lookeey@users.noreply.github.com> Date: Thu, 28 Dec 2023 15:58:56 -0300 Subject: [PATCH 26/64] make upgradeable --- remappings.txt | 2 + src/OptionsToken.sol | 85 +++++++++++++++++++++++++++----- src/interfaces/IOptionsToken.sol | 4 +- test/OptionsToken.t.sol | 12 ++++- 4 files changed, 88 insertions(+), 15 deletions(-) diff --git a/remappings.txt b/remappings.txt index dc0fb24..789db51 100644 --- a/remappings.txt +++ b/remappings.txt @@ -1,2 +1,4 @@ create3-factory/=lib/create3-factory/src/ +oz-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/ +oz/=lib/openzeppelin-contracts/contracts/ diff --git a/src/OptionsToken.sol b/src/OptionsToken.sol index f6485c5..c5ebe5f 100644 --- a/src/OptionsToken.sol +++ b/src/OptionsToken.sol @@ -1,25 +1,26 @@ // SPDX-License-Identifier: AGPL-3.0 pragma solidity ^0.8.13; -import {Owned} from "solmate/auth/Owned.sol"; -import {ERC20} from "solmate/tokens/ERC20.sol"; +import {OwnableUpgradeable} from "oz-upgradeable/access/OwnableUpgradeable.sol"; +import {ERC20Upgradeable} from "oz-upgradeable/token/ERC20/ERC20Upgradeable.sol"; +import {UUPSUpgradeable} from "oz-upgradeable/proxy/utils/UUPSUpgradeable.sol"; import {IOptionsToken} from "./interfaces/IOptionsToken.sol"; import {IOracle} from "./interfaces/IOracle.sol"; -import {IERC20Mintable} from "./interfaces/IERC20Mintable.sol"; import {IExercise} from "./interfaces/IExercise.sol"; /// @title Options Token /// @author zefram.eth /// @notice Options token representing the right to perform an advantageous action, /// such as purchasing the underlying token at a discount to the market price. -contract OptionsToken is IOptionsToken, ERC20, Owned, IERC20Mintable { +contract OptionsToken is IOptionsToken, ERC20Upgradeable, OwnableUpgradeable, UUPSUpgradeable { /// ----------------------------------------------------------------------- /// Errors /// ----------------------------------------------------------------------- error OptionsToken__NotTokenAdmin(); error OptionsToken__NotExerciseContract(); + error Upgradeable__Unauthorized(); /// ----------------------------------------------------------------------- /// Events @@ -38,29 +39,52 @@ contract OptionsToken is IOptionsToken, ERC20, Owned, IERC20Mintable { event SetExerciseContract(address indexed _address, bool _isExercise); /// ----------------------------------------------------------------------- - /// Immutable parameters + /// Constant parameters /// ----------------------------------------------------------------------- - /// @notice The contract that has the right to mint options tokens - address public immutable tokenAdmin; + uint256 public constant UPGRADE_TIMELOCK = 48 hours; + uint256 public constant FUTURE_NEXT_PROPOSAL_TIME = 365 days * 100; /// ----------------------------------------------------------------------- /// Storage variables /// ----------------------------------------------------------------------- + /// @notice The contract that has the right to mint options tokens + address public tokenAdmin; + + /// @notice The address that can perform upgrades + address public upgradeAdmin; + mapping (address => bool) public isExerciseContract; + uint256 public upgradeProposalTime; + + /// ----------------------------------------------------------------------- + /// Modifier + /// ----------------------------------------------------------------------- + + modifier onlyUpgradeAdmin() { + if (msg.sender != upgradeAdmin) revert Upgradeable__Unauthorized(); + _; + } /// ----------------------------------------------------------------------- - /// Constructor + /// Initializer /// ----------------------------------------------------------------------- - constructor( + function initialize( string memory name_, string memory symbol_, address owner_, - address tokenAdmin_ - ) ERC20(name_, symbol_, 18) Owned(owner_) { + address tokenAdmin_, + address upgradeAdmin_ + ) external initializer { + __UUPSUpgradeable_init(); + __ERC20_init(name_, symbol_); + __Ownable_init(owner_); tokenAdmin = tokenAdmin_; + upgradeAdmin = upgradeAdmin_; + + clearUpgradeCooldown(); } /// ----------------------------------------------------------------------- @@ -133,7 +157,7 @@ contract OptionsToken is IOptionsToken, ERC20, Owned, IERC20Mintable { // transfer options tokens from msg.sender to address(0) // we transfer instead of burn because TokenAdmin cares about totalSupply // which we don't want to change in order to follow the emission schedule - transfer(address(0), amount); + transfer(address(0x1), amount); // give rewards to recipient ( @@ -153,4 +177,41 @@ contract OptionsToken is IOptionsToken, ERC20, Owned, IERC20Mintable { data2 ); } + + /// ----------------------------------------------------------------------- + /// UUPS functions + /// ----------------------------------------------------------------------- + + /** + * @dev This function must be called prior to upgrading the implementation. + * It's required to wait UPGRADE_TIMELOCK seconds before executing the upgrade. + * Strategists and roles with higher privilege can initiate this cooldown. + */ + function initiateUpgradeCooldown() onlyUpgradeAdmin() external { + upgradeProposalTime = block.timestamp; + } + + /** + * @dev This function is called: + * - in initialize() + * - as part of a successful upgrade + * - manually to clear the upgrade cooldown. + * Guardian and roles with higher privilege can clear this cooldown. + */ + function clearUpgradeCooldown() public { + if (msg.sender != upgradeAdmin && !(upgradeProposalTime == 0)) revert Upgradeable__Unauthorized(); + upgradeProposalTime = block.timestamp + FUTURE_NEXT_PROPOSAL_TIME; + } + + /** + * @dev This function must be overriden simply for access control purposes. + * Only DEFAULT_ADMIN_ROLE can upgrade the implementation once the timelock + * has passed. + */ + function _authorizeUpgrade(address) onlyUpgradeAdmin internal override { + require( + upgradeProposalTime + UPGRADE_TIMELOCK < block.timestamp, "Upgrade cooldown not initiated or still ongoing" + ); + clearUpgradeCooldown(); + } } diff --git a/src/interfaces/IOptionsToken.sol b/src/interfaces/IOptionsToken.sol index 5ac8e63..0b8b29b 100644 --- a/src/interfaces/IOptionsToken.sol +++ b/src/interfaces/IOptionsToken.sol @@ -1,7 +1,9 @@ // SPDX-License-Identifier: AGPL-3.0 pragma solidity ^0.8.13; -interface IOptionsToken { +import {IERC20Mintable} from "./IERC20Mintable.sol"; + +interface IOptionsToken is IERC20Mintable { function exercise(uint256 amount, address recipient, address option, bytes calldata params) external returns (uint256 paymentAmount, address, uint256, uint256); diff --git a/test/OptionsToken.t.sol b/test/OptionsToken.t.sol index 9ff60c6..e9fd205 100644 --- a/test/OptionsToken.t.sol +++ b/test/OptionsToken.t.sol @@ -5,6 +5,7 @@ import "forge-std/Test.sol"; import {FixedPointMathLib} from "solmate/utils/FixedPointMathLib.sol"; import {ERC20} from "solmate/tokens/ERC20.sol"; +import {ERC1967Proxy} from "oz/proxy/ERC1967/ERC1967Proxy.sol"; import {OptionsToken} from "../src/OptionsToken.sol"; import {DiscountExerciseParams, DiscountExercise, BaseExercise} from "../src/exercise/DiscountExercise.sol"; @@ -28,6 +29,7 @@ contract OptionsTokenTest is Test { address owner; address tokenAdmin; address treasury; + address upgradeAdmin; OptionsToken optionsToken; DiscountExercise exerciser; @@ -41,11 +43,17 @@ contract OptionsTokenTest is Test { owner = makeAddr("owner"); tokenAdmin = makeAddr("tokenAdmin"); treasury = makeAddr("treasury"); + upgradeAdmin = makeAddr("upgradeAdmin"); // deploy contracts paymentToken = new TestERC20(); underlyingToken = address(new TestERC20()); - optionsToken = new OptionsToken("TIT Call Option Token", "oTIT", owner, tokenAdmin); + + address implementation = address(new OptionsToken()); + ERC1967Proxy proxy = new ERC1967Proxy(address(implementation), ""); + optionsToken = OptionsToken(address(proxy)); + optionsToken = new OptionsToken(); + optionsToken.initialize("TIT Call Option Token", "oTIT", owner, tokenAdmin, upgradeAdmin); address[] memory tokens = new address[](2); tokens[0] = underlyingToken; @@ -106,7 +114,7 @@ contract OptionsTokenTest is Test { // verify options tokens were transferred assertEqDecimal(optionsToken.balanceOf(address(this)), 0, 18, "user still has options tokens"); - assertEqDecimal(optionsToken.balanceOf(address(0)), amount, 18, "address(0) didn't get options tokens"); + assertEqDecimal(optionsToken.balanceOf(address(0x1)), amount, 18, "address(0) didn't get options tokens"); assertEqDecimal(optionsToken.totalSupply(), amount, 18, "total supply changed"); // verify payment tokens were transferred From 4abd5819eb018c24c1ef454bc57648a0ef640adf Mon Sep 17 00:00:00 2001 From: lookeey <71905281+lookeey@users.noreply.github.com> Date: Mon, 1 Jan 2024 19:52:36 -0300 Subject: [PATCH 27/64] fix errors --- src/OptionsToken.sol | 39 +++++++++++-------------------- src/exercise/DiscountExercise.sol | 5 ++++ src/oracles/BalancerOracle.sol | 20 ++++++---------- test/OptionsToken.t.sol | 7 ++---- 4 files changed, 28 insertions(+), 43 deletions(-) diff --git a/src/OptionsToken.sol b/src/OptionsToken.sol index c5ebe5f..369ed38 100644 --- a/src/OptionsToken.sol +++ b/src/OptionsToken.sol @@ -10,7 +10,7 @@ import {IOracle} from "./interfaces/IOracle.sol"; import {IExercise} from "./interfaces/IExercise.sol"; /// @title Options Token -/// @author zefram.eth +/// @author Eidolon & lookee /// @notice Options token representing the right to perform an advantageous action, /// such as purchasing the underlying token at a discount to the market price. contract OptionsToken is IOptionsToken, ERC20Upgradeable, OwnableUpgradeable, UUPSUpgradeable { @@ -52,20 +52,10 @@ contract OptionsToken is IOptionsToken, ERC20Upgradeable, OwnableUpgradeable, UU /// @notice The contract that has the right to mint options tokens address public tokenAdmin; - /// @notice The address that can perform upgrades - address public upgradeAdmin; - mapping (address => bool) public isExerciseContract; uint256 public upgradeProposalTime; - /// ----------------------------------------------------------------------- - /// Modifier - /// ----------------------------------------------------------------------- - - modifier onlyUpgradeAdmin() { - if (msg.sender != upgradeAdmin) revert Upgradeable__Unauthorized(); - _; - } + constructor () initializer {} /// ----------------------------------------------------------------------- /// Initializer @@ -75,16 +65,14 @@ contract OptionsToken is IOptionsToken, ERC20Upgradeable, OwnableUpgradeable, UU string memory name_, string memory symbol_, address owner_, - address tokenAdmin_, - address upgradeAdmin_ + address tokenAdmin_ ) external initializer { __UUPSUpgradeable_init(); __ERC20_init(name_, symbol_); __Ownable_init(owner_); tokenAdmin = tokenAdmin_; - upgradeAdmin = upgradeAdmin_; - clearUpgradeCooldown(); + _clearUpgradeCooldown(); } /// ----------------------------------------------------------------------- @@ -154,10 +142,8 @@ contract OptionsToken is IOptionsToken, ERC20Upgradeable, OwnableUpgradeable, UU // skip if option is not active if (!isExerciseContract[option]) revert OptionsToken__NotExerciseContract(); - // transfer options tokens from msg.sender to address(0) - // we transfer instead of burn because TokenAdmin cares about totalSupply - // which we don't want to change in order to follow the emission schedule - transfer(address(0x1), amount); + // burn options tokens + _burn(msg.sender, amount); // give rewards to recipient ( @@ -187,7 +173,7 @@ contract OptionsToken is IOptionsToken, ERC20Upgradeable, OwnableUpgradeable, UU * It's required to wait UPGRADE_TIMELOCK seconds before executing the upgrade. * Strategists and roles with higher privilege can initiate this cooldown. */ - function initiateUpgradeCooldown() onlyUpgradeAdmin() external { + function initiateUpgradeCooldown() onlyOwner external { upgradeProposalTime = block.timestamp; } @@ -198,20 +184,23 @@ contract OptionsToken is IOptionsToken, ERC20Upgradeable, OwnableUpgradeable, UU * - manually to clear the upgrade cooldown. * Guardian and roles with higher privilege can clear this cooldown. */ - function clearUpgradeCooldown() public { - if (msg.sender != upgradeAdmin && !(upgradeProposalTime == 0)) revert Upgradeable__Unauthorized(); + function _clearUpgradeCooldown() internal { upgradeProposalTime = block.timestamp + FUTURE_NEXT_PROPOSAL_TIME; } + function clearUpgradeCooldown() onlyOwner external { + _clearUpgradeCooldown(); + } + /** * @dev This function must be overriden simply for access control purposes. * Only DEFAULT_ADMIN_ROLE can upgrade the implementation once the timelock * has passed. */ - function _authorizeUpgrade(address) onlyUpgradeAdmin internal override { + function _authorizeUpgrade(address) onlyOwner internal override { require( upgradeProposalTime + UPGRADE_TIMELOCK < block.timestamp, "Upgrade cooldown not initiated or still ongoing" ); - clearUpgradeCooldown(); + _clearUpgradeCooldown(); } } diff --git a/src/exercise/DiscountExercise.sol b/src/exercise/DiscountExercise.sol index e6a8f29..6a7453b 100644 --- a/src/exercise/DiscountExercise.sol +++ b/src/exercise/DiscountExercise.sol @@ -28,6 +28,7 @@ contract DiscountExercise is BaseExercise, Owned { /// Errors error Exercise__SlippageTooHigh(); error Exercise__PastDeadline(); + error Exercise__MultiplierOutOfRange(); /// Events event Exercised(address indexed sender, address indexed recipient, uint256 amount, uint256 paymentAmount); @@ -112,6 +113,10 @@ contract DiscountExercise is BaseExercise, Owned { /// @notice Sets the discount multiplier. /// @param multiplier_ The new multiplier function setMultiplier(uint256 multiplier_) external onlyOwner { + if ( + multiplier_ > MULTIPLIER_DENOM * 2 // over 200% + || multiplier_ < MULTIPLIER_DENOM / 10 // under 10% + ) revert Exercise__MultiplierOutOfRange(); multiplier = multiplier_; emit SetMultiplier(multiplier_); } diff --git a/src/oracles/BalancerOracle.sol b/src/oracles/BalancerOracle.sol index 28cb189..e1c818f 100644 --- a/src/oracles/BalancerOracle.sol +++ b/src/oracles/BalancerOracle.sol @@ -12,7 +12,7 @@ import {IBalancerTwapOracle} from "../interfaces/IBalancerTwapOracle.sol"; /// @author zefram.eth /// @notice The oracle contract that provides the current price to purchase /// the underlying token while exercising options. Uses Balancer TWAP oracle -/// as data source, and then applies a multiplier & lower bound. +/// as data source. /// @dev IMPORTANT: The payment token and the underlying token must use 18 decimals. /// This is because the Balancer oracle returns the TWAP value in 18 decimals /// and the OptionsToken contract also expects 18 decimals. @@ -43,6 +43,10 @@ contract BalancerOracle is IOracle, Owned { /// @notice The Balancer TWAP oracle contract (usually a pool with oracle support) IBalancerTwapOracle public immutable balancerTwapOracle; + /// @notice Whether the price of token0 should be returned (in units of token1). + /// If false, the price of token1 is returned. + bool public immutable isToken0; + /// ----------------------------------------------------------------------- /// Storage variables /// ----------------------------------------------------------------------- @@ -58,10 +62,6 @@ contract BalancerOracle is IOracle, Owned { /// price to mitigate potential attacks on the TWAP oracle. uint128 public minPrice; - /// @notice Whether the price should be returned in terms of token0. - /// If false, the price is returned in terms of token1. - bool public isToken0; - /// ----------------------------------------------------------------------- /// Constructor /// ----------------------------------------------------------------------- @@ -128,7 +128,7 @@ contract BalancerOracle is IOracle, Owned { if (isToken0) { // convert price to token0 - price = uint256(1e18).divWadDown(price); + price = uint256(1e18).divWadUp(price); } // apply min price @@ -140,18 +140,12 @@ contract BalancerOracle is IOracle, Owned { /// ----------------------------------------------------------------------- /// @notice Updates the oracle parameters. Only callable by the owner. - /// @param multiplier_ The multiplier applied to the TWAP value. Encodes the discount of - /// the options token. Uses 4 decimals. /// @param secs_ The size of the window to take the TWAP value over in seconds. /// @param ago_ The number of seconds in the past to take the TWAP from. The window /// would be (block.timestamp - secs - ago, block.timestamp - ago]. /// @param minPrice_ The minimum value returned by getPrice(). Maintains a floor for the /// price to mitigate potential attacks on the TWAP oracle. - function setParams(address token, uint16 multiplier_, uint56 secs_, uint56 ago_, uint128 minPrice_) external onlyOwner { - IVault vault = balancerTwapOracle.getVault(); - (address[] memory poolTokens,,) = vault.getPoolTokens(balancerTwapOracle.getPoolId()); - isToken0 = poolTokens[0] == token; - + function setParams(uint56 secs_, uint56 ago_, uint128 minPrice_) external onlyOwner { secs = secs_; ago = ago_; minPrice = minPrice_; diff --git a/test/OptionsToken.t.sol b/test/OptionsToken.t.sol index e9fd205..cb133e0 100644 --- a/test/OptionsToken.t.sol +++ b/test/OptionsToken.t.sol @@ -52,8 +52,7 @@ contract OptionsTokenTest is Test { address implementation = address(new OptionsToken()); ERC1967Proxy proxy = new ERC1967Proxy(address(implementation), ""); optionsToken = OptionsToken(address(proxy)); - optionsToken = new OptionsToken(); - optionsToken.initialize("TIT Call Option Token", "oTIT", owner, tokenAdmin, upgradeAdmin); + optionsToken.initialize("TIT Call Option Token", "oTIT", owner, tokenAdmin); address[] memory tokens = new address[](2); tokens[0] = underlyingToken; @@ -221,7 +220,7 @@ contract OptionsTokenTest is Test { // such that the TWAP window becomes (block.timestamp - ORACLE_LARGEST_SAFETY_WINDOW - ORACLE_SECS, block.timestamp - ORACLE_LARGEST_SAFETY_WINDOW] // which is outside of the largest safety window vm.prank(owner); - oracle.setParams(address(0), PRICE_MULTIPLIER, ORACLE_SECS, ORACLE_LARGEST_SAFETY_WINDOW, ORACLE_MIN_PRICE); + oracle.setParams(ORACLE_SECS, ORACLE_LARGEST_SAFETY_WINDOW, ORACLE_MIN_PRICE); // exercise options tokens which should fail DiscountExerciseParams memory params = DiscountExerciseParams({ @@ -235,8 +234,6 @@ contract OptionsTokenTest is Test { function test_exercisePastDeadline(uint256 amount, address recipient, uint256 deadline) public { amount = bound(amount, 0, MAX_SUPPLY); deadline = bound(deadline, 0, block.timestamp - 1); - console.log("deadline: %s", deadline); - console.log("block.timestamp: %s", block.timestamp); // mint options tokens vm.prank(tokenAdmin); From 0f9e584eca69a6bdd091b9e99f6cfc176a87fd52 Mon Sep 17 00:00:00 2001 From: lookeey <71905281+lookeey@users.noreply.github.com> Date: Tue, 2 Jan 2024 11:24:00 -0300 Subject: [PATCH 28/64] fix tests --- test/BalancerOracle.t.sol | 2 +- test/OptionsToken.t.sol | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/test/BalancerOracle.t.sol b/test/BalancerOracle.t.sol index 5b1f21b..9033bab 100644 --- a/test/BalancerOracle.t.sol +++ b/test/BalancerOracle.t.sol @@ -83,7 +83,7 @@ contract BalancerOracleTest is Test { uint priceToken0 = oracleToken0.getPrice(); uint priceToken1 = oracleToken1.getPrice(); - assertEq(priceToken1, uint256(1e18).divWadDown(priceToken0), "incorrect price"); // 1% + assertEq(priceToken1, uint256(1e18).divWadUp(priceToken0), "incorrect price"); // 1% } diff --git a/test/OptionsToken.t.sol b/test/OptionsToken.t.sol index cb133e0..1bae1db 100644 --- a/test/OptionsToken.t.sol +++ b/test/OptionsToken.t.sol @@ -113,8 +113,7 @@ contract OptionsTokenTest is Test { // verify options tokens were transferred assertEqDecimal(optionsToken.balanceOf(address(this)), 0, 18, "user still has options tokens"); - assertEqDecimal(optionsToken.balanceOf(address(0x1)), amount, 18, "address(0) didn't get options tokens"); - assertEqDecimal(optionsToken.totalSupply(), amount, 18, "total supply changed"); + assertEqDecimal(optionsToken.totalSupply(), 0, 18, "option tokens not burned"); // verify payment tokens were transferred assertEqDecimal(paymentToken.balanceOf(address(this)), 0, 18, "user still has payment tokens"); From a5ca747c5459caf562ab80d0dcb6f8d5447b9847 Mon Sep 17 00:00:00 2001 From: lookeey <71905281+lookeey@users.noreply.github.com> Date: Tue, 2 Jan 2024 14:55:01 -0300 Subject: [PATCH 29/64] remove multiplier --- src/oracles/UniswapV3Oracle.sol | 42 ++++++--------------------------- test/UniswapV3Oracle.t.sol | 27 +-------------------- 2 files changed, 8 insertions(+), 61 deletions(-) diff --git a/src/oracles/UniswapV3Oracle.sol b/src/oracles/UniswapV3Oracle.sol index 9345da8..6184575 100644 --- a/src/oracles/UniswapV3Oracle.sol +++ b/src/oracles/UniswapV3Oracle.sol @@ -34,15 +34,7 @@ contract UniswapV3Oracle is IOracle, Owned { /// Events /// ----------------------------------------------------------------------- - event SetParams(bool isToken0, uint16 multiplier, uint56 secs, uint56 ago, uint128 minPrice); - - /// ----------------------------------------------------------------------- - /// Constants - /// ----------------------------------------------------------------------- - - /// @notice The denominator for converting the multiplier into a decimal number. - /// i.e. multiplier uses 4 decimals. - uint256 internal constant MULTIPLIER_DENOM = 10000; + event SetParams(uint56 secs, uint56 ago, uint128 minPrice); /// ----------------------------------------------------------------------- /// Immutable parameters @@ -55,10 +47,6 @@ contract UniswapV3Oracle is IOracle, Owned { /// Storage variables /// ----------------------------------------------------------------------- - /// @notice The multiplier applied to the TWAP value. Encodes the discount of - /// the options token. Uses 4 decimals. - uint16 public multiplier; - /// @notice The size of the window to take the TWAP value over in seconds. uint32 public secs; @@ -70,8 +58,8 @@ contract UniswapV3Oracle is IOracle, Owned { /// price to mitigate potential attacks on the TWAP oracle. uint128 public minPrice; - /// @notice Whether the price should be returned in terms of token0. - /// If false, the price is returned in terms of token1. + /// @notice Whether the price of token0 should be returned (in units of token1). + /// If false, the price is returned in units of token0. bool public isToken0; /// ----------------------------------------------------------------------- @@ -82,19 +70,17 @@ contract UniswapV3Oracle is IOracle, Owned { IUniswapV3Pool uniswapPool_, address token, address owner_, - uint16 multiplier_, uint32 secs_, uint32 ago_, uint128 minPrice_ ) Owned(owner_) { uniswapPool = uniswapPool_; isToken0 = token == uniswapPool_.token0(); - multiplier = multiplier_; secs = secs_; ago = ago_; minPrice = minPrice_; - emit SetParams(isToken0, multiplier_, secs_, ago_, minPrice_); + emit SetParams(secs_, ago_, minPrice_); } /// ----------------------------------------------------------------------- @@ -103,12 +89,6 @@ contract UniswapV3Oracle is IOracle, Owned { /// @inheritdoc IOracle function getPrice() external view override returns (uint256 price) { - /// ----------------------------------------------------------------------- - /// Storage loads - /// ----------------------------------------------------------------------- - - uint256 minPrice_ = minPrice; - /// ----------------------------------------------------------------------- /// Validation /// ----------------------------------------------------------------------- @@ -150,10 +130,7 @@ contract UniswapV3Oracle is IOracle, Owned { } // apply minimum price - if (price < minPrice_) revert UniswapOracle__BelowMinPrice(); - - // apply multiplier to price - price = price.mulDivUp(multiplier, MULTIPLIER_DENOM); + if (price < minPrice) revert UniswapOracle__BelowMinPrice(); } /// ----------------------------------------------------------------------- @@ -161,23 +138,18 @@ contract UniswapV3Oracle is IOracle, Owned { /// ----------------------------------------------------------------------- /// @notice Updates the oracle parameters. Only callable by the owner. - /// @param token Target token used for pricing. - /// @param multiplier_ The multiplier applied to the TWAP value. Encodes the discount of - /// the options token. Uses 4 decimals. /// @param secs_ The size of the window to take the TWAP value over in seconds. /// @param ago_ The number of seconds in the past to take the TWAP from. The window /// would be (block.timestamp - secs - ago, block.timestamp - ago]. /// @param minPrice_ The minimum value returned by getPrice(). Maintains a floor for the /// price to mitigate potential attacks on the TWAP oracle. - function setParams(address token, uint16 multiplier_, uint32 secs_, uint32 ago_, uint128 minPrice_) + function setParams(uint32 secs_, uint32 ago_, uint128 minPrice_) external onlyOwner { - isToken0 = token == uniswapPool.token0(); - multiplier = multiplier_; secs = secs_; ago = ago_; minPrice = minPrice_; - emit SetParams(isToken0, multiplier_, secs_, ago_, minPrice_); + emit SetParams(secs_, ago_, minPrice_); } } diff --git a/test/UniswapV3Oracle.t.sol b/test/UniswapV3Oracle.t.sol index 9631845..c6f8b09 100644 --- a/test/UniswapV3Oracle.t.sol +++ b/test/UniswapV3Oracle.t.sol @@ -16,7 +16,6 @@ struct Params { IUniswapV3Pool pool; address token; address owner; - uint16 multiplier; uint32 secs; uint32 ago; uint128 minPrice; @@ -52,7 +51,7 @@ contract UniswapOracleTest is Test { mockV3Pool.setCumulatives(sampleCumulatives); mockV3Pool.setToken0(OP_ADDRESS); - _default = Params(IUniswapV3Pool(WETH_OP_POOL_ADDRESS), OP_ADDRESS, address(this), 10000, 30 minutes, 0, 1000); + _default = Params(IUniswapV3Pool(WETH_OP_POOL_ADDRESS), OP_ADDRESS, address(this), 30 minutes, 0, 1000); swapRouter = ISwapRouter(SWAP_ROUTER_ADDRESS); } @@ -65,7 +64,6 @@ contract UniswapOracleTest is Test { mockV3Pool, OP_ADDRESS, _default.owner, - _default.multiplier, _default.secs, _default.ago, _default.minPrice @@ -80,7 +78,6 @@ contract UniswapOracleTest is Test { mockV3Pool, address(0), _default.owner, - _default.multiplier, _default.secs, _default.ago, _default.minPrice @@ -91,23 +88,6 @@ contract UniswapOracleTest is Test { assertEq(price, expectedPriceToken1); } - function test_PriceToken0Multiplier() public { - uint16 multiplier = 5000; - UniswapV3Oracle oracle = new UniswapV3Oracle( - mockV3Pool, - _default.token, - _default.owner, - multiplier, - _default.secs, - _default.ago, - _default.minPrice - ); - - uint256 price = oracle.getPrice(); - uint256 expectedPriceWithMultiplier = FixedPointMathLib.mulDivUp(expectedPriceToken0, multiplier, 10000); - assertEq(price, expectedPriceWithMultiplier); - } - /// ---------------------------------------------------------------------- /// Fork tests /// ---------------------------------------------------------------------- @@ -119,7 +99,6 @@ contract UniswapOracleTest is Test { _default.pool, _default.token, _default.owner, - _default.multiplier, _default.secs, _default.ago, _default.minPrice @@ -139,7 +118,6 @@ contract UniswapOracleTest is Test { _default.pool, _default.token, _default.owner, - _default.multiplier, _default.secs, _default.ago, _default.minPrice @@ -170,7 +148,6 @@ contract UniswapOracleTest is Test { _default.pool, _default.token, _default.owner, - _default.multiplier, _default.secs, _default.ago, uint128(price) @@ -189,7 +166,6 @@ contract UniswapOracleTest is Test { _default.pool, _default.token, _default.owner, - _default.multiplier, _default.secs, _default.ago, _default.minPrice @@ -232,7 +208,6 @@ contract UniswapOracleTest is Test { _default.pool, _default.token, _default.owner, - _default.multiplier, _default.secs, _default.ago, _default.minPrice From 1c6368ba0c55bb2d43e4b51fd10094b7c98b167a Mon Sep 17 00:00:00 2001 From: lookeey <71905281+lookeey@users.noreply.github.com> Date: Tue, 2 Jan 2024 15:05:50 -0300 Subject: [PATCH 30/64] remove multiplier --- src/oracles/ThenaOracle.sol | 35 ++++++--------------------------- test/ThenaOracle.t.sol | 39 +------------------------------------ 2 files changed, 7 insertions(+), 67 deletions(-) diff --git a/src/oracles/ThenaOracle.sol b/src/oracles/ThenaOracle.sol index 6ae50ae..2897b34 100644 --- a/src/oracles/ThenaOracle.sol +++ b/src/oracles/ThenaOracle.sol @@ -8,10 +8,10 @@ import {IOracle} from "../interfaces/IOracle.sol"; import {IThenaPair} from "../interfaces/IThenaPair.sol"; /// @title Oracle using Thena TWAP oracle as data source -/// @author zefram.eth/lookee +/// @author zefram.eth/lookee/Eidolon /// @notice The oracle contract that provides the current price to purchase /// the underlying token while exercising options. Uses Thena TWAP oracle -/// as data source, and then applies a multiplier & lower bound. +/// as data source, and then applies a lower bound. /// Furthermore, the payment token and the underlying token must use 18 decimals. /// This is because the Thena oracle returns the TWAP value in 18 decimals /// and the OptionsToken contract also expects 18 decimals. @@ -34,15 +34,7 @@ contract ThenaOracle is IOracle, Owned { /// Events /// ----------------------------------------------------------------------- - event SetParams(bool isToken0, uint16 multiplier, uint56 secs, uint128 minPrice); - - /// ----------------------------------------------------------------------- - /// Constants - /// ----------------------------------------------------------------------- - - /// @notice The denominator for converting the multiplier into a decimal number. - /// i.e. multiplier uses 4 decimals. - uint256 internal constant MULTIPLIER_DENOM = 10000; + event SetParams(uint56 secs, uint128 minPrice); /// ----------------------------------------------------------------------- /// Immutable parameters @@ -55,10 +47,6 @@ contract ThenaOracle is IOracle, Owned { /// Storage variables /// ----------------------------------------------------------------------- - /// @notice The multiplier applied to the TWAP value. Encodes the discount of - /// the options token. Uses 4 decimals. - uint16 public multiplier; - /// @notice The size of the window to take the TWAP value over in seconds. uint56 public secs; @@ -78,18 +66,16 @@ contract ThenaOracle is IOracle, Owned { IThenaPair thenaPair_, address token, address owner_, - uint16 multiplier_, uint56 secs_, uint128 minPrice_ ) Owned(owner_) { if (thenaPair_.stable()) revert ThenaOracle__StablePairsUnsupported(); thenaPair = thenaPair_; isToken0 = thenaPair_.token0() == token; - multiplier = multiplier_; secs = secs_; minPrice = minPrice_; - emit SetParams(isToken0, multiplier_, secs_, minPrice_); + emit SetParams(secs_, minPrice_); } /// ----------------------------------------------------------------------- @@ -102,7 +88,6 @@ contract ThenaOracle is IOracle, Owned { /// Storage loads /// ----------------------------------------------------------------------- - uint256 multiplier_ = multiplier; uint256 secs_ = secs; /// ----------------------------------------------------------------------- @@ -142,9 +127,6 @@ contract ThenaOracle is IOracle, Owned { } if (price < minPrice) revert ThenaOracle__BelowMinPrice(); - - // apply multiplier to price - price = price.mulDivUp(multiplier_, MULTIPLIER_DENOM); } /// ----------------------------------------------------------------------- @@ -152,18 +134,13 @@ contract ThenaOracle is IOracle, Owned { /// ----------------------------------------------------------------------- /// @notice Updates the oracle parameters. Only callable by the owner. - /// @param token Target token used for pricing. - /// @param multiplier_ The multiplier applied to the TWAP value. Encodes the discount of - /// the options token. Uses 4 decimals. /// @param secs_ The size of the window to take the TWAP value over in seconds. /// @param minPrice_ The minimum value returned by getPrice(). Maintains a floor for the /// price to mitigate potential attacks on the TWAP oracle. - function setParams(address token, uint16 multiplier_, uint56 secs_, uint128 minPrice_) external onlyOwner { - isToken0 = thenaPair.token0() == token; - multiplier = multiplier_; + function setParams(uint56 secs_, uint128 minPrice_) external onlyOwner { secs = secs_; minPrice = minPrice_; - emit SetParams(isToken0, multiplier_, secs_, minPrice_); + emit SetParams(secs_, minPrice_); } /// ----------------------------------------------------------------------- diff --git a/test/ThenaOracle.t.sol b/test/ThenaOracle.t.sol index 320ffb1..d3ff20a 100644 --- a/test/ThenaOracle.t.sol +++ b/test/ThenaOracle.t.sol @@ -12,7 +12,6 @@ struct Params { IThenaPair pair; address token; address owner; - uint16 multiplier; uint32 secs; uint128 minPrice; } @@ -36,7 +35,7 @@ contract ThenaOracleTest is Test { Params _default; function setUp() public { - _default = Params(IThenaPair(POOL_ADDRESS), TOKEN_ADDRESS, address(this), 10000, 30 minutes, 1000); + _default = Params(IThenaPair(POOL_ADDRESS), TOKEN_ADDRESS, address(this), 30 minutes, 1000); bscFork = vm.createSelectFork(BSC_RPC_URL, FORK_BLOCK); } @@ -46,7 +45,6 @@ contract ThenaOracleTest is Test { _default.pair, _default.token, _default.owner, - _default.multiplier, _default.secs, _default.minPrice ); @@ -63,7 +61,6 @@ contract ThenaOracleTest is Test { _default.pair, IThenaPair(_default.pair).token0(), _default.owner, - _default.multiplier, _default.secs, _default.minPrice ); @@ -72,7 +69,6 @@ contract ThenaOracleTest is Test { _default.pair, IThenaPair(_default.pair).token1(), _default.owner, - _default.multiplier, _default.secs, _default.minPrice ); @@ -83,41 +79,11 @@ contract ThenaOracleTest is Test { assertApproxEqAbs(priceToken1, uint256(1e18).divWadDown(priceToken0), 1, "incorrect price"); // 1% } - function test_priceMultiplier(uint multiplier) public { - multiplier = bound(multiplier, 0, 10000); - - ThenaOracle oracle0 = new ThenaOracle( - _default.pair, - _default.token, - _default.owner, - _default.multiplier, - _default.secs, - _default.minPrice - ); - - ThenaOracle oracle1 = new ThenaOracle( - _default.pair, - _default.token, - _default.owner, - uint16(multiplier), - _default.secs, - _default.minPrice - ); - - uint price0 = oracle0.getPrice(); - uint price1 = oracle1.getPrice(); - - uint expectedPrice = price0.mulDivDown(multiplier, MULTIPLIER_DENOM); - - assertApproxEqAbs(price1, expectedPrice, 1, "incorrect price multiplier"); // 1% - } - function test_revertMinPrice() public { ThenaOracle oracle = new ThenaOracle( _default.pair, _default.token, _default.owner, - _default.multiplier, _default.secs, _default.minPrice ); @@ -150,7 +116,6 @@ contract ThenaOracleTest is Test { _default.pair, _default.token, _default.owner, - _default.multiplier, _default.secs, uint128(price) ); @@ -166,7 +131,6 @@ contract ThenaOracleTest is Test { _default.pair, _default.token, _default.owner, - _default.multiplier, _default.secs, _default.minPrice ); @@ -203,7 +167,6 @@ contract ThenaOracleTest is Test { _default.pair, _default.token, _default.owner, - _default.multiplier, _default.secs, _default.minPrice ); From 68202502ccf46d924ba2397a901430e532b82e8a Mon Sep 17 00:00:00 2001 From: lookeey <71905281+lookeey@users.noreply.github.com> Date: Tue, 2 Jan 2024 15:24:56 -0300 Subject: [PATCH 31/64] add helper paymentAmount function --- src/exercise/DiscountExercise.sol | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/exercise/DiscountExercise.sol b/src/exercise/DiscountExercise.sol index 44d568b..1139ed6 100644 --- a/src/exercise/DiscountExercise.sol +++ b/src/exercise/DiscountExercise.sol @@ -145,4 +145,14 @@ contract DiscountExercise is BaseExercise { emit Exercised(from, recipient, amount, paymentAmount); } + + /// View functions + + /// @notice Returns the amount of payment tokens required to exercise the given amount of options tokens. + /// @param amount The amount of options tokens to exercise + function getPaymentAmount( + uint256 amount + ) external view returns (uint256 paymentAmount) { + paymentAmount = amount.mulWadUp(oracle.getPrice()); + } } From 62a036d8eb31a12391fe05e29ffd662bcf0ce839 Mon Sep 17 00:00:00 2001 From: lookeey <71905281+lookeey@users.noreply.github.com> Date: Tue, 2 Jan 2024 15:30:44 -0300 Subject: [PATCH 32/64] remove unused parameter --- src/exercise/BaseExercise.sol | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/exercise/BaseExercise.sol b/src/exercise/BaseExercise.sol index aa18d74..1673b58 100644 --- a/src/exercise/BaseExercise.sol +++ b/src/exercise/BaseExercise.sol @@ -62,7 +62,7 @@ abstract contract BaseExercise is IExercise, Owned { } /// @notice Distributes fees to the fee recipients from a token holder who has approved - function distributeFeesFrom(uint256 totalAmount, ERC20 token, address from) internal virtual{ + function distributeFeesFrom(uint256 totalAmount, ERC20 token, address from) internal virtual { for (uint256 i = 0; i < feeRecipients.length - 1; i++) { uint256 feeAmount = totalAmount * feeBPS[i] / FEE_DENOMINATOR; token.safeTransferFrom(from, feeRecipients[i], feeAmount); @@ -73,7 +73,7 @@ abstract contract BaseExercise is IExercise, Owned { } /// @notice Distributes fees to the fee recipients from token balance of exercise contract - function distributeFees(uint256 totalAmount, ERC20 token, address from) internal virtual{ + function distributeFees(uint256 totalAmount, ERC20 token) internal virtual { for (uint256 i = 0; i < feeRecipients.length; i++) { uint256 feeAmount = totalAmount * feeBPS[i] / FEE_DENOMINATOR; token.safeTransfer(feeRecipients[i], feeAmount); From b5c11d01221fd47a3b73abb50af3bdcc5c65dabc Mon Sep 17 00:00:00 2001 From: lookeey <71905281+lookeey@users.noreply.github.com> Date: Tue, 2 Jan 2024 15:47:25 -0300 Subject: [PATCH 33/64] forge install: openzeppelin-contracts v4.8.3 --- lib/openzeppelin-contracts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/openzeppelin-contracts b/lib/openzeppelin-contracts index 932fddf..0a25c19 160000 --- a/lib/openzeppelin-contracts +++ b/lib/openzeppelin-contracts @@ -1 +1 @@ -Subproject commit 932fddf69a699a9a80fd2396fd1a2ab91cdda123 +Subproject commit 0a25c1940ca220686588c4af3ec526f725fe2582 From 990e2ed6dcc28426b1c13d6b9d8a93801a61e24e Mon Sep 17 00:00:00 2001 From: lookeey <71905281+lookeey@users.noreply.github.com> Date: Tue, 2 Jan 2024 15:47:43 -0300 Subject: [PATCH 34/64] forge install: openzeppelin-contracts-upgradeable v4.8.3 --- lib/openzeppelin-contracts-upgradeable | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/openzeppelin-contracts-upgradeable b/lib/openzeppelin-contracts-upgradeable index 625fb3c..58fa0f8 160000 --- a/lib/openzeppelin-contracts-upgradeable +++ b/lib/openzeppelin-contracts-upgradeable @@ -1 +1 @@ -Subproject commit 625fb3c2b2696f1747ba2e72d1e1113066e6c177 +Subproject commit 58fa0f81c4036f1a3b616fdffad2fd27e5d5ce21 From 92948fafbd7655cea128eda3cd016fb77f7c2c1f Mon Sep 17 00:00:00 2001 From: lookeey <71905281+lookeey@users.noreply.github.com> Date: Tue, 2 Jan 2024 15:53:20 -0300 Subject: [PATCH 35/64] downgrade to oz-v4 --- src/OptionsToken.sol | 3 +-- test/OptionsToken.t.sol | 3 ++- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/OptionsToken.sol b/src/OptionsToken.sol index 369ed38..cea5730 100644 --- a/src/OptionsToken.sol +++ b/src/OptionsToken.sol @@ -64,12 +64,11 @@ contract OptionsToken is IOptionsToken, ERC20Upgradeable, OwnableUpgradeable, UU function initialize( string memory name_, string memory symbol_, - address owner_, address tokenAdmin_ ) external initializer { __UUPSUpgradeable_init(); __ERC20_init(name_, symbol_); - __Ownable_init(owner_); + __Ownable_init(); tokenAdmin = tokenAdmin_; _clearUpgradeCooldown(); diff --git a/test/OptionsToken.t.sol b/test/OptionsToken.t.sol index c87e718..f54a0ce 100644 --- a/test/OptionsToken.t.sol +++ b/test/OptionsToken.t.sol @@ -60,7 +60,8 @@ contract OptionsTokenTest is Test { address implementation = address(new OptionsToken()); ERC1967Proxy proxy = new ERC1967Proxy(address(implementation), ""); optionsToken = OptionsToken(address(proxy)); - optionsToken.initialize("TIT Call Option Token", "oTIT", owner, tokenAdmin); + optionsToken.initialize("TIT Call Option Token", "oTIT", tokenAdmin); + optionsToken.transferOwnership(owner); address[] memory tokens = new address[](2); tokens[0] = underlyingToken; From 4753ad11bb567a8ca7a316536e94c321071424b9 Mon Sep 17 00:00:00 2001 From: lookeey <71905281+lookeey@users.noreply.github.com> Date: Tue, 2 Jan 2024 16:05:02 -0300 Subject: [PATCH 36/64] use oz IERC20 for compatibility --- src/exercise/BaseExercise.sol | 10 +++++----- src/exercise/DiscountExercise.sol | 14 +++++++------- test/OptionsToken.t.sol | 4 ++-- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/exercise/BaseExercise.sol b/src/exercise/BaseExercise.sol index 1673b58..33b0af9 100644 --- a/src/exercise/BaseExercise.sol +++ b/src/exercise/BaseExercise.sol @@ -3,13 +3,13 @@ pragma solidity ^0.8.13; import {IExercise} from "../interfaces/IExercise.sol"; import {IOptionsToken} from "../OptionsToken.sol"; -import {SafeTransferLib} from "solmate/utils/SafeTransferLib.sol"; +import {SafeERC20} from "oz/token/ERC20/utils/SafeERC20.sol"; +import {IERC20} from "oz/token/ERC20/IERC20.sol"; import {FixedPointMathLib} from "solmate/utils/FixedPointMathLib.sol"; import {Owned} from "solmate/auth/Owned.sol"; -import {ERC20} from "solmate/tokens/ERC20.sol"; abstract contract BaseExercise is IExercise, Owned { - using SafeTransferLib for ERC20; + using SafeERC20 for IERC20; using FixedPointMathLib for uint256; error Exercise__NotOToken(); @@ -62,7 +62,7 @@ abstract contract BaseExercise is IExercise, Owned { } /// @notice Distributes fees to the fee recipients from a token holder who has approved - function distributeFeesFrom(uint256 totalAmount, ERC20 token, address from) internal virtual { + function distributeFeesFrom(uint256 totalAmount, IERC20 token, address from) internal virtual { for (uint256 i = 0; i < feeRecipients.length - 1; i++) { uint256 feeAmount = totalAmount * feeBPS[i] / FEE_DENOMINATOR; token.safeTransferFrom(from, feeRecipients[i], feeAmount); @@ -73,7 +73,7 @@ abstract contract BaseExercise is IExercise, Owned { } /// @notice Distributes fees to the fee recipients from token balance of exercise contract - function distributeFees(uint256 totalAmount, ERC20 token) internal virtual { + function distributeFees(uint256 totalAmount, IERC20 token) internal virtual { for (uint256 i = 0; i < feeRecipients.length; i++) { uint256 feeAmount = totalAmount * feeBPS[i] / FEE_DENOMINATOR; token.safeTransfer(feeRecipients[i], feeAmount); diff --git a/src/exercise/DiscountExercise.sol b/src/exercise/DiscountExercise.sol index 1139ed6..f1d4921 100644 --- a/src/exercise/DiscountExercise.sol +++ b/src/exercise/DiscountExercise.sol @@ -2,8 +2,8 @@ pragma solidity ^0.8.13; import {Owned} from "solmate/auth/Owned.sol"; -import {ERC20} from "solmate/tokens/ERC20.sol"; -import {SafeTransferLib} from "solmate/utils/SafeTransferLib.sol"; +import {IERC20} from "oz/token/ERC20/IERC20.sol"; +import {SafeERC20} from "oz/token/ERC20/utils/SafeERC20.sol"; import {FixedPointMathLib} from "solmate/utils/FixedPointMathLib.sol"; import {BaseExercise} from "../exercise/BaseExercise.sol"; @@ -22,7 +22,7 @@ struct DiscountExerciseParams { /// @dev Assumes the underlying token and the payment token both use 18 decimals. contract DiscountExercise is BaseExercise { /// Library usage - using SafeTransferLib for ERC20; + using SafeERC20 for IERC20; using FixedPointMathLib for uint256; /// Errors @@ -45,10 +45,10 @@ contract DiscountExercise is BaseExercise { /// Immutable parameters /// @notice The token paid by the options token holder during redemption - ERC20 public immutable paymentToken; + IERC20 public immutable paymentToken; /// @notice The underlying token purchased during redemption - ERC20 public immutable underlyingToken; + IERC20 public immutable underlyingToken; /// Storage variables @@ -66,8 +66,8 @@ contract DiscountExercise is BaseExercise { constructor( OptionsToken oToken_, address owner_, - ERC20 paymentToken_, - ERC20 underlyingToken_, + IERC20 paymentToken_, + IERC20 underlyingToken_, IOracle oracle_, uint256 multiplier_, address[] memory feeRecipients_, diff --git a/test/OptionsToken.t.sol b/test/OptionsToken.t.sol index f54a0ce..f014755 100644 --- a/test/OptionsToken.t.sol +++ b/test/OptionsToken.t.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.13; import "forge-std/Test.sol"; import {FixedPointMathLib} from "solmate/utils/FixedPointMathLib.sol"; -import {ERC20} from "solmate/tokens/ERC20.sol"; +import {IERC20} from "oz/token/ERC20/IERC20.sol"; import {ERC1967Proxy} from "oz/proxy/ERC1967/ERC1967Proxy.sol"; import {OptionsToken} from "../src/OptionsToken.sol"; @@ -71,7 +71,7 @@ contract OptionsTokenTest is Test { oracle = new BalancerOracle(balancerTwapOracle, underlyingToken, owner, ORACLE_SECS, ORACLE_AGO, ORACLE_MIN_PRICE); - exerciser = new DiscountExercise(optionsToken, owner, paymentToken, ERC20(underlyingToken), oracle, PRICE_MULTIPLIER, feeRecipients_, feeBPS_); + exerciser = new DiscountExercise(optionsToken, owner, IERC20(address(paymentToken)), IERC20(underlyingToken), oracle, PRICE_MULTIPLIER, feeRecipients_, feeBPS_); TestERC20(underlyingToken).mint(address(exerciser), 1e20 ether); From f17c0e92811b02358006a932a3f1af595bdf99d5 Mon Sep 17 00:00:00 2001 From: lookeey <71905281+lookeey@users.noreply.github.com> Date: Tue, 9 Jan 2024 15:28:10 -0300 Subject: [PATCH 37/64] add hardhat deployment scripts --- .env.example | 13 +- .gitignore | 6 + hardhat.config.ts | 40 + package-lock.json | 8709 +++++++++++++++++++++++++++++++++ package.json | 24 + script/Deploy.s.sol | 60 - script/base/CREATE3Script.sol | 27 - scripts/deploy.ts | 66 + src/OptionsToken.sol | 5 +- tsconfig.json | 11 + 10 files changed, 8868 insertions(+), 93 deletions(-) create mode 100644 hardhat.config.ts create mode 100644 package-lock.json create mode 100644 package.json delete mode 100644 script/Deploy.s.sol delete mode 100644 script/base/CREATE3Script.sol create mode 100644 scripts/deploy.ts create mode 100644 tsconfig.json diff --git a/.env.example b/.env.example index 1f37992..93fc12e 100644 --- a/.env.example +++ b/.env.example @@ -1,6 +1,8 @@ # Network and account info RPC_URL_MAINNET=XXX RPC_URL_GOERLI=XXX +BSC_RPC_URL=XXX +OPTIMISM_RPC_URL=XXX PRIVATE_KEY=XXX @@ -9,10 +11,8 @@ ETHERSCAN_KEY=XXX # Deploy configs VERSION="1.0.0" OWNER=XXX -TREASURY=XXX -BALANCER_POOL=XXX # 20-80 WETH-LIT pool -ORACLE_MULTIPLIER=XXX # 4 decimals +ORACLE_SOURCE=XXX # 20-80 WETH-LIT pool ORACLE_SECS=XXX ORACLE_AGO=XXX ORACLE_MIN_PRICE=XXX # 18 decimals @@ -20,6 +20,9 @@ ORACLE_MIN_PRICE=XXX # 18 decimals OT_NAME="LIT Call Option Token" OT_SYMBOL="oLIT" OT_PAYMENT_TOKEN=0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 # WETH +OT_UNDERLYING_TOKEN=0x4d2d32d8652058Bf98c772953E1Df5c5c85D9F45 # OATH +OT_TOKEN_ADMIN=XXX -BSC_RPC_URL="https://binance.llamarpc.com" -OPTIMISM_RPC_URL="https://mainnet.optimism.io" +MULTIPLIER=5000 # 4 decimals +FEE_RECIPIENTS=0xXXX,0xXXX +FEE_BPS=5000,5000 diff --git a/.gitignore b/.gitignore index 3269660..9c3c7dc 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,9 @@ out/ # Dotenv file .env + +# Hardhat +node_modules/ +artifacts/ +cache_hardhat/ +typechain-types/ diff --git a/hardhat.config.ts b/hardhat.config.ts new file mode 100644 index 0000000..860e869 --- /dev/null +++ b/hardhat.config.ts @@ -0,0 +1,40 @@ +import { HardhatUserConfig } from "hardhat/config"; +import "@nomicfoundation/hardhat-toolbox"; +import '@openzeppelin/hardhat-upgrades'; +import "@nomicfoundation/hardhat-foundry"; +import { config as dotenvConfig } from "dotenv"; + +dotenvConfig(); + +const PRIVATE_KEY = process.env.PRIVATE_KEY || ""; + +const config: HardhatUserConfig = { + solidity: { + version: "0.8.19", + settings: { + optimizer: { enabled: true, runs: 9999 } + } + }, + paths: { + sources: "./src" + }, + networks: { + op: { + url: "https://mainnet.optimism.io", + chainId: 10, + accounts: [`0x${PRIVATE_KEY}`], + }, + bsc: { + url: "https://bsc-dataseed.binance.org/", + chainId: 56, + accounts: [`0x${PRIVATE_KEY}`], + }, + }, + etherscan: { + apiKey: { + bsc: process.env.ETHERSCAN_KEY || "", + } + }, +}; + +export default config; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..21f914d --- /dev/null +++ b/package-lock.json @@ -0,0 +1,8709 @@ +{ + "name": "options-token", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "options-token", + "version": "1.0.0", + "license": "AGPL-3.0", + "devDependencies": { + "@nomicfoundation/hardhat-ethers": "^3.0.5", + "@nomicfoundation/hardhat-foundry": "^1.1.1", + "@nomicfoundation/hardhat-toolbox": "^4.0.0", + "@openzeppelin/hardhat-upgrades": "^3.0.1", + "dotenv": "^16.3.1", + "ethers": "^6.9.2", + "hardhat": "^2.19.4" + } + }, + "node_modules/@adraffy/ens-normalize": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz", + "integrity": "sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==", + "dev": true + }, + "node_modules/@aws-crypto/sha256-js": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-1.2.2.tgz", + "integrity": "sha512-Nr1QJIbW/afYYGzYvrF70LtaHrIRtd4TNAglX8BvlfxJLZ45SAmueIKYl5tWoNBPzp65ymXGFK0Bb1vZUpuc9g==", + "dev": true, + "dependencies": { + "@aws-crypto/util": "^1.2.2", + "@aws-sdk/types": "^3.1.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/sha256-js/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@aws-crypto/util": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-1.2.2.tgz", + "integrity": "sha512-H8PjG5WJ4wz0UXAFXeJjWCW1vkvIJ3qUUD+rGRwJ2/hj+xT58Qle2MTql/2MGzkU+1JLAFuR6aJpLAjHwhmwwg==", + "dev": true, + "dependencies": { + "@aws-sdk/types": "^3.1.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/util/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@aws-sdk/types": { + "version": "3.485.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.485.0.tgz", + "integrity": "sha512-+QW32YQdvZRDOwrAQPo/qCyXoSjgXB6RwJwCwkd8ebJXRXw6tmGKIHaZqYHt/LtBymvnaBgBBADNa4+qFvlOFw==", + "dev": true, + "dependencies": { + "@smithy/types": "^2.8.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/types/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@aws-sdk/util-utf8-browser": { + "version": "3.259.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", + "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", + "dev": true, + "dependencies": { + "tslib": "^2.3.1" + } + }, + "node_modules/@chainsafe/as-sha256": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@chainsafe/as-sha256/-/as-sha256-0.3.1.tgz", + "integrity": "sha512-hldFFYuf49ed7DAakWVXSJODuq3pzJEguD8tQ7h+sGkM18vja+OFoJI9krnGmgzyuZC2ETX0NOIcCTy31v2Mtg==", + "dev": true + }, + "node_modules/@chainsafe/persistent-merkle-tree": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.4.2.tgz", + "integrity": "sha512-lLO3ihKPngXLTus/L7WHKaw9PnNJWizlOF1H9NNzHP6Xvh82vzg9F2bzkXhYIFshMZ2gTCEz8tq6STe7r5NDfQ==", + "dev": true, + "dependencies": { + "@chainsafe/as-sha256": "^0.3.1" + } + }, + "node_modules/@chainsafe/ssz": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/@chainsafe/ssz/-/ssz-0.9.4.tgz", + "integrity": "sha512-77Qtg2N1ayqs4Bg/wvnWfg5Bta7iy7IRh8XqXh7oNMeP2HBbBwx8m6yTpA8p0EHItWPEBkgZd5S5/LSlp3GXuQ==", + "dev": true, + "dependencies": { + "@chainsafe/as-sha256": "^0.3.1", + "@chainsafe/persistent-merkle-tree": "^0.4.2", + "case": "^1.6.3" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "peer": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@ethereumjs/rlp": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz", + "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==", + "dev": true, + "peer": true, + "bin": { + "rlp": "bin/rlp" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@ethereumjs/util": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-8.1.0.tgz", + "integrity": "sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==", + "dev": true, + "peer": true, + "dependencies": { + "@ethereumjs/rlp": "^4.0.1", + "ethereum-cryptography": "^2.0.0", + "micro-ftch": "^0.3.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@ethereumjs/util/node_modules/@noble/curves": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.1.0.tgz", + "integrity": "sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==", + "dev": true, + "peer": true, + "dependencies": { + "@noble/hashes": "1.3.1" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@ethereumjs/util/node_modules/@noble/hashes": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", + "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@ethereumjs/util/node_modules/ethereum-cryptography": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.1.2.tgz", + "integrity": "sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug==", + "dev": true, + "peer": true, + "dependencies": { + "@noble/curves": "1.1.0", + "@noble/hashes": "1.3.1", + "@scure/bip32": "1.3.1", + "@scure/bip39": "1.2.1" + } + }, + "node_modules/@ethersproject/abi": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", + "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@ethersproject/contracts": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", + "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abi": "^5.7.0", + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0" + } + }, + "node_modules/@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/hdnode": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", + "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@ethersproject/json-wallets": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", + "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" + } + }, + "node_modules/@ethersproject/json-wallets/node_modules/aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", + "dev": true + }, + "node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ] + }, + "node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/pbkdf2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" + } + }, + "node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/providers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", + "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0", + "bech32": "1.1.4", + "ws": "7.4.6" + } + }, + "node_modules/@ethersproject/providers/node_modules/ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/@ethersproject/random": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", + "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/solidity": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/@ethersproject/units": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/wallet": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", + "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/json-wallets": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/wordlists": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@fastify/busboy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.0.tgz", + "integrity": "sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true, + "peer": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "peer": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@metamask/eth-sig-util": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz", + "integrity": "sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==", + "dev": true, + "dependencies": { + "ethereumjs-abi": "^0.6.8", + "ethereumjs-util": "^6.2.1", + "ethjs-util": "^0.1.6", + "tweetnacl": "^1.0.3", + "tweetnacl-util": "^0.15.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@metamask/eth-sig-util/node_modules/@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@metamask/eth-sig-util/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/@metamask/eth-sig-util/node_modules/ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "dev": true, + "dependencies": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + }, + "node_modules/@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "dev": true, + "dependencies": { + "@noble/hashes": "1.3.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "dev": true, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/secp256k1": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz", + "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "peer": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "peer": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nomicfoundation/ethereumjs-block": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-5.0.2.tgz", + "integrity": "sha512-hSe6CuHI4SsSiWWjHDIzWhSiAVpzMUcDRpWYzN0T9l8/Rz7xNn3elwVOJ/tAyS0LqL6vitUD78Uk7lQDXZun7Q==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-common": "4.0.2", + "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "@nomicfoundation/ethereumjs-trie": "6.0.2", + "@nomicfoundation/ethereumjs-tx": "5.0.2", + "@nomicfoundation/ethereumjs-util": "9.0.2", + "ethereum-cryptography": "0.1.3", + "ethers": "^5.7.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-block/node_modules/ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" + } + }, + "node_modules/@nomicfoundation/ethereumjs-blockchain": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-7.0.2.tgz", + "integrity": "sha512-8UUsSXJs+MFfIIAKdh3cG16iNmWzWC/91P40sazNvrqhhdR/RtGDlFk2iFTGbBAZPs2+klZVzhRX8m2wvuvz3w==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-block": "5.0.2", + "@nomicfoundation/ethereumjs-common": "4.0.2", + "@nomicfoundation/ethereumjs-ethash": "3.0.2", + "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "@nomicfoundation/ethereumjs-trie": "6.0.2", + "@nomicfoundation/ethereumjs-tx": "5.0.2", + "@nomicfoundation/ethereumjs-util": "9.0.2", + "abstract-level": "^1.0.3", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "level": "^8.0.0", + "lru-cache": "^5.1.1", + "memory-level": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-common": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.2.tgz", + "integrity": "sha512-I2WGP3HMGsOoycSdOTSqIaES0ughQTueOsddJ36aYVpI3SN8YSusgRFLwzDJwRFVIYDKx/iJz0sQ5kBHVgdDwg==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-util": "9.0.2", + "crc-32": "^1.2.0" + } + }, + "node_modules/@nomicfoundation/ethereumjs-ethash": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-3.0.2.tgz", + "integrity": "sha512-8PfoOQCcIcO9Pylq0Buijuq/O73tmMVURK0OqdjhwqcGHYC2PwhbajDh7GZ55ekB0Px197ajK3PQhpKoiI/UPg==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-block": "5.0.2", + "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "@nomicfoundation/ethereumjs-util": "9.0.2", + "abstract-level": "^1.0.3", + "bigint-crypto-utils": "^3.0.23", + "ethereum-cryptography": "0.1.3" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-evm": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-2.0.2.tgz", + "integrity": "sha512-rBLcUaUfANJxyOx9HIdMX6uXGin6lANCulIm/pjMgRqfiCRMZie3WKYxTSd8ZE/d+qT+zTedBF4+VHTdTSePmQ==", + "dev": true, + "dependencies": { + "@ethersproject/providers": "^5.7.1", + "@nomicfoundation/ethereumjs-common": "4.0.2", + "@nomicfoundation/ethereumjs-tx": "5.0.2", + "@nomicfoundation/ethereumjs-util": "9.0.2", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "mcl-wasm": "^0.7.1", + "rustbn.js": "~0.2.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-rlp": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.2.tgz", + "integrity": "sha512-QwmemBc+MMsHJ1P1QvPl8R8p2aPvvVcKBbvHnQOKBpBztEo0omN0eaob6FeZS/e3y9NSe+mfu3nNFBHszqkjTA==", + "dev": true, + "bin": { + "rlp": "bin/rlp" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-statemanager": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-2.0.2.tgz", + "integrity": "sha512-dlKy5dIXLuDubx8Z74sipciZnJTRSV/uHG48RSijhgm1V7eXYFC567xgKtsKiVZB1ViTP9iFL4B6Je0xD6X2OA==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-common": "4.0.2", + "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "ethers": "^5.7.1", + "js-sdsl": "^4.1.4" + } + }, + "node_modules/@nomicfoundation/ethereumjs-statemanager/node_modules/ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" + } + }, + "node_modules/@nomicfoundation/ethereumjs-trie": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-6.0.2.tgz", + "integrity": "sha512-yw8vg9hBeLYk4YNg5MrSJ5H55TLOv2FSWUTROtDtTMMmDGROsAu+0tBjiNGTnKRi400M6cEzoFfa89Fc5k8NTQ==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "@nomicfoundation/ethereumjs-util": "9.0.2", + "@types/readable-stream": "^2.3.13", + "ethereum-cryptography": "0.1.3", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-tx": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.2.tgz", + "integrity": "sha512-T+l4/MmTp7VhJeNloMkM+lPU3YMUaXdcXgTGCf8+ZFvV9NYZTRLFekRwlG6/JMmVfIfbrW+dRRJ9A6H5Q/Z64g==", + "dev": true, + "dependencies": { + "@chainsafe/ssz": "^0.9.2", + "@ethersproject/providers": "^5.7.2", + "@nomicfoundation/ethereumjs-common": "4.0.2", + "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "@nomicfoundation/ethereumjs-util": "9.0.2", + "ethereum-cryptography": "0.1.3" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-util": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.2.tgz", + "integrity": "sha512-4Wu9D3LykbSBWZo8nJCnzVIYGvGCuyiYLIJa9XXNVt1q1jUzHdB+sJvx95VGCpPkCT+IbLecW6yfzy3E1bQrwQ==", + "dev": true, + "dependencies": { + "@chainsafe/ssz": "^0.10.0", + "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "ethereum-cryptography": "0.1.3" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-util/node_modules/@chainsafe/persistent-merkle-tree": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.5.0.tgz", + "integrity": "sha512-l0V1b5clxA3iwQLXP40zYjyZYospQLZXzBVIhhr9kDg/1qHZfzzHw0jj4VPBijfYCArZDlPkRi1wZaV2POKeuw==", + "dev": true, + "dependencies": { + "@chainsafe/as-sha256": "^0.3.1" + } + }, + "node_modules/@nomicfoundation/ethereumjs-util/node_modules/@chainsafe/ssz": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@chainsafe/ssz/-/ssz-0.10.2.tgz", + "integrity": "sha512-/NL3Lh8K+0q7A3LsiFq09YXS9fPE+ead2rr7vM2QK8PLzrNsw3uqrif9bpRX5UxgeRjM+vYi+boCM3+GM4ovXg==", + "dev": true, + "dependencies": { + "@chainsafe/as-sha256": "^0.3.1", + "@chainsafe/persistent-merkle-tree": "^0.5.0" + } + }, + "node_modules/@nomicfoundation/ethereumjs-vm": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-7.0.2.tgz", + "integrity": "sha512-Bj3KZT64j54Tcwr7Qm/0jkeZXJMfdcAtRBedou+Hx0dPOSIgqaIr0vvLwP65TpHbak2DmAq+KJbW2KNtIoFwvA==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-block": "5.0.2", + "@nomicfoundation/ethereumjs-blockchain": "7.0.2", + "@nomicfoundation/ethereumjs-common": "4.0.2", + "@nomicfoundation/ethereumjs-evm": "2.0.2", + "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "@nomicfoundation/ethereumjs-statemanager": "2.0.2", + "@nomicfoundation/ethereumjs-trie": "6.0.2", + "@nomicfoundation/ethereumjs-tx": "5.0.2", + "@nomicfoundation/ethereumjs-util": "9.0.2", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "mcl-wasm": "^0.7.1", + "rustbn.js": "~0.2.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/hardhat-chai-matchers": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-2.0.3.tgz", + "integrity": "sha512-A40s7EAK4Acr8UP1Yudgi9GGD9Cca/K3LHt3DzmRIje14lBfHtg9atGQ7qK56vdPcTwKmeaGn30FzxMUfPGEMw==", + "dev": true, + "peer": true, + "dependencies": { + "@types/chai-as-promised": "^7.1.3", + "chai-as-promised": "^7.1.1", + "deep-eql": "^4.0.1", + "ordinal": "^1.0.3" + }, + "peerDependencies": { + "@nomicfoundation/hardhat-ethers": "^3.0.0", + "chai": "^4.2.0", + "ethers": "^6.1.0", + "hardhat": "^2.9.4" + } + }, + "node_modules/@nomicfoundation/hardhat-ethers": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ethers/-/hardhat-ethers-3.0.5.tgz", + "integrity": "sha512-RNFe8OtbZK6Ila9kIlHp0+S80/0Bu/3p41HUpaRIoHLm6X3WekTd83vob3rE54Duufu1edCiBDxspBzi2rxHHw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "lodash.isequal": "^4.5.0" + }, + "peerDependencies": { + "ethers": "^6.1.0", + "hardhat": "^2.0.0" + } + }, + "node_modules/@nomicfoundation/hardhat-foundry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-foundry/-/hardhat-foundry-1.1.1.tgz", + "integrity": "sha512-cXGCBHAiXas9Pg9MhMOpBVQCkWRYoRFG7GJJAph+sdQsfd22iRs5U5Vs9XmpGEQd1yEvYISQZMeE68Nxj65iUQ==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2" + }, + "peerDependencies": { + "hardhat": "^2.17.2" + } + }, + "node_modules/@nomicfoundation/hardhat-network-helpers": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.0.10.tgz", + "integrity": "sha512-R35/BMBlx7tWN5V6d/8/19QCwEmIdbnA4ZrsuXgvs8i2qFx5i7h6mH5pBS4Pwi4WigLH+upl6faYusrNPuzMrQ==", + "dev": true, + "peer": true, + "dependencies": { + "ethereumjs-util": "^7.1.4" + }, + "peerDependencies": { + "hardhat": "^2.9.5" + } + }, + "node_modules/@nomicfoundation/hardhat-toolbox": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-4.0.0.tgz", + "integrity": "sha512-jhcWHp0aHaL0aDYj8IJl80v4SZXWMS1A2XxXa1CA6pBiFfJKuZinCkO6wb+POAt0LIfXB3gA3AgdcOccrcwBwA==", + "dev": true, + "peerDependencies": { + "@nomicfoundation/hardhat-chai-matchers": "^2.0.0", + "@nomicfoundation/hardhat-ethers": "^3.0.0", + "@nomicfoundation/hardhat-network-helpers": "^1.0.0", + "@nomicfoundation/hardhat-verify": "^2.0.0", + "@typechain/ethers-v6": "^0.5.0", + "@typechain/hardhat": "^9.0.0", + "@types/chai": "^4.2.0", + "@types/mocha": ">=9.1.0", + "@types/node": ">=16.0.0", + "chai": "^4.2.0", + "ethers": "^6.4.0", + "hardhat": "^2.11.0", + "hardhat-gas-reporter": "^1.0.8", + "solidity-coverage": "^0.8.1", + "ts-node": ">=8.0.0", + "typechain": "^8.3.0", + "typescript": ">=4.5.0" + } + }, + "node_modules/@nomicfoundation/hardhat-verify": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-verify/-/hardhat-verify-2.0.3.tgz", + "integrity": "sha512-ESbRu9by53wu6VvgwtMtm108RSmuNsVqXtzg061D+/4R7jaWh/Wl/8ve+p6SdDX7vA1Z3L02hDO1Q3BY4luLXQ==", + "dev": true, + "peer": true, + "dependencies": { + "@ethersproject/abi": "^5.1.2", + "@ethersproject/address": "^5.0.2", + "cbor": "^8.1.0", + "chalk": "^2.4.2", + "debug": "^4.1.1", + "lodash.clonedeep": "^4.5.0", + "semver": "^6.3.0", + "table": "^6.8.0", + "undici": "^5.14.0" + }, + "peerDependencies": { + "hardhat": "^2.0.4" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.1.tgz", + "integrity": "sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg==", + "dev": true, + "engines": { + "node": ">= 12" + }, + "optionalDependencies": { + "@nomicfoundation/solidity-analyzer-darwin-arm64": "0.1.1", + "@nomicfoundation/solidity-analyzer-darwin-x64": "0.1.1", + "@nomicfoundation/solidity-analyzer-freebsd-x64": "0.1.1", + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": "0.1.1", + "@nomicfoundation/solidity-analyzer-linux-arm64-musl": "0.1.1", + "@nomicfoundation/solidity-analyzer-linux-x64-gnu": "0.1.1", + "@nomicfoundation/solidity-analyzer-linux-x64-musl": "0.1.1", + "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": "0.1.1", + "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": "0.1.1", + "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "0.1.1" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-darwin-arm64": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.1.tgz", + "integrity": "sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-darwin-x64": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.1.tgz", + "integrity": "sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-freebsd-x64": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-freebsd-x64/-/solidity-analyzer-freebsd-x64-0.1.1.tgz", + "integrity": "sha512-GHF1VKRdHW3G8CndkwdaeLkVBi5A9u2jwtlS7SLhBc8b5U/GcoL39Q+1CSO3hYqePNP+eV5YI7Zgm0ea6kMHoA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-linux-arm64-gnu": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.1.tgz", + "integrity": "sha512-g4Cv2fO37ZsUENQ2vwPnZc2zRenHyAxHcyBjKcjaSmmkKrFr64yvzeNO8S3GBFCo90rfochLs99wFVGT/0owpg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-linux-arm64-musl": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.1.tgz", + "integrity": "sha512-WJ3CE5Oek25OGE3WwzK7oaopY8xMw9Lhb0mlYuJl/maZVo+WtP36XoQTb7bW/i8aAdHW5Z+BqrHMux23pvxG3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-linux-x64-gnu": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.1.tgz", + "integrity": "sha512-5WN7leSr5fkUBBjE4f3wKENUy9HQStu7HmWqbtknfXkkil+eNWiBV275IOlpXku7v3uLsXTOKpnnGHJYI2qsdA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-linux-x64-musl": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.1.tgz", + "integrity": "sha512-KdYMkJOq0SYPQMmErv/63CwGwMm5XHenEna9X9aB8mQmhDBrYrlAOSsIPgFCUSL0hjxE3xHP65/EPXR/InD2+w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-win32-arm64-msvc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-arm64-msvc/-/solidity-analyzer-win32-arm64-msvc-0.1.1.tgz", + "integrity": "sha512-VFZASBfl4qiBYwW5xeY20exWhmv6ww9sWu/krWSesv3q5hA0o1JuzmPHR4LPN6SUZj5vcqci0O6JOL8BPw+APg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-win32-ia32-msvc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-ia32-msvc/-/solidity-analyzer-win32-ia32-msvc-0.1.1.tgz", + "integrity": "sha512-JnFkYuyCSA70j6Si6cS1A9Gh1aHTEb8kOTBApp/c7NRTFGNMH8eaInKlyuuiIbvYFhlXW4LicqyYuWNNq9hkpQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-win32-x64-msvc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.1.tgz", + "integrity": "sha512-HrVJr6+WjIXGnw3Q9u6KQcbZCtk0caVWhCdFADySvRyUxJ8PnzlaP+MhwNE8oyT8OZ6ejHBRrrgjSqDCFXGirw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@openzeppelin/defender-admin-client": { + "version": "1.54.1", + "resolved": "https://registry.npmjs.org/@openzeppelin/defender-admin-client/-/defender-admin-client-1.54.1.tgz", + "integrity": "sha512-kRpSUdTsnSqntp4FOXIm95t+6VKHc8CUY2Si71VDuxs0q7HSPZkdpRPSntcolwEzWy9L4a8NS/QMwDF5NJ4X1g==", + "dev": true, + "dependencies": { + "@openzeppelin/defender-base-client": "1.54.1", + "axios": "^1.4.0", + "ethers": "^5.7.2", + "lodash": "^4.17.19", + "node-fetch": "^2.6.0" + } + }, + "node_modules/@openzeppelin/defender-admin-client/node_modules/ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" + } + }, + "node_modules/@openzeppelin/defender-base-client": { + "version": "1.54.1", + "resolved": "https://registry.npmjs.org/@openzeppelin/defender-base-client/-/defender-base-client-1.54.1.tgz", + "integrity": "sha512-DRGz/7KN3ZQwu28YWMOaojrC7jjPkz/uCwkC8/C8B11qwZhA5qIVvyhYHhhFOCl0J84+E3TNdvkPD2q3p2WaJw==", + "dev": true, + "dependencies": { + "amazon-cognito-identity-js": "^6.0.1", + "async-retry": "^1.3.3", + "axios": "^1.4.0", + "lodash": "^4.17.19", + "node-fetch": "^2.6.0" + } + }, + "node_modules/@openzeppelin/defender-sdk-base-client": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@openzeppelin/defender-sdk-base-client/-/defender-sdk-base-client-1.8.0.tgz", + "integrity": "sha512-XIJat6BW2CTM74AwG5IL0Q/aE6RXj8x7smnVKmBql4wMvmirVW+njfwzZCLhUTiBXg9AlHxIInEF14SabfIisg==", + "dev": true, + "dependencies": { + "amazon-cognito-identity-js": "^6.3.6", + "async-retry": "^1.3.3" + } + }, + "node_modules/@openzeppelin/defender-sdk-deploy-client": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@openzeppelin/defender-sdk-deploy-client/-/defender-sdk-deploy-client-1.8.0.tgz", + "integrity": "sha512-/tNS2EnHuA5l095wzMbIkGMDNHZLcZQ2eLUP8z+AeKaAUeR2z4qzZ1ul21kR3EJURAyoy8aULFZanLggoBWHrA==", + "dev": true, + "dependencies": { + "@ethersproject/abi": "^5.7.0", + "@openzeppelin/defender-sdk-base-client": "^1.8.0", + "axios": "^1.4.0", + "lodash": "^4.17.21" + } + }, + "node_modules/@openzeppelin/hardhat-upgrades": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@openzeppelin/hardhat-upgrades/-/hardhat-upgrades-3.0.1.tgz", + "integrity": "sha512-NtD2/n2PKNqHBafQy3AM6KCvsDZD0w97po7fFa4wctl0fg/8QwGAg3fB8InkBFEhGn17+IgshRI8G94hUrFPcQ==", + "dev": true, + "dependencies": { + "@openzeppelin/defender-admin-client": "^1.52.0", + "@openzeppelin/defender-base-client": "^1.52.0", + "@openzeppelin/defender-sdk-base-client": "^1.8.0", + "@openzeppelin/defender-sdk-deploy-client": "^1.8.0", + "@openzeppelin/upgrades-core": "^1.32.0", + "chalk": "^4.1.0", + "debug": "^4.1.1", + "ethereumjs-util": "^7.1.5", + "proper-lockfile": "^4.1.1", + "undici": "^5.28.2" + }, + "bin": { + "migrate-oz-cli-project": "dist/scripts/migrate-oz-cli-project.js" + }, + "peerDependencies": { + "@nomicfoundation/hardhat-ethers": "^3.0.0", + "@nomicfoundation/hardhat-verify": "^2.0.0", + "ethers": "^6.6.0", + "hardhat": "^2.0.2" + }, + "peerDependenciesMeta": { + "@nomicfoundation/hardhat-verify": { + "optional": true + } + } + }, + "node_modules/@openzeppelin/hardhat-upgrades/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@openzeppelin/hardhat-upgrades/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@openzeppelin/hardhat-upgrades/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@openzeppelin/hardhat-upgrades/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@openzeppelin/hardhat-upgrades/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@openzeppelin/hardhat-upgrades/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@openzeppelin/upgrades-core": { + "version": "1.32.2", + "resolved": "https://registry.npmjs.org/@openzeppelin/upgrades-core/-/upgrades-core-1.32.2.tgz", + "integrity": "sha512-EkXriOHZfn6u00Tbq0zUuhHDeTQB9WyAZKZo3UeYdqULb7E3vqxZgxgXmWJwEzAb6E77DvprzQ4gwCAjMV/S4Q==", + "dev": true, + "dependencies": { + "cbor": "^9.0.0", + "chalk": "^4.1.0", + "compare-versions": "^6.0.0", + "debug": "^4.1.1", + "ethereumjs-util": "^7.0.3", + "minimist": "^1.2.7", + "proper-lockfile": "^4.1.1", + "solidity-ast": "^0.4.51" + }, + "bin": { + "openzeppelin-upgrades-core": "dist/cli/cli.js" + } + }, + "node_modules/@openzeppelin/upgrades-core/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@openzeppelin/upgrades-core/node_modules/cbor": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cbor/-/cbor-9.0.1.tgz", + "integrity": "sha512-/TQOWyamDxvVIv+DY9cOLNuABkoyz8K/F3QE56539pGVYohx0+MEA1f4lChFTX79dBTBS7R1PF6ovH7G+VtBfQ==", + "dev": true, + "dependencies": { + "nofilter": "^3.1.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@openzeppelin/upgrades-core/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@openzeppelin/upgrades-core/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@openzeppelin/upgrades-core/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@openzeppelin/upgrades-core/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@openzeppelin/upgrades-core/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@scure/base": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.5.tgz", + "integrity": "sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ==", + "dev": true, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.1.tgz", + "integrity": "sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==", + "dev": true, + "peer": true, + "dependencies": { + "@noble/curves": "~1.1.0", + "@noble/hashes": "~1.3.1", + "@scure/base": "~1.1.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32/node_modules/@noble/curves": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.1.0.tgz", + "integrity": "sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==", + "dev": true, + "peer": true, + "dependencies": { + "@noble/hashes": "1.3.1" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32/node_modules/@noble/hashes": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", + "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz", + "integrity": "sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==", + "dev": true, + "peer": true, + "dependencies": { + "@noble/hashes": "~1.3.0", + "@scure/base": "~1.1.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@sentry/core": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz", + "integrity": "sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==", + "dev": true, + "dependencies": { + "@sentry/hub": "5.30.0", + "@sentry/minimal": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/core/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@sentry/hub": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz", + "integrity": "sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==", + "dev": true, + "dependencies": { + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/hub/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@sentry/minimal": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz", + "integrity": "sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==", + "dev": true, + "dependencies": { + "@sentry/hub": "5.30.0", + "@sentry/types": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/minimal/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@sentry/node": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz", + "integrity": "sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==", + "dev": true, + "dependencies": { + "@sentry/core": "5.30.0", + "@sentry/hub": "5.30.0", + "@sentry/tracing": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "cookie": "^0.4.1", + "https-proxy-agent": "^5.0.0", + "lru_map": "^0.3.3", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/node/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@sentry/tracing": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz", + "integrity": "sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==", + "dev": true, + "dependencies": { + "@sentry/hub": "5.30.0", + "@sentry/minimal": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/tracing/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@sentry/types": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz", + "integrity": "sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/utils": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz", + "integrity": "sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==", + "dev": true, + "dependencies": { + "@sentry/types": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/utils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@smithy/types": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.8.0.tgz", + "integrity": "sha512-h9sz24cFgt/W1Re22OlhQKmUZkNh244ApgRsUDYinqF8R+QgcsBIX344u2j61TPshsTz3CvL6HYU1DnQdsSrHA==", + "dev": true, + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/types/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@solidity-parser/parser": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.5.tgz", + "integrity": "sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg==", + "dev": true, + "peer": true, + "dependencies": { + "antlr4ts": "^0.5.0-alpha.4" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true, + "peer": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true, + "peer": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true, + "peer": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true, + "peer": true + }, + "node_modules/@typechain/ethers-v6": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@typechain/ethers-v6/-/ethers-v6-0.5.1.tgz", + "integrity": "sha512-F+GklO8jBWlsaVV+9oHaPh5NJdd6rAKN4tklGfInX1Q7h0xPgVLP39Jl3eCulPB5qexI71ZFHwbljx4ZXNfouA==", + "dev": true, + "peer": true, + "dependencies": { + "lodash": "^4.17.15", + "ts-essentials": "^7.0.1" + }, + "peerDependencies": { + "ethers": "6.x", + "typechain": "^8.3.2", + "typescript": ">=4.7.0" + } + }, + "node_modules/@typechain/hardhat": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@typechain/hardhat/-/hardhat-9.1.0.tgz", + "integrity": "sha512-mtaUlzLlkqTlfPwB3FORdejqBskSnh+Jl8AIJGjXNAQfRQ4ofHADPl1+oU7Z3pAJzmZbUXII8MhOLQltcHgKnA==", + "dev": true, + "peer": true, + "dependencies": { + "fs-extra": "^9.1.0" + }, + "peerDependencies": { + "@typechain/ethers-v6": "^0.5.1", + "ethers": "^6.1.0", + "hardhat": "^2.9.9", + "typechain": "^8.3.2" + } + }, + "node_modules/@types/bn.js": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.5.tgz", + "integrity": "sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/chai": { + "version": "4.3.11", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.11.tgz", + "integrity": "sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==", + "dev": true, + "peer": true + }, + "node_modules/@types/chai-as-promised": { + "version": "7.1.8", + "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.8.tgz", + "integrity": "sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw==", + "dev": true, + "peer": true, + "dependencies": { + "@types/chai": "*" + } + }, + "node_modules/@types/concat-stream": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.1.tgz", + "integrity": "sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==", + "dev": true, + "peer": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/form-data": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz", + "integrity": "sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==", + "dev": true, + "peer": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "peer": true, + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", + "dev": true + }, + "node_modules/@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true, + "peer": true + }, + "node_modules/@types/mocha": { + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.6.tgz", + "integrity": "sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==", + "dev": true, + "peer": true + }, + "node_modules/@types/node": { + "version": "20.10.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.6.tgz", + "integrity": "sha512-Vac8H+NlRNNlAmDfGUP7b5h/KA+AtWIzuXy0E6OyP8f1tCLYAtPvKRRDJjAPqhpCb0t6U2j7/xqAuLEebW2kiw==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/prettier": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", + "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", + "dev": true, + "peer": true + }, + "node_modules/@types/qs": { + "version": "6.9.11", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.11.tgz", + "integrity": "sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==", + "dev": true, + "peer": true + }, + "node_modules/@types/readable-stream": { + "version": "2.3.15", + "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-2.3.15.tgz", + "integrity": "sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "safe-buffer": "~5.1.1" + } + }, + "node_modules/@types/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/@types/secp256k1": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.6.tgz", + "integrity": "sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/abbrev": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", + "integrity": "sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==", + "dev": true, + "peer": true + }, + "node_modules/abstract-level": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/abstract-level/-/abstract-level-1.0.3.tgz", + "integrity": "sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA==", + "dev": true, + "dependencies": { + "buffer": "^6.0.3", + "catering": "^2.1.0", + "is-buffer": "^2.0.5", + "level-supports": "^4.0.0", + "level-transcoder": "^1.0.1", + "module-error": "^1.0.1", + "queue-microtask": "^1.2.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true, + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.1.tgz", + "integrity": "sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/address": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/adm-zip": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", + "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", + "dev": true, + "engines": { + "node": ">=0.3.0" + } + }, + "node_modules/aes-js": { + "version": "4.0.0-beta.5", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", + "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==", + "dev": true + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/amazon-cognito-identity-js": { + "version": "6.3.7", + "resolved": "https://registry.npmjs.org/amazon-cognito-identity-js/-/amazon-cognito-identity-js-6.3.7.tgz", + "integrity": "sha512-tSjnM7KyAeOZ7UMah+oOZ6cW4Gf64FFcc7BE2l7MTcp7ekAPrXaCbpcW2xEpH1EiDS4cPcAouHzmCuc2tr72vQ==", + "dev": true, + "dependencies": { + "@aws-crypto/sha256-js": "1.2.2", + "buffer": "4.9.2", + "fast-base64-decode": "^1.0.0", + "isomorphic-unfetch": "^3.0.0", + "js-cookie": "^2.2.1" + } + }, + "node_modules/amazon-cognito-identity-js/node_modules/buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "node_modules/amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", + "dev": true, + "optional": true, + "peer": true, + "engines": { + "node": ">=0.4.2" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/antlr4ts": { + "version": "0.5.0-alpha.4", + "resolved": "https://registry.npmjs.org/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz", + "integrity": "sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==", + "dev": true, + "peer": true + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true, + "peer": true + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-back": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.3.tgz", + "integrity": "sha512-kcBubumjciBg4JKp5KTKtI7ec7tRefPk88yjkWJwaVKYd9QfTaxcsOxoMNKd7iBr447zCfDV0z1kOF47umv42g==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true, + "peer": true + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", + "dev": true, + "peer": true + }, + "node_modules/async-retry": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", + "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", + "dev": true, + "dependencies": { + "retry": "0.13.1" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axios": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.4.tgz", + "integrity": "sha512-heJnIs6N4aa1eSthhN9M5ioILu8Wi8vmQW9iHQ9NUvfkJb0lEEDUiIdQNAuBtfUt3FxReaKdpQA5DbmMOqzF/A==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.15.4", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base-x": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", + "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", + "dev": true + }, + "node_modules/bigint-crypto-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/bigint-crypto-utils/-/bigint-crypto-utils-3.3.0.tgz", + "integrity": "sha512-jOTSb+drvEDxEq6OuUybOAv/xxoh3cuYRUIPyu8sSHQNKM303UQ2R1DAo45o1AkcIXw6fzbaFI1+xGGdaXs2lg==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/blakejs": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", + "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", + "dev": true + }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true + }, + "node_modules/browser-level": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browser-level/-/browser-level-1.0.1.tgz", + "integrity": "sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ==", + "dev": true, + "dependencies": { + "abstract-level": "^1.0.2", + "catering": "^2.1.1", + "module-error": "^1.0.2", + "run-parallel-limit": "^1.1.0" + } + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dev": true, + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dev": true, + "dependencies": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/case": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/case/-/case-1.6.3.tgz", + "integrity": "sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true, + "peer": true + }, + "node_modules/catering": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/catering/-/catering-2.1.1.tgz", + "integrity": "sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cbor": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/cbor/-/cbor-8.1.0.tgz", + "integrity": "sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==", + "dev": true, + "peer": true, + "dependencies": { + "nofilter": "^3.1.0" + }, + "engines": { + "node": ">=12.19" + } + }, + "node_modules/chai": { + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", + "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", + "dev": true, + "peer": true, + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.0.8" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chai-as-promised": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", + "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", + "dev": true, + "peer": true, + "dependencies": { + "check-error": "^1.0.2" + }, + "peerDependencies": { + "chai": ">= 2.1.2 < 5" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + "dev": true, + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dev": true, + "peer": true, + "dependencies": { + "get-func-name": "^2.0.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/classic-level": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/classic-level/-/classic-level-1.3.0.tgz", + "integrity": "sha512-iwFAJQYtqRTRM0F6L8h4JCt00ZSGdOyqh7yVrhhjrOpFhmBjNlRUey64MCiyo6UmQHMJ+No3c81nujPv+n9yrg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "abstract-level": "^1.0.2", + "catering": "^2.1.0", + "module-error": "^1.0.1", + "napi-macros": "^2.2.2", + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-table3": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", + "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==", + "dev": true, + "peer": true, + "dependencies": { + "object-assign": "^4.1.0", + "string-width": "^2.1.1" + }, + "engines": { + "node": ">=6" + }, + "optionalDependencies": { + "colors": "^1.1.2" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", + "dev": true + }, + "node_modules/command-line-args": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", + "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", + "dev": true, + "peer": true, + "dependencies": { + "array-back": "^3.1.0", + "find-replace": "^3.0.0", + "lodash.camelcase": "^4.3.0", + "typical": "^4.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/command-line-usage": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz", + "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==", + "dev": true, + "peer": true, + "dependencies": { + "array-back": "^4.0.2", + "chalk": "^2.4.2", + "table-layout": "^1.0.2", + "typical": "^5.2.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/command-line-usage/node_modules/array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/command-line-usage/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/commander": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", + "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", + "dev": true + }, + "node_modules/compare-versions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-6.1.0.tgz", + "integrity": "sha512-LNZQXhqUvqUTotpZ00qLSaify3b4VFD588aRr8MKFw4CMUr98ytzCW5wDH5qx/DEY5kCDXcbcRuCqL0szEf2tg==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "engines": [ + "node >= 0.8" + ], + "peer": true, + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "peer": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/concat-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "peer": true + }, + "node_modules/concat-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "peer": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true, + "peer": true + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "dev": true, + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true, + "peer": true + }, + "node_modules/crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", + "dev": true, + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/death": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/death/-/death-1.1.0.tgz", + "integrity": "sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w==", + "dev": true, + "peer": true + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "dev": true, + "peer": true, + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "peer": true + }, + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/detect-port": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz", + "integrity": "sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==", + "dev": true, + "peer": true, + "dependencies": { + "address": "^1.0.1", + "debug": "4" + }, + "bin": { + "detect": "bin/detect-port.js", + "detect-port": "bin/detect-port.js" + } + }, + "node_modules/diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/difflib": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/difflib/-/difflib-0.2.4.tgz", + "integrity": "sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==", + "dev": true, + "peer": true, + "dependencies": { + "heap": ">= 0.2.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "peer": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dotenv": { + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", + "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/motdotla/dotenv?sponsor=1" + } + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/enquirer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/es-abstract": { + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.5", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.2", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.12", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/escodegen": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", + "integrity": "sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A==", + "dev": true, + "peer": true, + "dependencies": { + "esprima": "^2.7.1", + "estraverse": "^1.9.1", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=0.12.0" + }, + "optionalDependencies": { + "source-map": "~0.2.0" + } + }, + "node_modules/esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==", + "dev": true, + "peer": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/estraverse": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "integrity": "sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eth-gas-reporter": { + "version": "0.2.27", + "resolved": "https://registry.npmjs.org/eth-gas-reporter/-/eth-gas-reporter-0.2.27.tgz", + "integrity": "sha512-femhvoAM7wL0GcI8ozTdxfuBtBFJ9qsyIAsmKVjlWAHUbdnnXHt+lKzz/kmldM5lA9jLuNHGwuIxorNpLbR1Zw==", + "dev": true, + "peer": true, + "dependencies": { + "@solidity-parser/parser": "^0.14.0", + "axios": "^1.5.1", + "cli-table3": "^0.5.0", + "colors": "1.4.0", + "ethereum-cryptography": "^1.0.3", + "ethers": "^5.7.2", + "fs-readdir-recursive": "^1.1.0", + "lodash": "^4.17.14", + "markdown-table": "^1.1.3", + "mocha": "^10.2.0", + "req-cwd": "^2.0.0", + "sha1": "^1.1.1", + "sync-request": "^6.0.0" + }, + "peerDependencies": { + "@codechecks/client": "^0.1.0" + }, + "peerDependenciesMeta": { + "@codechecks/client": { + "optional": true + } + } + }, + "node_modules/eth-gas-reporter/node_modules/@noble/hashes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", + "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "peer": true + }, + "node_modules/eth-gas-reporter/node_modules/@scure/bip32": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", + "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "peer": true, + "dependencies": { + "@noble/hashes": "~1.2.0", + "@noble/secp256k1": "~1.7.0", + "@scure/base": "~1.1.0" + } + }, + "node_modules/eth-gas-reporter/node_modules/@scure/bip39": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", + "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "peer": true, + "dependencies": { + "@noble/hashes": "~1.2.0", + "@scure/base": "~1.1.0" + } + }, + "node_modules/eth-gas-reporter/node_modules/ethereum-cryptography": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz", + "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", + "dev": true, + "peer": true, + "dependencies": { + "@noble/hashes": "1.2.0", + "@noble/secp256k1": "1.7.1", + "@scure/bip32": "1.1.5", + "@scure/bip39": "1.1.1" + } + }, + "node_modules/eth-gas-reporter/node_modules/ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "peer": true, + "dependencies": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" + } + }, + "node_modules/ethereum-bloom-filters": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz", + "integrity": "sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==", + "dev": true, + "peer": true, + "dependencies": { + "js-sha3": "^0.8.0" + } + }, + "node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/ethereumjs-abi": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz", + "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.8", + "ethereumjs-util": "^6.0.0" + } + }, + "node_modules/ethereumjs-abi/node_modules/@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/ethereumjs-abi/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/ethereumjs-abi/node_modules/ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "dev": true, + "dependencies": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + }, + "node_modules/ethereumjs-util": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", + "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", + "dev": true, + "dependencies": { + "@types/bn.js": "^5.1.0", + "bn.js": "^5.1.2", + "create-hash": "^1.1.2", + "ethereum-cryptography": "^0.1.3", + "rlp": "^2.2.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/ethers": { + "version": "6.9.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.9.2.tgz", + "integrity": "sha512-YpkrtILnMQz5jSEsJQRTpduaGT/CXuLnUIuOYzHA0v/7c8IX91m2J48wSKjzGL5L9J/Us3tLoUdb+OwE3U+FFQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/ethers-io/" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@adraffy/ens-normalize": "1.10.0", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "18.15.13", + "aes-js": "4.0.0-beta.5", + "tslib": "2.4.0", + "ws": "8.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/ethers/node_modules/@types/node": { + "version": "18.15.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", + "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==", + "dev": true + }, + "node_modules/ethjs-unit": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", + "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", + "dev": true, + "peer": true, + "dependencies": { + "bn.js": "4.11.6", + "number-to-bn": "1.7.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/ethjs-unit/node_modules/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", + "dev": true, + "peer": true + }, + "node_modules/ethjs-util": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", + "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", + "dev": true, + "dependencies": { + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/fast-base64-decode": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-base64-decode/-/fast-base64-decode-1.0.0.tgz", + "integrity": "sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q==", + "dev": true + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "peer": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "peer": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "peer": true + }, + "node_modules/fastq": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz", + "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==", + "dev": true, + "peer": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-replace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", + "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", + "dev": true, + "peer": true, + "dependencies": { + "array-back": "^3.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", + "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fp-ts": { + "version": "1.19.3", + "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz", + "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==", + "dev": true + }, + "node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "peer": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "dev": true, + "peer": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "dev": true, + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ghost-testrpc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/ghost-testrpc/-/ghost-testrpc-0.0.2.tgz", + "integrity": "sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ==", + "dev": true, + "peer": true, + "dependencies": { + "chalk": "^2.4.2", + "node-emoji": "^1.10.0" + }, + "bin": { + "testrpc-sc": "index.js" + } + }, + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dev": true, + "peer": true, + "dependencies": { + "global-prefix": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dev": true, + "peer": true, + "dependencies": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", + "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", + "dev": true, + "peer": true, + "dependencies": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "dev": true, + "peer": true, + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/handlebars/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hardhat": { + "version": "2.19.4", + "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.19.4.tgz", + "integrity": "sha512-fTQJpqSt3Xo9Mn/WrdblNGAfcANM6XC3tAEi6YogB4s02DmTf93A8QsGb8uR0KR8TFcpcS8lgiW4ugAIYpnbrQ==", + "dev": true, + "dependencies": { + "@ethersproject/abi": "^5.1.2", + "@metamask/eth-sig-util": "^4.0.0", + "@nomicfoundation/ethereumjs-block": "5.0.2", + "@nomicfoundation/ethereumjs-blockchain": "7.0.2", + "@nomicfoundation/ethereumjs-common": "4.0.2", + "@nomicfoundation/ethereumjs-evm": "2.0.2", + "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "@nomicfoundation/ethereumjs-statemanager": "2.0.2", + "@nomicfoundation/ethereumjs-trie": "6.0.2", + "@nomicfoundation/ethereumjs-tx": "5.0.2", + "@nomicfoundation/ethereumjs-util": "9.0.2", + "@nomicfoundation/ethereumjs-vm": "7.0.2", + "@nomicfoundation/solidity-analyzer": "^0.1.0", + "@sentry/node": "^5.18.1", + "@types/bn.js": "^5.1.0", + "@types/lru-cache": "^5.1.0", + "adm-zip": "^0.4.16", + "aggregate-error": "^3.0.0", + "ansi-escapes": "^4.3.0", + "chalk": "^2.4.2", + "chokidar": "^3.4.0", + "ci-info": "^2.0.0", + "debug": "^4.1.1", + "enquirer": "^2.3.0", + "env-paths": "^2.2.0", + "ethereum-cryptography": "^1.0.3", + "ethereumjs-abi": "^0.6.8", + "find-up": "^2.1.0", + "fp-ts": "1.19.3", + "fs-extra": "^7.0.1", + "glob": "7.2.0", + "immutable": "^4.0.0-rc.12", + "io-ts": "1.10.4", + "keccak": "^3.0.2", + "lodash": "^4.17.11", + "mnemonist": "^0.38.0", + "mocha": "^10.0.0", + "p-map": "^4.0.0", + "raw-body": "^2.4.1", + "resolve": "1.17.0", + "semver": "^6.3.0", + "solc": "0.7.3", + "source-map-support": "^0.5.13", + "stacktrace-parser": "^0.1.10", + "tsort": "0.0.1", + "undici": "^5.14.0", + "uuid": "^8.3.2", + "ws": "^7.4.6" + }, + "bin": { + "hardhat": "internal/cli/bootstrap.js" + }, + "peerDependencies": { + "ts-node": "*", + "typescript": "*" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/hardhat-gas-reporter": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.9.tgz", + "integrity": "sha512-INN26G3EW43adGKBNzYWOlI3+rlLnasXTwW79YNnUhXPDa+yHESgt639dJEs37gCjhkbNKcRRJnomXEuMFBXJg==", + "dev": true, + "peer": true, + "dependencies": { + "array-uniq": "1.0.3", + "eth-gas-reporter": "^0.2.25", + "sha1": "^1.1.1" + }, + "peerDependencies": { + "hardhat": "^2.0.2" + } + }, + "node_modules/hardhat/node_modules/@noble/hashes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", + "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/hardhat/node_modules/@scure/bip32": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", + "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "@noble/hashes": "~1.2.0", + "@noble/secp256k1": "~1.7.0", + "@scure/base": "~1.1.0" + } + }, + "node_modules/hardhat/node_modules/@scure/bip39": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", + "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "@noble/hashes": "~1.2.0", + "@scure/base": "~1.1.0" + } + }, + "node_modules/hardhat/node_modules/ethereum-cryptography": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz", + "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", + "dev": true, + "dependencies": { + "@noble/hashes": "1.2.0", + "@noble/secp256k1": "1.7.1", + "@scure/bip32": "1.1.5", + "@scure/bip39": "1.1.1" + } + }, + "node_modules/hardhat/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/hardhat/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/hardhat/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/hardhat/node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/heap": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", + "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==", + "dev": true, + "peer": true + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/http-basic": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/http-basic/-/http-basic-8.1.3.tgz", + "integrity": "sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw==", + "dev": true, + "peer": true, + "dependencies": { + "caseless": "^0.12.0", + "concat-stream": "^1.6.2", + "http-response-object": "^3.0.1", + "parse-cache-control": "^1.0.1" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-response-object": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz", + "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==", + "dev": true, + "peer": true, + "dependencies": { + "@types/node": "^10.0.3" + } + }, + "node_modules/http-response-object/node_modules/@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", + "dev": true, + "peer": true + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/immutable": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", + "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==", + "dev": true + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "peer": true + }, + "node_modules/internal-slot": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/io-ts": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz", + "integrity": "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==", + "dev": true, + "dependencies": { + "fp-ts": "^1.0.0" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hex-prefixed": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", + "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", + "dev": true, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "peer": true + }, + "node_modules/isomorphic-unfetch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz", + "integrity": "sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==", + "dev": true, + "dependencies": { + "node-fetch": "^2.6.1", + "unfetch": "^4.2.0" + } + }, + "node_modules/js-cookie": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz", + "integrity": "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==", + "dev": true + }, + "node_modules/js-sdsl": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.2.tgz", + "integrity": "sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, + "node_modules/js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "peer": true + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "peer": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonschema": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz", + "integrity": "sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==", + "dev": true, + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/keccak": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.4.tgz", + "integrity": "sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.9" + } + }, + "node_modules/level": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/level/-/level-8.0.0.tgz", + "integrity": "sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ==", + "dev": true, + "dependencies": { + "browser-level": "^1.0.1", + "classic-level": "^1.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/level" + } + }, + "node_modules/level-supports": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-4.0.1.tgz", + "integrity": "sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/level-transcoder": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/level-transcoder/-/level-transcoder-1.0.1.tgz", + "integrity": "sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==", + "dev": true, + "dependencies": { + "buffer": "^6.0.3", + "module-error": "^1.0.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "peer": true, + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true, + "peer": true + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "dev": true, + "peer": true + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "dev": true + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true, + "peer": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "dev": true, + "peer": true, + "dependencies": { + "get-func-name": "^2.0.1" + } + }, + "node_modules/lru_map": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", + "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true, + "peer": true + }, + "node_modules/markdown-table": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz", + "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==", + "dev": true, + "peer": true + }, + "node_modules/mcl-wasm": { + "version": "0.7.9", + "resolved": "https://registry.npmjs.org/mcl-wasm/-/mcl-wasm-0.7.9.tgz", + "integrity": "sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ==", + "dev": true, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/memory-level": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/memory-level/-/memory-level-1.0.0.tgz", + "integrity": "sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og==", + "dev": true, + "dependencies": { + "abstract-level": "^1.0.0", + "functional-red-black-tree": "^1.0.1", + "module-error": "^1.0.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micro-ftch": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/micro-ftch/-/micro-ftch-0.3.1.tgz", + "integrity": "sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==", + "dev": true, + "peer": true + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "peer": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "peer": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mnemonist": { + "version": "0.38.5", + "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz", + "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==", + "dev": true, + "dependencies": { + "obliterator": "^2.0.0" + } + }, + "node_modules/mocha": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", + "dev": true, + "dependencies": { + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.4", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", + "ms": "2.1.3", + "nanoid": "3.3.3", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "workerpool": "6.2.1", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": ">= 14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/mocha/node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mocha/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/mocha/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/mocha/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/mocha/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/module-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/module-error/-/module-error-1.0.2.tgz", + "integrity": "sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/napi-macros": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.2.2.tgz", + "integrity": "sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==", + "dev": true + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, + "peer": true + }, + "node_modules/node-addon-api": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", + "dev": true + }, + "node_modules/node-emoji": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", + "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", + "dev": true, + "peer": true, + "dependencies": { + "lodash": "^4.17.21" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-gyp-build": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.7.1.tgz", + "integrity": "sha512-wTSrZ+8lsRRa3I3H8Xr65dLWSgCvY2l4AOnaeKdPA9TB/WYMPaTcrzf3rXvFoVvjKNVnu0CcWSx54qq9GKRUYg==", + "dev": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/nofilter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", + "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==", + "dev": true, + "engines": { + "node": ">=12.19" + } + }, + "node_modules/nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", + "dev": true, + "peer": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/number-to-bn": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", + "integrity": "sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==", + "dev": true, + "peer": true, + "dependencies": { + "bn.js": "4.11.6", + "strip-hex-prefix": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/number-to-bn/node_modules/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", + "dev": true, + "peer": true + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obliterator": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz", + "integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==", + "dev": true + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "peer": true, + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ordinal": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ordinal/-/ordinal-1.0.3.tgz", + "integrity": "sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ==", + "dev": true, + "peer": true + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/parse-cache-control": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz", + "integrity": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==", + "dev": true, + "peer": true + }, + "node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "peer": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true, + "peer": true + }, + "node_modules/promise": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "dev": true, + "peer": true, + "dependencies": { + "asap": "~2.0.6" + } + }, + "node_modules/proper-lockfile": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", + "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "retry": "^0.12.0", + "signal-exit": "^3.0.2" + } + }, + "node_modules/proper-lockfile/node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "dev": true, + "peer": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dev": true, + "peer": true, + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/recursive-readdir": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", + "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", + "dev": true, + "peer": true, + "dependencies": { + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/reduce-flatten": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", + "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/req-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/req-cwd/-/req-cwd-2.0.0.tgz", + "integrity": "sha512-ueoIoLo1OfB6b05COxAA9UpeoscNpYyM+BqYlA7H6LVF4hKGPXQQSSaD2YmvDVJMkk4UDpAHIeU1zG53IqjvlQ==", + "dev": true, + "peer": true, + "dependencies": { + "req-from": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/req-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/req-from/-/req-from-2.0.0.tgz", + "integrity": "sha512-LzTfEVDVQHBRfjOUMgNBA+V6DWsSnoeKzf42J7l0xa/B4jyPOuuF5MlNSmomLNGemWTnV2TIdjSSLnEn95fOQA==", + "dev": true, + "peer": true, + "dependencies": { + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "peer": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/rlp": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", + "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", + "dev": true, + "dependencies": { + "bn.js": "^5.2.0" + }, + "bin": { + "rlp": "bin/rlp" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "peer": true, + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/run-parallel-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz", + "integrity": "sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rustbn.js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz", + "integrity": "sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==", + "dev": true + }, + "node_modules/safe-array-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/sc-istanbul": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/sc-istanbul/-/sc-istanbul-0.4.6.tgz", + "integrity": "sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g==", + "dev": true, + "peer": true, + "dependencies": { + "abbrev": "1.0.x", + "async": "1.x", + "escodegen": "1.8.x", + "esprima": "2.7.x", + "glob": "^5.0.15", + "handlebars": "^4.0.1", + "js-yaml": "3.x", + "mkdirp": "0.5.x", + "nopt": "3.x", + "once": "1.x", + "resolve": "1.1.x", + "supports-color": "^3.1.0", + "which": "^1.1.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "istanbul": "lib/cli.js" + } + }, + "node_modules/sc-istanbul/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "peer": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/sc-istanbul/node_modules/glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==", + "dev": true, + "peer": true, + "dependencies": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/sc-istanbul/node_modules/has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sc-istanbul/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "peer": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/sc-istanbul/node_modules/js-yaml/node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "peer": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/sc-istanbul/node_modules/resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==", + "dev": true, + "peer": true + }, + "node_modules/sc-istanbul/node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^1.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", + "dev": true + }, + "node_modules/secp256k1": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "elliptic": "^6.5.4", + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/sha1": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz", + "integrity": "sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==", + "dev": true, + "peer": true, + "dependencies": { + "charenc": ">= 0.0.1", + "crypt": ">= 0.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "dev": true, + "peer": true, + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/slice-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "peer": true + }, + "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/solc": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.7.3.tgz", + "integrity": "sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==", + "dev": true, + "dependencies": { + "command-exists": "^1.2.8", + "commander": "3.0.2", + "follow-redirects": "^1.12.1", + "fs-extra": "^0.30.0", + "js-sha3": "0.8.0", + "memorystream": "^0.3.1", + "require-from-string": "^2.0.0", + "semver": "^5.5.0", + "tmp": "0.0.33" + }, + "bin": { + "solcjs": "solcjs" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/solc/node_modules/fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" + } + }, + "node_modules/solc/node_modules/jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/solc/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/solidity-ast": { + "version": "0.4.55", + "resolved": "https://registry.npmjs.org/solidity-ast/-/solidity-ast-0.4.55.tgz", + "integrity": "sha512-qeEU/r/K+V5lrAw8iswf2/yfWAnSGs3WKPHI+zAFKFjX0dIBVXEU/swQ8eJQYHf6PJWUZFO2uWV4V1wEOkeQbA==", + "dev": true, + "dependencies": { + "array.prototype.findlast": "^1.2.2" + } + }, + "node_modules/solidity-coverage": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.8.5.tgz", + "integrity": "sha512-6C6N6OV2O8FQA0FWA95FdzVH+L16HU94iFgg5wAFZ29UpLFkgNI/DRR2HotG1bC0F4gAc/OMs2BJI44Q/DYlKQ==", + "dev": true, + "peer": true, + "dependencies": { + "@ethersproject/abi": "^5.0.9", + "@solidity-parser/parser": "^0.16.0", + "chalk": "^2.4.2", + "death": "^1.1.0", + "detect-port": "^1.3.0", + "difflib": "^0.2.4", + "fs-extra": "^8.1.0", + "ghost-testrpc": "^0.0.2", + "global-modules": "^2.0.0", + "globby": "^10.0.1", + "jsonschema": "^1.2.4", + "lodash": "^4.17.15", + "mocha": "10.2.0", + "node-emoji": "^1.10.0", + "pify": "^4.0.1", + "recursive-readdir": "^2.2.2", + "sc-istanbul": "^0.4.5", + "semver": "^7.3.4", + "shelljs": "^0.8.3", + "web3-utils": "^1.3.6" + }, + "bin": { + "solidity-coverage": "plugins/bin.js" + }, + "peerDependencies": { + "hardhat": "^2.11.0" + } + }, + "node_modules/solidity-coverage/node_modules/@solidity-parser/parser": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.16.2.tgz", + "integrity": "sha512-PI9NfoA3P8XK2VBkK5oIfRgKDsicwDZfkVq9ZTBCQYGOP1N2owgY2dyLGyU5/J/hQs8KRk55kdmvTLjy3Mu3vg==", + "dev": true, + "peer": true, + "dependencies": { + "antlr4ts": "^0.5.0-alpha.4" + } + }, + "node_modules/solidity-coverage/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "peer": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/solidity-coverage/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "peer": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/solidity-coverage/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "peer": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/solidity-coverage/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "peer": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/solidity-coverage/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/solidity-coverage/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "peer": true + }, + "node_modules/source-map": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", + "integrity": "sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "amdefine": ">=0.0.4" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "peer": true + }, + "node_modules/stacktrace-parser": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", + "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", + "dev": true, + "dependencies": { + "type-fest": "^0.7.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/stacktrace-parser/node_modules/type-fest": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", + "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-format": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz", + "integrity": "sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==", + "dev": true, + "peer": true + }, + "node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "peer": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-hex-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", + "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", + "dev": true, + "dependencies": { + "is-hex-prefixed": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/sync-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/sync-request/-/sync-request-6.1.0.tgz", + "integrity": "sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw==", + "dev": true, + "peer": true, + "dependencies": { + "http-response-object": "^3.0.1", + "sync-rpc": "^1.2.1", + "then-request": "^6.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/sync-rpc": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/sync-rpc/-/sync-rpc-1.3.6.tgz", + "integrity": "sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==", + "dev": true, + "peer": true, + "dependencies": { + "get-port": "^3.1.0" + } + }, + "node_modules/table": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", + "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "dev": true, + "peer": true, + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table-layout": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", + "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", + "dev": true, + "peer": true, + "dependencies": { + "array-back": "^4.0.1", + "deep-extend": "~0.6.0", + "typical": "^5.2.0", + "wordwrapjs": "^4.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/table-layout/node_modules/array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/table-layout/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/table/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/table/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "peer": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/then-request": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/then-request/-/then-request-6.0.2.tgz", + "integrity": "sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==", + "dev": true, + "peer": true, + "dependencies": { + "@types/concat-stream": "^1.6.0", + "@types/form-data": "0.0.33", + "@types/node": "^8.0.0", + "@types/qs": "^6.2.31", + "caseless": "~0.12.0", + "concat-stream": "^1.6.0", + "form-data": "^2.2.0", + "http-basic": "^8.1.1", + "http-response-object": "^3.0.1", + "promise": "^8.0.0", + "qs": "^6.4.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/then-request/node_modules/@types/node": { + "version": "8.10.66", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz", + "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==", + "dev": true, + "peer": true + }, + "node_modules/then-request/node_modules/form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "dev": true, + "peer": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "node_modules/ts-command-line-args": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz", + "integrity": "sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw==", + "dev": true, + "peer": true, + "dependencies": { + "chalk": "^4.1.0", + "command-line-args": "^5.1.1", + "command-line-usage": "^6.1.0", + "string-format": "^2.0.0" + }, + "bin": { + "write-markdown": "dist/write-markdown.js" + } + }, + "node_modules/ts-command-line-args/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ts-command-line-args/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ts-command-line-args/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ts-command-line-args/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "peer": true + }, + "node_modules/ts-command-line-args/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-command-line-args/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-essentials": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-7.0.3.tgz", + "integrity": "sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==", + "dev": true, + "peer": true, + "peerDependencies": { + "typescript": ">=3.7.0" + } + }, + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "dev": true, + "peer": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node/node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/tsort": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz", + "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==", + "dev": true + }, + "node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "dev": true + }, + "node_modules/tweetnacl-util": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", + "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "peer": true, + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typechain": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/typechain/-/typechain-8.3.2.tgz", + "integrity": "sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q==", + "dev": true, + "peer": true, + "dependencies": { + "@types/prettier": "^2.1.1", + "debug": "^4.3.1", + "fs-extra": "^7.0.0", + "glob": "7.1.7", + "js-sha3": "^0.8.0", + "lodash": "^4.17.15", + "mkdirp": "^1.0.4", + "prettier": "^2.3.1", + "ts-command-line-args": "^2.2.0", + "ts-essentials": "^7.0.1" + }, + "bin": { + "typechain": "dist/cli/cli.js" + }, + "peerDependencies": { + "typescript": ">=4.3.0" + } + }, + "node_modules/typechain/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "peer": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/typechain/node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "peer": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/typechain/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "peer": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/typechain/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "peer": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/typechain/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true, + "peer": true + }, + "node_modules/typescript": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "dev": true, + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typical": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", + "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "dev": true, + "optional": true, + "peer": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici": { + "version": "5.28.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.2.tgz", + "integrity": "sha512-wh1pHJHnUeQV5Xa8/kyQhO7WFa8M34l026L5P/+2TYiakvGy5Rdc8jWZVyG7ieht/0WgJLEd3kcU5gKx+6GC8w==", + "dev": true, + "dependencies": { + "@fastify/busboy": "^2.0.0" + }, + "engines": { + "node": ">=14.0" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/unfetch": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz", + "integrity": "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==", + "dev": true + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "peer": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", + "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==", + "dev": true, + "peer": true + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true, + "peer": true + }, + "node_modules/web3-utils": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.3.tgz", + "integrity": "sha512-OqcUrEE16fDBbGoQtZXWdavsPzbGIDc5v3VrRTZ0XrIpefC/viZ1ZU9bGEemazyS0catk/3rkOOxpzTfY+XsyQ==", + "dev": true, + "peer": true, + "dependencies": { + "@ethereumjs/util": "^8.1.0", + "bn.js": "^5.2.1", + "ethereum-bloom-filters": "^1.0.6", + "ethereum-cryptography": "^2.1.2", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-utils/node_modules/@noble/curves": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.1.0.tgz", + "integrity": "sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==", + "dev": true, + "peer": true, + "dependencies": { + "@noble/hashes": "1.3.1" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/web3-utils/node_modules/@noble/hashes": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", + "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/web3-utils/node_modules/ethereum-cryptography": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.1.2.tgz", + "integrity": "sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug==", + "dev": true, + "peer": true, + "dependencies": { + "@noble/curves": "1.1.0", + "@noble/hashes": "1.3.1", + "@scure/bip32": "1.3.1", + "@scure/bip39": "1.2.1" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "peer": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.4", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true, + "peer": true + }, + "node_modules/wordwrapjs": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", + "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", + "dev": true, + "peer": true, + "dependencies": { + "reduce-flatten": "^2.0.0", + "typical": "^5.2.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/wordwrapjs/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/workerpool": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..0eac360 --- /dev/null +++ b/package.json @@ -0,0 +1,24 @@ +{ + "name": "options-token", + "version": "1.0.0", + "description": "An options token representing the right to purchase the underlying token at an oracle-specified rate. It's similar to a call option but with a variable strike price that's always at a certain discount to the market price. It also has no expiry date.", + "main": "index.js", + "directories": { + "lib": "lib", + "test": "test" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "AGPL-3.0", + "devDependencies": { + "@nomicfoundation/hardhat-ethers": "^3.0.5", + "@nomicfoundation/hardhat-foundry": "^1.1.1", + "@nomicfoundation/hardhat-toolbox": "^4.0.0", + "@openzeppelin/hardhat-upgrades": "^3.0.1", + "dotenv": "^16.3.1", + "ethers": "^6.9.2", + "hardhat": "^2.19.4" + } +} diff --git a/script/Deploy.s.sol b/script/Deploy.s.sol deleted file mode 100644 index b577ed7..0000000 --- a/script/Deploy.s.sol +++ /dev/null @@ -1,60 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0 -pragma solidity ^0.8.13; - -import {ERC20} from "solmate/tokens/ERC20.sol"; - -import {OptionsToken} from "../src/OptionsToken.sol"; -import {CREATE3Script} from "./base/CREATE3Script.sol"; -import {BalancerOracle} from "../src/oracles/BalancerOracle.sol"; -import {IERC20Mintable} from "../src/interfaces/IERC20Mintable.sol"; -import {IBalancerTwapOracle} from "../src/interfaces/IBalancerTwapOracle.sol"; - -contract DeployScript is CREATE3Script { - constructor() CREATE3Script(vm.envString("VERSION")) {} - - function run() public returns (OptionsToken optionsToken, BalancerOracle oracle) { - uint256 deployerPrivateKey = uint256(vm.envBytes32("PRIVATE_KEY")); - - vm.startBroadcast(deployerPrivateKey); - - { - IBalancerTwapOracle balancerPriceOracle = IBalancerTwapOracle(vm.envAddress("BALANCER_POOL")); - address owner = vm.envAddress("OWNER"); - uint16 multiplier = uint16(vm.envUint("ORACLE_MULTIPLIER")); - uint56 secs = uint56(vm.envUint("ORACLE_SECS")); - uint56 ago = uint56(vm.envUint("ORACLE_AGO")); - uint128 minPrice = uint128(vm.envUint("ORACLE_MIN_PRICE")); - - oracle = BalancerOracle( - create3.deploy( - getCreate3ContractSalt("BalancerOracle"), - bytes.concat( - type(BalancerOracle).creationCode, - abi.encode(balancerPriceOracle, owner, multiplier, secs, ago, minPrice) - ) - ) - ); - } - - { - string memory name = vm.envString("OT_NAME"); - string memory symbol = vm.envString("OT_SYMBOL"); - address owner = vm.envAddress("OWNER"); - address tokenAdmin = getCreate3Contract("TokenAdmin"); - ERC20 paymentToken = ERC20(vm.envAddress("OT_PAYMENT_TOKEN")); - IERC20Mintable underlyingToken = IERC20Mintable(getCreate3Contract("TimelessToken")); - address treasury = vm.envAddress("TREASURY"); - bytes memory constructorParams = - abi.encode(name, symbol, owner, tokenAdmin, paymentToken, underlyingToken, oracle, treasury); - - optionsToken = OptionsToken( - create3.deploy( - getCreate3ContractSalt("OptionsToken"), - bytes.concat(type(OptionsToken).creationCode, constructorParams) - ) - ); - } - - vm.stopBroadcast(); - } -} diff --git a/script/base/CREATE3Script.sol b/script/base/CREATE3Script.sol deleted file mode 100644 index f058af1..0000000 --- a/script/base/CREATE3Script.sol +++ /dev/null @@ -1,27 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0 -pragma solidity ^0.8.13; - -import {CREATE3Factory} from "create3-factory/CREATE3Factory.sol"; - -import "forge-std/Script.sol"; - -abstract contract CREATE3Script is Script { - CREATE3Factory internal constant create3 = CREATE3Factory(0x9fBB3DF7C40Da2e5A0dE984fFE2CCB7C47cd0ABf); - - string internal version; - - constructor(string memory version_) { - version = version_; - } - - function getCreate3Contract(string memory name) internal view virtual returns (address) { - uint256 deployerPrivateKey = uint256(vm.envBytes32("PRIVATE_KEY")); - address deployer = vm.addr(deployerPrivateKey); - - return create3.getDeployed(deployer, getCreate3ContractSalt(name)); - } - - function getCreate3ContractSalt(string memory name) internal view virtual returns (bytes32) { - return keccak256(bytes(string.concat(name, "-v", version))); - } -} diff --git a/scripts/deploy.ts b/scripts/deploy.ts new file mode 100644 index 0000000..ba79ada --- /dev/null +++ b/scripts/deploy.ts @@ -0,0 +1,66 @@ +import { ethers, upgrades } from "hardhat"; +import { getImplementationAddress } from '@openzeppelin/upgrades-core'; + +async function main() { + const thenaPair = process.env.ORACLE_SOURCE; + const targetToken = process.env.OT_UNDERLYING_TOKEN; + const owner = process.env.OWNER; + const secs = process.env.ORACLE_SECS; + const minPrice = process.env.ORACLE_MIN_PRICE; + + const oracle = await ethers.deployContract( + "ThenaOracle", + [thenaPair, targetToken, owner, secs, minPrice] + ); + await oracle.waitForDeployment(); + console.log(`Oracle deployed to: ${await oracle.getAddress()}`); + + // OptionsToken + const tokenName = process.env.OT_NAME; + const symbol = process.env.OT_SYMBOL; + const tokenAdmin = process.env.OT_TOKEN_ADMIN; + const OptionsToken = await ethers.getContractFactory("OptionsToken"); + const optionsToken = await upgrades.deployProxy( + OptionsToken, + [tokenName, symbol, tokenAdmin], + { kind: "uups", initializer: "initialize" } + ); + + await optionsToken.waitForDeployment(); + console.log(`OptionsToken deployed to: ${await optionsToken.getAddress()}`); + console.log(`Implementation: ${await getImplementationAddress(ethers.provider, await optionsToken.getAddress())}`); + + // Exercise + const paymentToken = process.env.OT_PAYMENT_TOKEN; + const multiplier = process.env.MULTIPLIER; + const feeRecipients = String(process.env.FEE_RECIPIENTS).split(","); + const feeBps = String(process.env.FEE_BPS).split(","); + + const exercise = await ethers.deployContract( + "DiscountExercise", + [ + await optionsToken.getAddress(), + owner, + paymentToken, + targetToken, + await oracle.getAddress(), + multiplier, + feeRecipients, + feeBps + ] + ); + await exercise.waitForDeployment(); + console.log(`Exercise deployed to: ${await exercise.getAddress()}`); + + // Set exercise + const exerciseAddress = await exercise.getAddress(); + await optionsToken.setExerciseContract(exerciseAddress, true); + console.log(`Exercise set to: ${exerciseAddress}`); +} + +// We recommend this pattern to be able to use async/await everywhere +// and properly handle errors. +main().catch((error) => { + console.error(error); + process.exitCode = 1; +}); diff --git a/src/OptionsToken.sol b/src/OptionsToken.sol index cea5730..e45308f 100644 --- a/src/OptionsToken.sol +++ b/src/OptionsToken.sol @@ -55,7 +55,10 @@ contract OptionsToken is IOptionsToken, ERC20Upgradeable, OwnableUpgradeable, UU mapping (address => bool) public isExerciseContract; uint256 public upgradeProposalTime; - constructor () initializer {} + /// @custom:oz-upgrades-unsafe-allow constructor + constructor() { + _disableInitializers(); + } /// ----------------------------------------------------------------------- /// Initializer diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..574e785 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "target": "es2020", + "module": "commonjs", + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "skipLibCheck": true, + "resolveJsonModule": true + } +} From 4c43d9363ff3821f013ed76b1a855708724f6bdd Mon Sep 17 00:00:00 2001 From: lookeey <71905281+lookeey@users.noreply.github.com> Date: Tue, 9 Jan 2024 15:36:56 -0300 Subject: [PATCH 38/64] minor fixes --- script/DeployThena.s.sol | 72 +++++++++++++++++++++++++++++++ src/OptionsToken.sol | 13 ++---- src/exercise/BaseExercise.sol | 6 ++- src/exercise/DiscountExercise.sol | 9 ++-- test/OptionsToken.t.sol | 12 ++---- 5 files changed, 88 insertions(+), 24 deletions(-) create mode 100644 script/DeployThena.s.sol diff --git a/script/DeployThena.s.sol b/script/DeployThena.s.sol new file mode 100644 index 0000000..a3ce881 --- /dev/null +++ b/script/DeployThena.s.sol @@ -0,0 +1,72 @@ +// SPDX-License-Identifier: AGPL-3.0 +pragma solidity ^0.8.13; + +import {Script} from "forge-std/Script.sol"; +import {ERC20} from "solmate/tokens/ERC20.sol"; +import {IERC20} from "oz/token/ERC20/IERC20.sol"; +import {ERC1967Proxy} from "oz/proxy/ERC1967/ERC1967Proxy.sol"; + +import {OptionsToken} from "../src/OptionsToken.sol"; +import {DiscountExercise} from "../src/exercise/DiscountExercise.sol"; +import {ThenaOracle, IThenaPair} from "../src/oracles/ThenaOracle.sol"; +import {IERC20Mintable} from "../src/interfaces/IERC20Mintable.sol"; +import {IBalancerTwapOracle} from "../src/interfaces/IBalancerTwapOracle.sol"; + +contract DeployScript is Script { + constructor() {} + + function run() public returns (OptionsToken optionsToken, DiscountExercise exercise, ThenaOracle oracle) { + uint256 deployerPrivateKey = uint256(vm.envBytes32("PRIVATE_KEY")); + + vm.startBroadcast(deployerPrivateKey); + + { + IThenaPair thenaPair = IThenaPair(vm.envAddress("BALANCER_POOL")); + address owner = vm.envAddress("OWNER"); + address targetToken = vm.envAddress("ORACLE_TOKEN"); + uint56 secs = uint56(vm.envUint("ORACLE_SECS")); + uint128 minPrice = uint128(vm.envUint("ORACLE_MIN_PRICE")); + + oracle = new ThenaOracle(thenaPair, targetToken, owner, secs, minPrice); + } + + { + string memory name = vm.envString("OT_NAME"); + string memory symbol = vm.envString("OT_SYMBOL"); + address owner = vm.envAddress("OWNER"); + address tokenAdmin = vm.envAddress("OT_TOKEN_ADMIN"); + + address implementation = address(new OptionsToken()); + ERC1967Proxy proxy = new ERC1967Proxy(address(implementation), ""); + optionsToken = OptionsToken(address(proxy)); + optionsToken.initialize(name, symbol, tokenAdmin); + optionsToken.transferOwnership(owner); + } + + { + address owner = vm.envAddress("OWNER"); + uint256 multiplier = vm.envUint("MULTIPLIER"); + + address[] memory feeRecipients = vm.envAddress("OT_FEE_RECIPIENTS", ","); + uint256[] memory feeBps = vm.envUint("OT_FEE_BPS", ","); + + address paymentToken = vm.envAddress("OT_PAYMENT_TOKEN"); + address underlyingToken = vm.envAddress("OT_UNDERLYING_TOKEN"); + + exercise = new DiscountExercise( + optionsToken, + owner, + IERC20(paymentToken), + IERC20(underlyingToken), + oracle, + multiplier, + feeRecipients, + feeBps + ); + } + + optionsToken.setExerciseContract(address(exercise), true); + + vm.stopBroadcast(); + } +} diff --git a/src/OptionsToken.sol b/src/OptionsToken.sol index e45308f..6cb9451 100644 --- a/src/OptionsToken.sol +++ b/src/OptionsToken.sol @@ -35,7 +35,6 @@ contract OptionsToken is IOptionsToken, ERC20Upgradeable, OwnableUpgradeable, UU uint256 data2 ); event SetOracle(IOracle indexed newOracle); - event SetTreasury(address indexed newTreasury); event SetExerciseContract(address indexed _address, bool _isExercise); /// ----------------------------------------------------------------------- @@ -102,12 +101,10 @@ contract OptionsToken is IOptionsToken, ERC20Upgradeable, OwnableUpgradeable, UU _mint(to, amount); } - /// @notice Exercises options tokens, giving the reward to the recipient. - /// @dev WARNING: If `amount` is zero, the bytes returned will be empty and therefore, not decodable. - /// @dev The options tokens are not burnt but sent to address(0) to avoid messing up the - /// inflation schedule. + /// @notice Exercises options tokens, burning them and giving the reward to the recipient. /// @param amount The amount of options tokens to exercise /// @param recipient The recipient of the reward + /// @param option The address of the Exercise contract with the redemption logic /// @param params Extra parameters to be used by the exercise function function exercise(uint256 amount, address recipient, address option, bytes calldata params) external @@ -141,7 +138,7 @@ contract OptionsToken is IOptionsToken, ERC20Upgradeable, OwnableUpgradeable, UU // skip if amount is zero if (amount == 0) return (0, address(0), 0, 0); - // skip if option is not active + // revert if the exercise contract is not whitelisted if (!isExerciseContract[option]) revert OptionsToken__NotExerciseContract(); // burn options tokens @@ -173,7 +170,6 @@ contract OptionsToken is IOptionsToken, ERC20Upgradeable, OwnableUpgradeable, UU /** * @dev This function must be called prior to upgrading the implementation. * It's required to wait UPGRADE_TIMELOCK seconds before executing the upgrade. - * Strategists and roles with higher privilege can initiate this cooldown. */ function initiateUpgradeCooldown() onlyOwner external { upgradeProposalTime = block.timestamp; @@ -184,7 +180,6 @@ contract OptionsToken is IOptionsToken, ERC20Upgradeable, OwnableUpgradeable, UU * - in initialize() * - as part of a successful upgrade * - manually to clear the upgrade cooldown. - * Guardian and roles with higher privilege can clear this cooldown. */ function _clearUpgradeCooldown() internal { upgradeProposalTime = block.timestamp + FUTURE_NEXT_PROPOSAL_TIME; @@ -196,7 +191,7 @@ contract OptionsToken is IOptionsToken, ERC20Upgradeable, OwnableUpgradeable, UU /** * @dev This function must be overriden simply for access control purposes. - * Only DEFAULT_ADMIN_ROLE can upgrade the implementation once the timelock + * Only the owner can upgrade the implementation once the timelock * has passed. */ function _authorizeUpgrade(address) onlyOwner internal override { diff --git a/src/exercise/BaseExercise.sol b/src/exercise/BaseExercise.sol index 33b0af9..e94e9d7 100644 --- a/src/exercise/BaseExercise.sol +++ b/src/exercise/BaseExercise.sol @@ -62,6 +62,7 @@ abstract contract BaseExercise is IExercise, Owned { } /// @notice Distributes fees to the fee recipients from a token holder who has approved + /// @dev Sends the residual amount to the last fee recipient to avoid rounding errors function distributeFeesFrom(uint256 totalAmount, IERC20 token, address from) internal virtual { for (uint256 i = 0; i < feeRecipients.length - 1; i++) { uint256 feeAmount = totalAmount * feeBPS[i] / FEE_DENOMINATOR; @@ -73,11 +74,14 @@ abstract contract BaseExercise is IExercise, Owned { } /// @notice Distributes fees to the fee recipients from token balance of exercise contract + /// @dev Sends the residual amount to the last fee recipient to avoid rounding errors function distributeFees(uint256 totalAmount, IERC20 token) internal virtual { - for (uint256 i = 0; i < feeRecipients.length; i++) { + for (uint256 i = 0; i < feeRecipients.length - 1; i++) { uint256 feeAmount = totalAmount * feeBPS[i] / FEE_DENOMINATOR; token.safeTransfer(feeRecipients[i], feeAmount); + totalAmount -= feeAmount; } + token.safeTransfer(feeRecipients[feeRecipients.length - 1], totalAmount); emit DistributeFees(feeRecipients, feeBPS, totalAmount); } } diff --git a/src/exercise/DiscountExercise.sol b/src/exercise/DiscountExercise.sol index f1d4921..6a5afc0 100644 --- a/src/exercise/DiscountExercise.sol +++ b/src/exercise/DiscountExercise.sol @@ -16,7 +16,7 @@ struct DiscountExerciseParams { } /// @title Options Token Exercise Contract -/// @author @bigbadbeard, @lookee, @eidolon +/// @author @lookee, @eidolon /// @notice Contract that allows the holder of options tokens to exercise them, /// in this case, by purchasing the underlying token at a discount to the market price. /// @dev Assumes the underlying token and the payment token both use 18 decimals. @@ -60,9 +60,6 @@ contract DiscountExercise is BaseExercise { /// the options token. Uses 4 decimals. uint256 public multiplier; - /// @notice The treasury address which receives tokens paid during redemption - address public treasury; - constructor( OptionsToken oToken_, address owner_, @@ -134,11 +131,11 @@ contract DiscountExercise is BaseExercise { // apply multiplier to price uint256 price = oracle.getPrice().mulDivUp(multiplier, MULTIPLIER_DENOM); - // transfer payment tokens from user to the treasury - // this price includes the discount + paymentAmount = amount.mulWadUp(price); if (paymentAmount > _params.maxPaymentAmount) revert Exercise__SlippageTooHigh(); + // transfer payment tokens from user to the set receivers distributeFeesFrom(paymentAmount, paymentToken, from); // transfer underlying tokens to recipient underlyingToken.safeTransfer(recipient, amount); diff --git a/test/OptionsToken.t.sol b/test/OptionsToken.t.sol index f014755..2824c06 100644 --- a/test/OptionsToken.t.sol +++ b/test/OptionsToken.t.sol @@ -30,7 +30,6 @@ contract OptionsTokenTest is Test { address tokenAdmin; address[] feeRecipients_; uint256[] feeBPS_; - address upgradeAdmin; OptionsToken optionsToken; DiscountExercise exerciser; @@ -43,7 +42,6 @@ contract OptionsTokenTest is Test { // set up accounts owner = makeAddr("owner"); tokenAdmin = makeAddr("tokenAdmin"); - upgradeAdmin = makeAddr("upgradeAdmin"); feeRecipients_ = new address[](2); feeRecipients_[0] = makeAddr("feeRecipient"); @@ -146,7 +144,7 @@ contract OptionsTokenTest is Test { optionsToken.mint(address(this), amount); // set TWAP value such that the strike price is below the oracle's minPrice value - balancerTwapOracle.setTwapValue(0); + balancerTwapOracle.setTwapValue(ORACLE_MIN_PRICE - 1); // mint payment tokens uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_MIN_PRICE); @@ -159,10 +157,10 @@ contract OptionsTokenTest is Test { } function test_priceMultiplier(uint256 amount, uint multiplier) public { - amount = bound(amount, 3000, (1e20) / 2); + amount = bound(amount, 1, MAX_SUPPLY / 2); vm.prank(owner); - exerciser.setMultiplier(10000); // 100% of price + exerciser.setMultiplier(10000); // full price // mint options tokens vm.prank(tokenAdmin); @@ -181,7 +179,7 @@ contract OptionsTokenTest is Test { (uint256 paidAmount,,,) = optionsToken.exercise(amount, address(this), address(exerciser), abi.encode(params)); // update multiplier - multiplier = bound(multiplier, 5000, 10000); + multiplier = bound(multiplier, 1000, 20000); vm.prank(owner); exerciser.setMultiplier(multiplier); @@ -314,6 +312,4 @@ contract OptionsTokenTest is Test { optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); } - - } From 68d02720367e5615e191698ee0c807d46cd36631 Mon Sep 17 00:00:00 2001 From: lookeey <71905281+lookeey@users.noreply.github.com> Date: Tue, 9 Jan 2024 15:45:38 -0300 Subject: [PATCH 39/64] remove unnecessary casting --- test/OptionsToken.t.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/OptionsToken.t.sol b/test/OptionsToken.t.sol index 2824c06..5123d7b 100644 --- a/test/OptionsToken.t.sol +++ b/test/OptionsToken.t.sol @@ -56,7 +56,7 @@ contract OptionsTokenTest is Test { underlyingToken = address(new TestERC20()); address implementation = address(new OptionsToken()); - ERC1967Proxy proxy = new ERC1967Proxy(address(implementation), ""); + ERC1967Proxy proxy = new ERC1967Proxy(implementation, ""); optionsToken = OptionsToken(address(proxy)); optionsToken.initialize("TIT Call Option Token", "oTIT", tokenAdmin); optionsToken.transferOwnership(owner); From 0ab0dc3f4e0d329318f106beadb426d99222987d Mon Sep 17 00:00:00 2001 From: lookeey <71905281+lookeey@users.noreply.github.com> Date: Tue, 9 Jan 2024 17:34:32 -0300 Subject: [PATCH 40/64] forge: fmt --- foundry.toml | 3 + src/OptionsToken.sol | 55 +++++------- src/exercise/BaseExercise.sol | 6 +- src/exercise/DiscountExercise.sol | 10 +-- src/interfaces/IBalancerTwapOracle.sol | 10 +-- src/interfaces/IBalancerVault.sol | 44 ++++------ src/interfaces/IExercise.sol | 9 +- src/interfaces/IThenaPair.sol | 20 ++--- src/oracles/ThenaOracle.sol | 32 ++----- src/oracles/UniswapV3Oracle.sol | 16 +--- test/BalancerOracle.t.sol | 64 ++++++-------- test/OptionsToken.t.sol | 82 +++++++---------- test/ThenaOracle.t.sol | 42 +++------ test/UniswapV3Oracle.t.sol | 80 ++++++++--------- test/interfaces/ISwapRouter.sol | 2 +- test/interfaces/IThenaRouter.sol | 8 +- test/mocks/MockBalancerTwapOracle.sol | 71 +++++++-------- test/mocks/MockUniswapPool.sol | 116 +++++++++---------------- 18 files changed, 251 insertions(+), 419 deletions(-) diff --git a/foundry.toml b/foundry.toml index 89e3e2d..15f6ce7 100644 --- a/foundry.toml +++ b/foundry.toml @@ -3,6 +3,9 @@ optimizer_runs = 1000000 verbosity = 1 via_ir = true +[fmt] +line_length = 130 + # Extreme Fuzzing CI Profile :P [profile.ci] fuzz_runs = 100_000 diff --git a/src/OptionsToken.sol b/src/OptionsToken.sol index 6cb9451..3048eea 100644 --- a/src/OptionsToken.sol +++ b/src/OptionsToken.sol @@ -27,12 +27,7 @@ contract OptionsToken is IOptionsToken, ERC20Upgradeable, OwnableUpgradeable, UU /// ----------------------------------------------------------------------- event Exercise( - address indexed sender, - address indexed recipient, - uint256 amount, - address data0, - uint256 data1, - uint256 data2 + address indexed sender, address indexed recipient, uint256 amount, address data0, uint256 data1, uint256 data2 ); event SetOracle(IOracle indexed newOracle); event SetExerciseContract(address indexed _address, bool _isExercise); @@ -51,7 +46,7 @@ contract OptionsToken is IOptionsToken, ERC20Upgradeable, OwnableUpgradeable, UU /// @notice The contract that has the right to mint options tokens address public tokenAdmin; - mapping (address => bool) public isExerciseContract; + mapping(address => bool) public isExerciseContract; uint256 public upgradeProposalTime; /// @custom:oz-upgrades-unsafe-allow constructor @@ -63,11 +58,7 @@ contract OptionsToken is IOptionsToken, ERC20Upgradeable, OwnableUpgradeable, UU /// Initializer /// ----------------------------------------------------------------------- - function initialize( - string memory name_, - string memory symbol_, - address tokenAdmin_ - ) external initializer { + function initialize(string memory name_, string memory symbol_, address tokenAdmin_) external initializer { __UUPSUpgradeable_init(); __ERC20_init(name_, symbol_); __Ownable_init(); @@ -109,7 +100,12 @@ contract OptionsToken is IOptionsToken, ERC20Upgradeable, OwnableUpgradeable, UU function exercise(uint256 amount, address recipient, address option, bytes calldata params) external virtual - returns (uint256 paymentAmount, address, uint256, uint256) // misc data + returns ( + uint256 paymentAmount, + address, + uint256, + uint256 // misc data + ) { return _exercise(amount, recipient, option, params); } @@ -133,7 +129,12 @@ contract OptionsToken is IOptionsToken, ERC20Upgradeable, OwnableUpgradeable, UU function _exercise(uint256 amount, address recipient, address option, bytes calldata params) internal virtual - returns (uint256 paymentAmount, address data0, uint256 data1, uint256 data2) // misc data + returns ( + uint256 paymentAmount, + address data0, + uint256 data1, + uint256 data2 // misc data + ) { // skip if amount is zero if (amount == 0) return (0, address(0), 0, 0); @@ -145,22 +146,10 @@ contract OptionsToken is IOptionsToken, ERC20Upgradeable, OwnableUpgradeable, UU _burn(msg.sender, amount); // give rewards to recipient - ( - paymentAmount, - data0, - data1, - data2 - ) = IExercise(option).exercise(msg.sender, amount, recipient, params); + (paymentAmount, data0, data1, data2) = IExercise(option).exercise(msg.sender, amount, recipient, params); // emit event - emit Exercise( - msg.sender, - recipient, - amount, - data0, - data1, - data2 - ); + emit Exercise(msg.sender, recipient, amount, data0, data1, data2); } /// ----------------------------------------------------------------------- @@ -171,7 +160,7 @@ contract OptionsToken is IOptionsToken, ERC20Upgradeable, OwnableUpgradeable, UU * @dev This function must be called prior to upgrading the implementation. * It's required to wait UPGRADE_TIMELOCK seconds before executing the upgrade. */ - function initiateUpgradeCooldown() onlyOwner external { + function initiateUpgradeCooldown() external onlyOwner { upgradeProposalTime = block.timestamp; } @@ -185,7 +174,7 @@ contract OptionsToken is IOptionsToken, ERC20Upgradeable, OwnableUpgradeable, UU upgradeProposalTime = block.timestamp + FUTURE_NEXT_PROPOSAL_TIME; } - function clearUpgradeCooldown() onlyOwner external { + function clearUpgradeCooldown() external onlyOwner { _clearUpgradeCooldown(); } @@ -194,10 +183,8 @@ contract OptionsToken is IOptionsToken, ERC20Upgradeable, OwnableUpgradeable, UU * Only the owner can upgrade the implementation once the timelock * has passed. */ - function _authorizeUpgrade(address) onlyOwner internal override { - require( - upgradeProposalTime + UPGRADE_TIMELOCK < block.timestamp, "Upgrade cooldown not initiated or still ongoing" - ); + function _authorizeUpgrade(address) internal override onlyOwner { + require(upgradeProposalTime + UPGRADE_TIMELOCK < block.timestamp, "Upgrade cooldown not initiated or still ongoing"); _clearUpgradeCooldown(); } } diff --git a/src/exercise/BaseExercise.sol b/src/exercise/BaseExercise.sol index e94e9d7..c172535 100644 --- a/src/exercise/BaseExercise.sol +++ b/src/exercise/BaseExercise.sol @@ -29,7 +29,7 @@ abstract contract BaseExercise is IExercise, Owned { /// feeBPS[n] * fee / 10_000 in fees uint256[] public feeBPS; - constructor (IOptionsToken _oToken, address[] memory _feeRecipients, uint256[] memory _feeBPS) { + constructor(IOptionsToken _oToken, address[] memory _feeRecipients, uint256[] memory _feeBPS) { oToken = _oToken; if (_feeRecipients.length != _feeBPS.length) revert Exercise__feeArrayLengthMismatch(); feeRecipients = _feeRecipients; @@ -52,8 +52,8 @@ abstract contract BaseExercise is IExercise, Owned { function exercise(address from, uint256 amount, address recipient, bytes memory params) external virtual - returns (uint paymentAmount, address, uint256, uint256); - + returns (uint256 paymentAmount, address, uint256, uint256); + function setFees(address[] memory _feeRecipients, uint256[] memory _feeBPS) external onlyOwner { if (_feeRecipients.length != _feeBPS.length) revert Exercise__feeArrayLengthMismatch(); feeRecipients = _feeRecipients; diff --git a/src/exercise/DiscountExercise.sol b/src/exercise/DiscountExercise.sol index 6a5afc0..c1b10bb 100644 --- a/src/exercise/DiscountExercise.sol +++ b/src/exercise/DiscountExercise.sol @@ -92,7 +92,7 @@ contract DiscountExercise is BaseExercise { virtual override onlyOToken - returns (uint paymentAmount, address, uint256, uint256) + returns (uint256 paymentAmount, address, uint256, uint256) { return _exercise(from, amount, recipient, params); } @@ -111,7 +111,7 @@ contract DiscountExercise is BaseExercise { function setMultiplier(uint256 multiplier_) external onlyOwner { if ( multiplier_ > MULTIPLIER_DENOM * 2 // over 200% - || multiplier_ < MULTIPLIER_DENOM / 10 // under 10% + || multiplier_ < MULTIPLIER_DENOM / 10 // under 10% ) revert Exercise__MultiplierOutOfRange(); multiplier = multiplier_; emit SetMultiplier(multiplier_); @@ -122,7 +122,7 @@ contract DiscountExercise is BaseExercise { function _exercise(address from, uint256 amount, address recipient, bytes memory params) internal virtual - returns (uint256 paymentAmount, address, uint256, uint256) + returns (uint256 paymentAmount, address, uint256, uint256) { // decode params DiscountExerciseParams memory _params = abi.decode(params, (DiscountExerciseParams)); @@ -147,9 +147,7 @@ contract DiscountExercise is BaseExercise { /// @notice Returns the amount of payment tokens required to exercise the given amount of options tokens. /// @param amount The amount of options tokens to exercise - function getPaymentAmount( - uint256 amount - ) external view returns (uint256 paymentAmount) { + function getPaymentAmount(uint256 amount) external view returns (uint256 paymentAmount) { paymentAmount = amount.mulWadUp(oracle.getPrice()); } } diff --git a/src/interfaces/IBalancerTwapOracle.sol b/src/interfaces/IBalancerTwapOracle.sol index 5044d79..59466bb 100644 --- a/src/interfaces/IBalancerTwapOracle.sol +++ b/src/interfaces/IBalancerTwapOracle.sol @@ -56,10 +56,7 @@ interface IBalancerTwapOracle { * @dev Returns the time average weighted price corresponding to each of `queries`. Prices are represented as 18 * decimal fixed point values. */ - function getTimeWeightedAverage(OracleAverageQuery[] memory queries) - external - view - returns (uint256[] memory results); + function getTimeWeightedAverage(OracleAverageQuery[] memory queries) external view returns (uint256[] memory results); /** * @dev Returns latest sample of `variable`. Prices are represented as 18 decimal fixed point values. @@ -91,10 +88,7 @@ interface IBalancerTwapOracle { /** * @dev Returns the accumulators corresponding to each of `queries`. */ - function getPastAccumulators(OracleAccumulatorQuery[] memory queries) - external - view - returns (int256[] memory results); + function getPastAccumulators(OracleAccumulatorQuery[] memory queries) external view returns (int256[] memory results); /** * @dev Information for an Accumulator query. diff --git a/src/interfaces/IBalancerVault.sol b/src/interfaces/IBalancerVault.sol index 2628237..a67cf92 100644 --- a/src/interfaces/IBalancerVault.sol +++ b/src/interfaces/IBalancerVault.sol @@ -12,7 +12,6 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . - pragma experimental ABIEncoderV2; pragma solidity >=0.7.0 <0.9.0; @@ -25,15 +24,14 @@ pragma solidity >=0.7.0 <0.9.0; * This concept is unrelated to a Pool's Asset Managers. */ interface IAsset { - // solhint-disable-previous-line no-empty-blocks +// solhint-disable-previous-line no-empty-blocks } /** * @dev Minimal interface for interacting with Balancer's vault. */ interface IVault { - -/** + /** * @dev Called by users to join a Pool, which transfers tokens from `sender` into the Pool's balance. This will * trigger custom Pool behavior, which will typically grant something in return to `recipient` - often tokenized * Pool shares. @@ -65,12 +63,7 @@ interface IVault { * * Emits a `PoolBalanceChanged` event. */ - function joinPool( - bytes32 poolId, - address sender, - address recipient, - JoinPoolRequest memory request - ) external payable; + function joinPool(bytes32 poolId, address sender, address recipient, JoinPoolRequest memory request) external payable; struct JoinPoolRequest { IAsset[] assets; @@ -79,7 +72,11 @@ interface IVault { bool fromInternalBalance; } - enum PoolSpecialization { GENERAL, MINIMAL_SWAP_INFO, TWO_TOKEN } + enum PoolSpecialization { + GENERAL, + MINIMAL_SWAP_INFO, + TWO_TOKEN + } /** * @dev Returns a Pool's contract address and specialization setting. @@ -100,15 +97,7 @@ interface IVault { * the amounts used by joins, exits and swaps. For a detailed breakdown of token balances, use `getPoolTokenInfo` * instead. */ - function getPoolTokens(bytes32 poolId) - external - view - returns ( - address[] memory tokens, - uint256[] memory, - uint256 - ); - + function getPoolTokens(bytes32 poolId) external view returns (address[] memory tokens, uint256[] memory, uint256); /** * @dev All tokens in a swap are either sent from the `sender` account to the Vault, or from the Vault to the @@ -134,7 +123,10 @@ interface IVault { bool toInternalBalance; } - enum SwapKind { GIVEN_IN, GIVEN_OUT } + enum SwapKind { + GIVEN_IN, + GIVEN_OUT + } /** * @dev Performs a swap with a single Pool. @@ -149,12 +141,10 @@ interface IVault { * * Emits a `Swap` event. */ - function swap( - SingleSwap memory singleSwap, - FundManagement memory funds, - uint256 limit, - uint256 deadline - ) external payable returns (uint256); + function swap(SingleSwap memory singleSwap, FundManagement memory funds, uint256 limit, uint256 deadline) + external + payable + returns (uint256); /** * @dev Data for a single swap executed by `swap`. `amount` is either `amountIn` or `amountOut` depending on diff --git a/src/interfaces/IExercise.sol b/src/interfaces/IExercise.sol index e23bc9e..f21ed28 100644 --- a/src/interfaces/IExercise.sol +++ b/src/interfaces/IExercise.sol @@ -9,10 +9,7 @@ interface IExercise { /// @param params Additional parameters for the exercise /// @return paymentAmount The amount of underlying tokens to pay to the exercise contract /// @dev Additional returns are reserved for future use - function exercise( - address from, - uint256 amount, - address recipient, - bytes memory params - ) external returns (uint256 paymentAmount, address, uint, uint); + function exercise(address from, uint256 amount, address recipient, bytes memory params) + external + returns (uint256 paymentAmount, address, uint256, uint256); } diff --git a/src/interfaces/IThenaPair.sol b/src/interfaces/IThenaPair.sol index 974cb14..9ab4697 100644 --- a/src/interfaces/IThenaPair.sol +++ b/src/interfaces/IThenaPair.sol @@ -1,14 +1,7 @@ pragma solidity >=0.5; interface IThenaPair { - function getReserves() - external - view - returns ( - uint112 _reserve0, - uint112 _reserve1, - uint32 _blockTimestampLast - ); + function getReserves() external view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast); function reserve0CumulativeLast() external view returns (uint256); @@ -17,17 +10,16 @@ interface IThenaPair { function currentCumulativePrices() external view - returns ( - uint256 reserve0Cumulative, - uint256 reserve1Cumulative, - uint256 blockTimestamp - ); + returns (uint256 reserve0Cumulative, uint256 reserve1Cumulative, uint256 blockTimestamp); function stable() external view returns (bool); function observationLength() external view returns (uint256); - function observations(uint256) external view returns (uint256 timestamp, uint256 reserve0Cumulative, uint256 reserve1Cumulative); + function observations(uint256) + external + view + returns (uint256 timestamp, uint256 reserve0Cumulative, uint256 reserve1Cumulative); function token0() external view returns (address); diff --git a/src/oracles/ThenaOracle.sol b/src/oracles/ThenaOracle.sol index 2897b34..91e33a6 100644 --- a/src/oracles/ThenaOracle.sol +++ b/src/oracles/ThenaOracle.sol @@ -62,13 +62,7 @@ contract ThenaOracle is IOracle, Owned { /// Constructor /// ----------------------------------------------------------------------- - constructor( - IThenaPair thenaPair_, - address token, - address owner_, - uint56 secs_, - uint128 minPrice_ - ) Owned(owner_) { + constructor(IThenaPair thenaPair_, address token, address owner_, uint56 secs_, uint128 minPrice_) Owned(owner_) { if (thenaPair_.stable()) revert ThenaOracle__StablePairsUnsupported(); thenaPair = thenaPair_; isToken0 = thenaPair_.token0() == token; @@ -96,24 +90,15 @@ contract ThenaOracle is IOracle, Owned { // query Thena oracle to get TWAP value { - ( - uint256 reserve0CumulativeCurrent, - uint256 reserve1CumulativeCurrent, - uint256 blockTimestampCurrent - ) = thenaPair.currentCumulativePrices(); + (uint256 reserve0CumulativeCurrent, uint256 reserve1CumulativeCurrent, uint256 blockTimestampCurrent) = + thenaPair.currentCumulativePrices(); uint256 observationLength = IThenaPair(thenaPair).observationLength(); - ( - uint256 blockTimestampLast, - uint256 reserve0CumulativeLast, - uint256 reserve1CumulativeLast - ) = thenaPair.observations(observationLength - 1); + (uint256 blockTimestampLast, uint256 reserve0CumulativeLast, uint256 reserve1CumulativeLast) = + thenaPair.observations(observationLength - 1); uint32 T = uint32(blockTimestampCurrent - blockTimestampLast); if (T < secs_) { - ( - blockTimestampLast, - reserve0CumulativeLast, - reserve1CumulativeLast - ) = thenaPair.observations(observationLength - 2); + (blockTimestampLast, reserve0CumulativeLast, reserve1CumulativeLast) = + thenaPair.observations(observationLength - 2); T = uint32(blockTimestampCurrent - blockTimestampLast); } uint112 reserve0 = safe112((reserve0CumulativeCurrent - reserve0CumulativeLast) / T); @@ -148,8 +133,7 @@ contract ThenaOracle is IOracle, Owned { /// ----------------------------------------------------------------------- function safe112(uint256 n) internal pure returns (uint112) { - if (n >= 2**112) revert ThenaOracle__Overflow(); + if (n >= 2 ** 112) revert ThenaOracle__Overflow(); return uint112(n); } - } diff --git a/src/oracles/UniswapV3Oracle.sol b/src/oracles/UniswapV3Oracle.sol index 6184575..2bb3588 100644 --- a/src/oracles/UniswapV3Oracle.sol +++ b/src/oracles/UniswapV3Oracle.sol @@ -66,14 +66,9 @@ contract UniswapV3Oracle is IOracle, Owned { /// Constructor /// ----------------------------------------------------------------------- - constructor( - IUniswapV3Pool uniswapPool_, - address token, - address owner_, - uint32 secs_, - uint32 ago_, - uint128 minPrice_ - ) Owned(owner_) { + constructor(IUniswapV3Pool uniswapPool_, address token, address owner_, uint32 secs_, uint32 ago_, uint128 minPrice_) + Owned(owner_) + { uniswapPool = uniswapPool_; isToken0 = token == uniswapPool_.token0(); secs = secs_; @@ -143,10 +138,7 @@ contract UniswapV3Oracle is IOracle, Owned { /// would be (block.timestamp - secs - ago, block.timestamp - ago]. /// @param minPrice_ The minimum value returned by getPrice(). Maintains a floor for the /// price to mitigate potential attacks on the TWAP oracle. - function setParams(uint32 secs_, uint32 ago_, uint128 minPrice_) - external - onlyOwner - { + function setParams(uint32 secs_, uint32 ago_, uint128 minPrice_) external onlyOwner { secs = secs_; ago = ago_; minPrice = minPrice_; diff --git a/test/BalancerOracle.t.sol b/test/BalancerOracle.t.sol index 9033bab..e91c8f6 100644 --- a/test/BalancerOracle.t.sol +++ b/test/BalancerOracle.t.sol @@ -25,12 +25,12 @@ contract BalancerOracleTest is Test { string MAINNET_RPC_URL = vm.envString("MAINNET_RPC_URL"); uint32 FORK_BLOCK = 18764758; - + address TOKEN_ADDRESS = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; address PAYMENT_ADDRESS = 0xfd0205066521550D7d7AB19DA8F72bb004b4C341; address POOL_ADDRESS = 0x9232a548DD9E81BaC65500b5e0d918F8Ba93675C; - uint MULTIPLIER_DENOM = 10000; + uint256 MULTIPLIER_DENOM = 10000; uint256 opFork; @@ -42,7 +42,6 @@ contract BalancerOracleTest is Test { } function test_priceWithinAcceptableRange() public { - BalancerOracle oracle = new BalancerOracle( _default.pair, _default.token, @@ -52,11 +51,11 @@ contract BalancerOracleTest is Test { _default.minPrice ); - uint oraclePrice = oracle.getPrice(); + uint256 oraclePrice = oracle.getPrice(); uint256 spotPrice = getSpotPrice(address(_default.pair), _default.token); assertApproxEqRel(oraclePrice, spotPrice, 0.01 ether, "Price delta too big"); // 1% - } + } function test_priceToken1() public { IVault vault = _default.pair.getVault(); @@ -70,7 +69,7 @@ contract BalancerOracleTest is Test { _default.ago, _default.minPrice ); - + BalancerOracle oracleToken1 = new BalancerOracle( _default.pair, poolTokens[1], @@ -80,13 +79,12 @@ contract BalancerOracleTest is Test { _default.minPrice ); - uint priceToken0 = oracleToken0.getPrice(); - uint priceToken1 = oracleToken1.getPrice(); + uint256 priceToken0 = oracleToken0.getPrice(); + uint256 priceToken1 = oracleToken1.getPrice(); assertEq(priceToken1, uint256(1e18).divWadUp(priceToken0), "incorrect price"); // 1% } - function test_singleBlockManipulation() public { IVault vault = _default.pair.getVault(); BalancerOracle oracle = new BalancerOracle( @@ -157,7 +155,7 @@ contract BalancerOracleTest is Test { // oracle price is only updated on swaps assertEq(price_1, oracle.getPrice(), "price updated"); - + // perform additional, smaller swap address manipulator2 = makeAddr("manipulator2"); deal(PAYMENT_ADDRESS, manipulator2, 1); @@ -168,8 +166,10 @@ contract BalancerOracleTest is Test { // weighted average of the first recorded oracle price and the current spot price // weighted by the time since the last update - uint256 spotAverage = ((price_1 * (_default.secs - skipTime)) + (getSpotPrice(address(_default.pair), _default.token) * skipTime)) / _default.secs; - + uint256 spotAverage = ( + (price_1 * (_default.secs - skipTime)) + (getSpotPrice(address(_default.pair), _default.token) * skipTime) + ) / _default.secs; + assertApproxEqRel(spotAverage, oracle.getPrice(), 0.01 ether, "price variance too large"); } @@ -179,38 +179,24 @@ contract BalancerOracleTest is Test { (address[] memory poolTokens,,) = vault.getPoolTokens(poolId); bool isToken0 = token == poolTokens[0]; - (,uint[] memory balances, ) = vault.getPoolTokens(poolId); - uint[] memory weights = IBalancer2TokensPool(pool).getNormalizedWeights(); + (, uint256[] memory balances,) = vault.getPoolTokens(poolId); + uint256[] memory weights = IBalancer2TokensPool(pool).getNormalizedWeights(); - price = isToken0 ? - (balances[1] * weights[0]).divWadDown(balances[0] * weights[1]) : - (balances[0] * weights[1]).divWadDown(balances[1] * weights[0]); + price = isToken0 + ? (balances[1] * weights[0]).divWadDown(balances[0] * weights[1]) + : (balances[0] * weights[1]).divWadDown(balances[1] * weights[0]); } - function swap(address pool, address tokenIn, address tokenOut, uint amountIn, address sender) internal returns (uint amountOut) { + function swap(address pool, address tokenIn, address tokenOut, uint256 amountIn, address sender) + internal + returns (uint256 amountOut) + { bytes32 poolId = IBalancerTwapOracle(pool).getPoolId(); - IVault.SingleSwap memory singleSwap = IVault.SingleSwap( - poolId, - IVault.SwapKind.GIVEN_IN, - IAsset(tokenIn), - IAsset(tokenOut), - amountIn, - "" - ); + IVault.SingleSwap memory singleSwap = + IVault.SingleSwap(poolId, IVault.SwapKind.GIVEN_IN, IAsset(tokenIn), IAsset(tokenOut), amountIn, ""); - IVault.FundManagement memory funds = IVault.FundManagement( - sender, - false, - payable(sender), - false - ); + IVault.FundManagement memory funds = IVault.FundManagement(sender, false, payable(sender), false); - return IVault(IBalancer2TokensPool(pool).getVault()).swap( - singleSwap, - funds, - 0, - type(uint256).max - ); + return IVault(IBalancer2TokensPool(pool).getVault()).swap(singleSwap, funds, 0, type(uint256).max); } - } diff --git a/test/OptionsToken.t.sol b/test/OptionsToken.t.sol index 5123d7b..e88d2d7 100644 --- a/test/OptionsToken.t.sol +++ b/test/OptionsToken.t.sol @@ -13,7 +13,6 @@ import {TestERC20} from "./mocks/TestERC20.sol"; import {BalancerOracle} from "../src/oracles/BalancerOracle.sol"; import {MockBalancerTwapOracle} from "./mocks/MockBalancerTwapOracle.sol"; - contract OptionsTokenTest is Test { using FixedPointMathLib for uint256; @@ -66,10 +65,10 @@ contract OptionsTokenTest is Test { tokens[1] = address(paymentToken); balancerTwapOracle = new MockBalancerTwapOracle(tokens); - oracle = - new BalancerOracle(balancerTwapOracle, underlyingToken, owner, ORACLE_SECS, ORACLE_AGO, ORACLE_MIN_PRICE); + oracle = new BalancerOracle(balancerTwapOracle, underlyingToken, owner, ORACLE_SECS, ORACLE_AGO, ORACLE_MIN_PRICE); - exerciser = new DiscountExercise(optionsToken, owner, IERC20(address(paymentToken)), IERC20(underlyingToken), oracle, PRICE_MULTIPLIER, feeRecipients_, feeBPS_); + exerciser = + new DiscountExercise(optionsToken, owner, IERC20(address(paymentToken)), IERC20(underlyingToken), oracle, PRICE_MULTIPLIER, feeRecipients_, feeBPS_); TestERC20(underlyingToken).mint(address(exerciser), 1e20 ether); @@ -108,15 +107,12 @@ contract OptionsTokenTest is Test { optionsToken.mint(address(this), amount); // mint payment tokens - uint256 expectedPaymentAmount = - amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); + uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); paymentToken.mint(address(this), expectedPaymentAmount); // exercise options tokens - DiscountExerciseParams memory params = DiscountExerciseParams({ - maxPaymentAmount: expectedPaymentAmount, - deadline: type(uint256).max - }); + DiscountExerciseParams memory params = + DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max}); (uint256 paymentAmount,,,) = optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); // verify options tokens were transferred @@ -151,33 +147,31 @@ contract OptionsTokenTest is Test { paymentToken.mint(address(this), expectedPaymentAmount); // exercise options tokens - DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max}); + DiscountExerciseParams memory params = + DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max}); vm.expectRevert(bytes4(keccak256("BalancerOracle__BelowMinPrice()"))); optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); } - function test_priceMultiplier(uint256 amount, uint multiplier) public { + function test_priceMultiplier(uint256 amount, uint256 multiplier) public { amount = bound(amount, 1, MAX_SUPPLY / 2); vm.prank(owner); exerciser.setMultiplier(10000); // full price - + // mint options tokens vm.prank(tokenAdmin); optionsToken.mint(address(this), amount * 2); // mint payment tokens - uint256 expectedPaymentAmount = - amount.mulWadUp(ORACLE_INIT_TWAP_VALUE); + uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_INIT_TWAP_VALUE); paymentToken.mint(address(this), expectedPaymentAmount); // exercise options tokens - DiscountExerciseParams memory params = DiscountExerciseParams({ - maxPaymentAmount: expectedPaymentAmount, - deadline: type(uint256).max - }); + DiscountExerciseParams memory params = + DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max}); (uint256 paidAmount,,,) = optionsToken.exercise(amount, address(this), address(exerciser), abi.encode(params)); - + // update multiplier multiplier = bound(multiplier, 1000, 20000); vm.prank(owner); @@ -203,15 +197,12 @@ contract OptionsTokenTest is Test { optionsToken.mint(address(this), amount); // mint payment tokens - uint256 expectedPaymentAmount = - amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); + uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); paymentToken.mint(address(this), expectedPaymentAmount); // exercise options tokens which should fail - DiscountExerciseParams memory params = DiscountExerciseParams({ - maxPaymentAmount: expectedPaymentAmount - 1, - deadline: type(uint256).max - }); + DiscountExerciseParams memory params = + DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount - 1, deadline: type(uint256).max}); vm.expectRevert(DiscountExercise.Exercise__SlippageTooHigh.selector); optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); } @@ -224,8 +215,7 @@ contract OptionsTokenTest is Test { optionsToken.mint(address(this), amount); // mint payment tokens - uint256 expectedPaymentAmount = - amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); + uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); paymentToken.mint(address(this), expectedPaymentAmount); // update oracle params @@ -235,10 +225,8 @@ contract OptionsTokenTest is Test { oracle.setParams(ORACLE_SECS, ORACLE_LARGEST_SAFETY_WINDOW, ORACLE_MIN_PRICE); // exercise options tokens which should fail - DiscountExerciseParams memory params = DiscountExerciseParams({ - maxPaymentAmount: expectedPaymentAmount, - deadline: type(uint256).max - }); + DiscountExerciseParams memory params = + DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max}); vm.expectRevert(BalancerOracle.BalancerOracle__TWAPOracleNotReady.selector); optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); } @@ -252,15 +240,12 @@ contract OptionsTokenTest is Test { optionsToken.mint(address(this), amount); // mint payment tokens - uint256 expectedPaymentAmount = - amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); + uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); paymentToken.mint(address(this), expectedPaymentAmount); // exercise options tokens - DiscountExerciseParams memory params = DiscountExerciseParams({ - maxPaymentAmount: expectedPaymentAmount, - deadline: deadline - }); + DiscountExerciseParams memory params = + DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: deadline}); if (amount != 0) { vm.expectRevert(DiscountExercise.Exercise__PastDeadline.selector); } @@ -274,17 +259,14 @@ contract OptionsTokenTest is Test { vm.prank(tokenAdmin); optionsToken.mint(address(this), amount); - uint256 expectedPaymentAmount = - amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); + uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); paymentToken.mint(address(this), expectedPaymentAmount); // exercise options tokens which should fail - DiscountExerciseParams memory params = DiscountExerciseParams({ - maxPaymentAmount: expectedPaymentAmount, - deadline: type(uint256).max - }); + DiscountExerciseParams memory params = + DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max}); vm.expectRevert(BaseExercise.Exercise__NotOToken.selector); - exerciser.exercise(address(this), amount, recipient, abi.encode(params)); + exerciser.exercise(address(this), amount, recipient, abi.encode(params)); } function test_exerciseNotExerciseContract(uint256 amount, address recipient) public { @@ -299,17 +281,13 @@ contract OptionsTokenTest is Test { optionsToken.setExerciseContract(address(exerciser), false); // mint payment tokens - uint256 expectedPaymentAmount = - amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); + uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); paymentToken.mint(address(this), expectedPaymentAmount); // exercise options tokens which should fail - DiscountExerciseParams memory params = DiscountExerciseParams({ - maxPaymentAmount: expectedPaymentAmount, - deadline: type(uint256).max - }); + DiscountExerciseParams memory params = + DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max}); vm.expectRevert(OptionsToken.OptionsToken__NotExerciseContract.selector); optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); } - } diff --git a/test/ThenaOracle.t.sol b/test/ThenaOracle.t.sol index d3ff20a..26e5219 100644 --- a/test/ThenaOracle.t.sol +++ b/test/ThenaOracle.t.sol @@ -22,13 +22,13 @@ contract ThenaOracleTest is Test { string BSC_RPC_URL = vm.envString("BSC_RPC_URL"); uint32 FORK_BLOCK = 33672842; - + address POOL_ADDRESS = 0x56EDFf25385B1DaE39d816d006d14CeCf96026aF; address TOKEN_ADDRESS = 0x4d2d32d8652058Bf98c772953E1Df5c5c85D9F45; address PAYMENT_TOKEN_ADDRESS = 0x55d398326f99059fF775485246999027B3197955; address THENA_ROUTER = 0xd4ae6eCA985340Dd434D38F470aCCce4DC78D109; - uint MULTIPLIER_DENOM = 10000; + uint256 MULTIPLIER_DENOM = 10000; uint256 bscFork; @@ -40,7 +40,6 @@ contract ThenaOracleTest is Test { } function test_priceWithinAcceptableRange() public { - ThenaOracle oracle = new ThenaOracle( _default.pair, _default.token, @@ -49,14 +48,13 @@ contract ThenaOracleTest is Test { _default.minPrice ); - uint oraclePrice = oracle.getPrice(); + uint256 oraclePrice = oracle.getPrice(); uint256 spotPrice = getSpotPrice(_default.pair, _default.token); assertApproxEqRel(oraclePrice, spotPrice, 0.01 ether, "Price delta too large"); // 1% } function test_priceToken1() public { - ThenaOracle oracleToken0 = new ThenaOracle( _default.pair, IThenaPair(_default.pair).token0(), @@ -64,7 +62,7 @@ contract ThenaOracleTest is Test { _default.secs, _default.minPrice ); - + ThenaOracle oracleToken1 = new ThenaOracle( _default.pair, IThenaPair(_default.pair).token1(), @@ -73,8 +71,8 @@ contract ThenaOracleTest is Test { _default.minPrice ); - uint priceToken0 = oracleToken0.getPrice(); - uint priceToken1 = oracleToken1.getPrice(); + uint256 priceToken0 = oracleToken0.getPrice(); + uint256 priceToken1 = oracleToken1.getPrice(); assertApproxEqAbs(priceToken1, uint256(1e18).divWadDown(priceToken0), 1, "incorrect price"); // 1% } @@ -103,13 +101,7 @@ contract ThenaOracleTest is Test { deal(TOKEN_ADDRESS, address(this), amountIn); IERC20(TOKEN_ADDRESS).approve(THENA_ROUTER, amountIn); IThenaRouter(THENA_ROUTER).swapExactTokensForTokensSimple( - amountIn, - 0, - TOKEN_ADDRESS, - PAYMENT_TOKEN_ADDRESS, - false, - address(this), - type(uint32).max + amountIn, 0, TOKEN_ADDRESS, PAYMENT_TOKEN_ADDRESS, false, address(this), type(uint32).max ); ThenaOracle oracleMinPrice = new ThenaOracle( @@ -183,26 +175,21 @@ contract ThenaOracleTest is Test { // perform a large swap address manipulator = makeAddr("manipulator"); - deal(TOKEN_ADDRESS, manipulator, 2**128); + deal(TOKEN_ADDRESS, manipulator, 2 ** 128); vm.startPrank(manipulator); (uint256 reserve0, uint256 reserve1,) = _default.pair.getReserves(); uint256 amountIn = (TOKEN_ADDRESS == _default.pair.token0() ? reserve0 : reserve1) / 4; IERC20(TOKEN_ADDRESS).approve(THENA_ROUTER, amountIn); IThenaRouter(THENA_ROUTER).swapExactTokensForTokensSimple( - amountIn, - 0, - TOKEN_ADDRESS, - PAYMENT_TOKEN_ADDRESS, - false, - manipulator, - type(uint32).max + amountIn, 0, TOKEN_ADDRESS, PAYMENT_TOKEN_ADDRESS, false, manipulator, type(uint32).max ); vm.stopPrank(); // wait skip(skipTime); - uint256 expectedMinPrice = (price_1 * (_default.secs - skipTime) + getSpotPrice(_default.pair, _default.token) * skipTime) / _default.secs; + uint256 expectedMinPrice = + (price_1 * (_default.secs - skipTime) + getSpotPrice(_default.pair, _default.token) * skipTime) / _default.secs; assertGeDecimal(oracle.getPrice(), expectedMinPrice, 18, "price variation too large"); } @@ -211,14 +198,13 @@ contract ThenaOracleTest is Test { bool isToken0 = token == pair.token0(); (uint112 reserve0, uint112 reserve1,) = pair.getReserves(); if (isToken0) { - price = uint256(reserve1).divWadDown(reserve0); + price = uint256(reserve1).divWadDown(reserve0); } else { - price = uint256(reserve0).divWadDown(reserve1); + price = uint256(reserve0).divWadDown(reserve1); } } - function max(uint x, uint y) internal pure returns (uint z) { + function max(uint256 x, uint256 y) internal pure returns (uint256 z) { z = x > y ? x : y; } - } diff --git a/test/UniswapV3Oracle.t.sol b/test/UniswapV3Oracle.t.sol index c6f8b09..794f103 100644 --- a/test/UniswapV3Oracle.t.sol +++ b/test/UniswapV3Oracle.t.sol @@ -34,7 +34,7 @@ contract UniswapOracleTest is Test { string OPTIMISM_RPC_URL = vm.envString("OPTIMISM_RPC_URL"); uint32 FORK_BLOCK = 112198905; - + address SWAP_ROUTER_ADDRESS = 0xE592427A0AEce92De3Edee1F18E0157C05861564; address WETH_OP_POOL_ADDRESS = 0x68F5C0A2DE713a54991E01858Fd27a3832401849; address OP_ADDRESS = 0x4200000000000000000000000000000000000042; @@ -104,7 +104,7 @@ contract UniswapOracleTest is Test { _default.minPrice ); - uint oraclePrice = oracle.getPrice(); + uint256 oraclePrice = oracle.getPrice(); (uint160 sqrtRatioX96,,,,,,) = IUniswapV3Pool(WETH_OP_POOL_ADDRESS).slot0(); uint256 spotPrice = computePriceFromX96(sqrtRatioX96); @@ -129,17 +129,16 @@ contract UniswapOracleTest is Test { uint256 amountIn = 100000 ether; deal(OP_ADDRESS, address(this), amountIn); - ISwapRouter.ExactInputSingleParams memory paramsIn = - ISwapRouter.ExactInputSingleParams({ - tokenIn: OP_ADDRESS, - tokenOut: WETH_ADDRESS, - fee: POOL_FEE, - recipient: address(this), - deadline: block.timestamp, - amountIn: amountIn, - amountOutMinimum: 0, - sqrtPriceLimitX96: 0 - }); + ISwapRouter.ExactInputSingleParams memory paramsIn = ISwapRouter.ExactInputSingleParams({ + tokenIn: OP_ADDRESS, + tokenOut: WETH_ADDRESS, + fee: POOL_FEE, + recipient: address(this), + deadline: block.timestamp, + amountIn: amountIn, + amountOutMinimum: 0, + sqrtPriceLimitX96: 0 + }); IERC20(OP_ADDRESS).approve(address(swapRouter), amountIn); swapRouter.exactInputSingle(paramsIn); @@ -181,17 +180,16 @@ contract UniswapOracleTest is Test { vm.startPrank(manipulator); uint256 reserve = IERC20(OP_ADDRESS).balanceOf(WETH_OP_POOL_ADDRESS); uint256 amountIn = reserve / 4; - ISwapRouter.ExactInputSingleParams memory paramsIn = - ISwapRouter.ExactInputSingleParams({ - tokenIn: OP_ADDRESS, - tokenOut: WETH_ADDRESS, - fee: POOL_FEE, - recipient: manipulator, - deadline: block.timestamp, - amountIn: amountIn, - amountOutMinimum: 0, - sqrtPriceLimitX96: 0 - }); + ISwapRouter.ExactInputSingleParams memory paramsIn = ISwapRouter.ExactInputSingleParams({ + tokenIn: OP_ADDRESS, + tokenOut: WETH_ADDRESS, + fee: POOL_FEE, + recipient: manipulator, + deadline: block.timestamp, + amountIn: amountIn, + amountOutMinimum: 0, + sqrtPriceLimitX96: 0 + }); IERC20(OP_ADDRESS).approve(address(swapRouter), amountIn); swapRouter.exactInputSingle(paramsIn); vm.stopPrank(); @@ -223,17 +221,16 @@ contract UniswapOracleTest is Test { vm.startPrank(manipulator); uint256 reserve = IERC20(OP_ADDRESS).balanceOf(WETH_OP_POOL_ADDRESS); uint256 amountIn = reserve / 4; - ISwapRouter.ExactInputSingleParams memory paramsIn = - ISwapRouter.ExactInputSingleParams({ - tokenIn: OP_ADDRESS, - tokenOut: WETH_ADDRESS, - fee: POOL_FEE, - recipient: manipulator, - deadline: block.timestamp, - amountIn: amountIn, - amountOutMinimum: 0, - sqrtPriceLimitX96: 0 - }); + ISwapRouter.ExactInputSingleParams memory paramsIn = ISwapRouter.ExactInputSingleParams({ + tokenIn: OP_ADDRESS, + tokenOut: WETH_ADDRESS, + fee: POOL_FEE, + recipient: manipulator, + deadline: block.timestamp, + amountIn: amountIn, + amountOutMinimum: 0, + sqrtPriceLimitX96: 0 + }); IERC20(OP_ADDRESS).approve(address(swapRouter), amountIn); swapRouter.exactInputSingle(paramsIn); vm.stopPrank(); @@ -244,25 +241,20 @@ contract UniswapOracleTest is Test { (uint160 sqrtRatioX96,,,,,,) = IUniswapV3Pool(WETH_OP_POOL_ADDRESS).slot0(); uint256 spotPrice = computePriceFromX96(sqrtRatioX96); uint256 expectedPrice = (price_1 * (_default.secs - skipTime) + spotPrice * skipTime) / _default.secs; - + assertApproxEqRel(oracle.getPrice(), expectedPrice, 0.001 ether, "price variance too large"); } function computePriceFromX96(uint160 sqrtRatioX96) internal view returns (uint256 price) { bool isToken0 = OP_ADDRESS == IUniswapV3Pool(WETH_OP_POOL_ADDRESS).token0(); - uint decimals = 1e18; + uint256 decimals = 1e18; if (sqrtRatioX96 <= type(uint128).max) { uint256 ratioX192 = uint256(sqrtRatioX96) * sqrtRatioX96; - price = isToken0 - ? FullMath.mulDiv(ratioX192, decimals, 1 << 192) - : FullMath.mulDiv(1 << 192, decimals, ratioX192); + price = isToken0 ? FullMath.mulDiv(ratioX192, decimals, 1 << 192) : FullMath.mulDiv(1 << 192, decimals, ratioX192); } else { uint256 ratioX128 = FullMath.mulDiv(sqrtRatioX96, sqrtRatioX96, 1 << 64); - price = isToken0 - ? FullMath.mulDiv(ratioX128, decimals, 1 << 128) - : FullMath.mulDiv(1 << 128, decimals, ratioX128); + price = isToken0 ? FullMath.mulDiv(ratioX128, decimals, 1 << 128) : FullMath.mulDiv(1 << 128, decimals, ratioX128); } } - } diff --git a/test/interfaces/ISwapRouter.sol b/test/interfaces/ISwapRouter.sol index b5fd3dd..339cf15 100644 --- a/test/interfaces/ISwapRouter.sol +++ b/test/interfaces/ISwapRouter.sol @@ -2,7 +2,7 @@ pragma solidity >=0.7.5; pragma abicoder v2; -import 'v3-core/interfaces/callback/IUniswapV3SwapCallback.sol'; +import "v3-core/interfaces/callback/IUniswapV3SwapCallback.sol"; /// @title Router token swapping functionality /// @notice Functions for swapping tokens via Uniswap V3 diff --git a/test/interfaces/IThenaRouter.sol b/test/interfaces/IThenaRouter.sol index a9f9061..a455d15 100644 --- a/test/interfaces/IThenaRouter.sol +++ b/test/interfaces/IThenaRouter.sol @@ -1,11 +1,11 @@ interface IThenaRouter { function swapExactTokensForTokensSimple( - uint amountIn, - uint amountOutMin, + uint256 amountIn, + uint256 amountOutMin, address tokenFrom, address tokenTo, bool stable, address to, - uint deadline - ) external returns (uint[] memory amounts); + uint256 deadline + ) external returns (uint256[] memory amounts); } diff --git a/test/mocks/MockBalancerTwapOracle.sol b/test/mocks/MockBalancerTwapOracle.sol index 1f31322..f14e56d 100644 --- a/test/mocks/MockBalancerTwapOracle.sol +++ b/test/mocks/MockBalancerTwapOracle.sol @@ -7,47 +7,37 @@ import {IVault} from "../../src/interfaces/IBalancerTwapOracle.sol"; contract MockVault is IVault { address[] tokens = new address[](2); - constructor (address[] memory _tokens) { + constructor(address[] memory _tokens) { tokens = _tokens; } - function joinPool( - bytes32 poolId, - address sender, - address recipient, - JoinPoolRequest memory request - ) external payable override {} - - function getPool( - bytes32 poolId - ) external view override returns (address, PoolSpecialization) {} - - function getPoolTokens( - bytes32 poolId - ) + function joinPool(bytes32 poolId, address sender, address recipient, JoinPoolRequest memory request) external - view + payable override - returns (address[] memory tokens, uint256[] memory, uint256) - { + {} + + function getPool(bytes32 poolId) external view override returns (address, PoolSpecialization) {} + + function getPoolTokens(bytes32 poolId) external view override returns (address[] memory tokens, uint256[] memory, uint256) { tokens = new address[](2); tokens[0] = tokens[0]; tokens[1] = tokens[1]; } - function swap( - SingleSwap memory singleSwap, - FundManagement memory funds, - uint256 limit, - uint256 deadline - ) external payable override returns (uint256) {} + function swap(SingleSwap memory singleSwap, FundManagement memory funds, uint256 limit, uint256 deadline) + external + payable + override + returns (uint256) + {} } contract MockBalancerTwapOracle is IBalancerTwapOracle { uint256 twapValue; IVault mockVault; - constructor (address[] memory tokens) { + constructor(address[] memory tokens) { mockVault = new MockVault(tokens); } @@ -55,32 +45,29 @@ contract MockBalancerTwapOracle is IBalancerTwapOracle { twapValue = value; } - function getTimeWeightedAverage( - IBalancerTwapOracle.OracleAverageQuery[] memory queries - ) external view override returns (uint256[] memory results) { + function getTimeWeightedAverage(IBalancerTwapOracle.OracleAverageQuery[] memory queries) + external + view + override + returns (uint256[] memory results) + { queries; results = new uint256[](1); results[0] = twapValue; } - function getLargestSafeQueryWindow() - external - pure - override - returns (uint256) - { + function getLargestSafeQueryWindow() external pure override returns (uint256) { return 24 hours; // simulates an oracle that can look back at most 24 hours } - function getPastAccumulators( - IBalancerTwapOracle.OracleAccumulatorQuery[] memory queries - ) external view override returns (int256[] memory results) { - } + function getPastAccumulators(IBalancerTwapOracle.OracleAccumulatorQuery[] memory queries) + external + view + override + returns (int256[] memory results) + {} - function getLatest( - IBalancerTwapOracle.Variable variable - ) external view override returns (uint256) { - } + function getLatest(IBalancerTwapOracle.Variable variable) external view override returns (uint256) {} function getVault() external view override returns (IVault) { return mockVault; diff --git a/test/mocks/MockUniswapPool.sol b/test/mocks/MockUniswapPool.sol index 2709b5a..c47066d 100644 --- a/test/mocks/MockUniswapPool.sol +++ b/test/mocks/MockUniswapPool.sol @@ -66,18 +66,11 @@ contract MockUniswapPool is IUniswapV3Pool { function feeGrowthGlobal1X128() external view override returns (uint256) {} - function protocolFees() - external - view - override - returns (uint128, uint128) - {} + function protocolFees() external view override returns (uint128, uint128) {} function liquidity() external view override returns (uint128) {} - function ticks( - int24 tick - ) + function ticks(int24 tick) external view override @@ -93,13 +86,9 @@ contract MockUniswapPool is IUniswapV3Pool { ) {} - function tickBitmap( - int16 wordPosition - ) external view override returns (uint256) {} + function tickBitmap(int16 wordPosition) external view override returns (uint256) {} - function positions( - bytes32 key - ) + function positions(bytes32 key) external view override @@ -112,71 +101,48 @@ contract MockUniswapPool is IUniswapV3Pool { ) {} - function observations( - uint256 index - ) + function observations(uint256 index) external view override - returns ( - uint32 blockTimestamp, - int56 tickCumulative, - uint160 secondsPerLiquidityCumulativeX128, - bool initialized - ) + returns (uint32 blockTimestamp, int56 tickCumulative, uint160 secondsPerLiquidityCumulativeX128, bool initialized) {} function initialize(uint160 sqrtPriceX96) external override {} - function mint( - address recipient, - int24 tickLower, - int24 tickUpper, - uint128 amount, - bytes calldata data - ) external override returns (uint256 amount0, uint256 amount1) {} - - function collect( - address recipient, - int24 tickLower, - int24 tickUpper, - uint128 amount0Requested, - uint128 amount1Requested - ) external override returns (uint128 amount0, uint128 amount1) {} - - function burn( - int24 tickLower, - int24 tickUpper, - uint128 amount - ) external override returns (uint256 amount0, uint256 amount1) {} - - function swap( - address recipient, - bool zeroForOne, - int256 amountSpecified, - uint160 sqrtPriceLimitX96, - bytes calldata data - ) external override returns (int256 amount0, int256 amount1) {} - - function flash( - address recipient, - uint256 amount0, - uint256 amount1, - bytes calldata data - ) external override {} - - function increaseObservationCardinalityNext( - uint16 observationCardinalityNext - ) external override {} - - function setFeeProtocol( - uint8 feeProtocol0, - uint8 feeProtocol1 - ) external override {} - - function collectProtocol( - address recipient, - uint128 amount0Requested, - uint128 amount1Requested - ) external override returns (uint128 amount0, uint128 amount1) {} + function mint(address recipient, int24 tickLower, int24 tickUpper, uint128 amount, bytes calldata data) + external + override + returns (uint256 amount0, uint256 amount1) + {} + + function collect(address recipient, int24 tickLower, int24 tickUpper, uint128 amount0Requested, uint128 amount1Requested) + external + override + returns (uint128 amount0, uint128 amount1) + {} + + function burn(int24 tickLower, int24 tickUpper, uint128 amount) + external + override + returns (uint256 amount0, uint256 amount1) + {} + + function swap(address recipient, bool zeroForOne, int256 amountSpecified, uint160 sqrtPriceLimitX96, bytes calldata data) + external + override + returns (int256 amount0, int256 amount1) + {} + + function flash(address recipient, uint256 amount0, uint256 amount1, bytes calldata data) external override {} + + function increaseObservationCardinalityNext(uint16 observationCardinalityNext) external override {} + + function setFeeProtocol(uint8 feeProtocol0, uint8 feeProtocol1) external override {} + + function collectProtocol(address recipient, uint128 amount0Requested, uint128 amount1Requested) + external + override + returns (uint128 amount0, uint128 amount1) + {} } From 0406f466e829d62eea35812814104646d915a354 Mon Sep 17 00:00:00 2001 From: Eidolon <92181746+imrtlfarm@users.noreply.github.com> Date: Thu, 11 Jan 2024 04:33:18 -0800 Subject: [PATCH 41/64] format more --- foundry.toml | 2 +- src/OptionsToken.sol | 4 +--- src/interfaces/IBalancerVault.sol | 5 +---- src/interfaces/IThenaPair.sol | 10 ++------- src/oracles/BalancerOracle.sol | 15 ++----------- src/oracles/ThenaOracle.sol | 3 +-- src/oracles/UniswapV3Oracle.sol | 12 +++------- test/BalancerOracle.t.sol | 13 ++++------- test/OptionsToken.t.sol | 32 +++++++++------------------ test/ThenaOracle.t.sol | 3 +-- test/mocks/MockBalancerTwapOracle.sol | 6 +---- test/mocks/MockUniswapPool.sol | 14 ++---------- 12 files changed, 29 insertions(+), 90 deletions(-) diff --git a/foundry.toml b/foundry.toml index 15f6ce7..2362c36 100644 --- a/foundry.toml +++ b/foundry.toml @@ -4,7 +4,7 @@ verbosity = 1 via_ir = true [fmt] -line_length = 130 +line_length = 150 # Extreme Fuzzing CI Profile :P [profile.ci] diff --git a/src/OptionsToken.sol b/src/OptionsToken.sol index 3048eea..e4df922 100644 --- a/src/OptionsToken.sol +++ b/src/OptionsToken.sol @@ -26,9 +26,7 @@ contract OptionsToken is IOptionsToken, ERC20Upgradeable, OwnableUpgradeable, UU /// Events /// ----------------------------------------------------------------------- - event Exercise( - address indexed sender, address indexed recipient, uint256 amount, address data0, uint256 data1, uint256 data2 - ); + event Exercise(address indexed sender, address indexed recipient, uint256 amount, address data0, uint256 data1, uint256 data2); event SetOracle(IOracle indexed newOracle); event SetExerciseContract(address indexed _address, bool _isExercise); diff --git a/src/interfaces/IBalancerVault.sol b/src/interfaces/IBalancerVault.sol index a67cf92..eb4630c 100644 --- a/src/interfaces/IBalancerVault.sol +++ b/src/interfaces/IBalancerVault.sol @@ -141,10 +141,7 @@ interface IVault { * * Emits a `Swap` event. */ - function swap(SingleSwap memory singleSwap, FundManagement memory funds, uint256 limit, uint256 deadline) - external - payable - returns (uint256); + function swap(SingleSwap memory singleSwap, FundManagement memory funds, uint256 limit, uint256 deadline) external payable returns (uint256); /** * @dev Data for a single swap executed by `swap`. `amount` is either `amountIn` or `amountOut` depending on diff --git a/src/interfaces/IThenaPair.sol b/src/interfaces/IThenaPair.sol index 9ab4697..76db264 100644 --- a/src/interfaces/IThenaPair.sol +++ b/src/interfaces/IThenaPair.sol @@ -7,19 +7,13 @@ interface IThenaPair { function reserve1CumulativeLast() external view returns (uint256); - function currentCumulativePrices() - external - view - returns (uint256 reserve0Cumulative, uint256 reserve1Cumulative, uint256 blockTimestamp); + function currentCumulativePrices() external view returns (uint256 reserve0Cumulative, uint256 reserve1Cumulative, uint256 blockTimestamp); function stable() external view returns (bool); function observationLength() external view returns (uint256); - function observations(uint256) - external - view - returns (uint256 timestamp, uint256 reserve0Cumulative, uint256 reserve1Cumulative); + function observations(uint256) external view returns (uint256 timestamp, uint256 reserve0Cumulative, uint256 reserve1Cumulative); function token0() external view returns (address); diff --git a/src/oracles/BalancerOracle.sol b/src/oracles/BalancerOracle.sol index e1c818f..633515e 100644 --- a/src/oracles/BalancerOracle.sol +++ b/src/oracles/BalancerOracle.sol @@ -66,14 +66,7 @@ contract BalancerOracle is IOracle, Owned { /// Constructor /// ----------------------------------------------------------------------- - constructor( - IBalancerTwapOracle balancerTwapOracle_, - address token, - address owner_, - uint56 secs_, - uint56 ago_, - uint128 minPrice_ - ) Owned(owner_) { + constructor(IBalancerTwapOracle balancerTwapOracle_, address token, address owner_, uint56 secs_, uint56 ago_, uint128 minPrice_) Owned(owner_) { balancerTwapOracle = balancerTwapOracle_; IVault vault = balancerTwapOracle.getVault(); @@ -118,11 +111,7 @@ contract BalancerOracle is IOracle, Owned { // query Balancer oracle to get TWAP value { IBalancerTwapOracle.OracleAverageQuery[] memory queries = new IBalancerTwapOracle.OracleAverageQuery[](1); - queries[0] = IBalancerTwapOracle.OracleAverageQuery({ - variable: IBalancerTwapOracle.Variable.PAIR_PRICE, - secs: secs_, - ago: ago_ - }); + queries[0] = IBalancerTwapOracle.OracleAverageQuery({variable: IBalancerTwapOracle.Variable.PAIR_PRICE, secs: secs_, ago: ago_}); price = balancerTwapOracle.getTimeWeightedAverage(queries)[0]; } diff --git a/src/oracles/ThenaOracle.sol b/src/oracles/ThenaOracle.sol index 91e33a6..1916774 100644 --- a/src/oracles/ThenaOracle.sol +++ b/src/oracles/ThenaOracle.sol @@ -97,8 +97,7 @@ contract ThenaOracle is IOracle, Owned { thenaPair.observations(observationLength - 1); uint32 T = uint32(blockTimestampCurrent - blockTimestampLast); if (T < secs_) { - (blockTimestampLast, reserve0CumulativeLast, reserve1CumulativeLast) = - thenaPair.observations(observationLength - 2); + (blockTimestampLast, reserve0CumulativeLast, reserve1CumulativeLast) = thenaPair.observations(observationLength - 2); T = uint32(blockTimestampCurrent - blockTimestampLast); } uint112 reserve0 = safe112((reserve0CumulativeCurrent - reserve0CumulativeLast) / T); diff --git a/src/oracles/UniswapV3Oracle.sol b/src/oracles/UniswapV3Oracle.sol index 2bb3588..de15ef6 100644 --- a/src/oracles/UniswapV3Oracle.sol +++ b/src/oracles/UniswapV3Oracle.sol @@ -66,9 +66,7 @@ contract UniswapV3Oracle is IOracle, Owned { /// Constructor /// ----------------------------------------------------------------------- - constructor(IUniswapV3Pool uniswapPool_, address token, address owner_, uint32 secs_, uint32 ago_, uint128 minPrice_) - Owned(owner_) - { + constructor(IUniswapV3Pool uniswapPool_, address token, address owner_, uint32 secs_, uint32 ago_, uint128 minPrice_) Owned(owner_) { uniswapPool = uniswapPool_; isToken0 = token == uniswapPool_.token0(); secs = secs_; @@ -113,14 +111,10 @@ contract UniswapV3Oracle is IOracle, Owned { // Calculate quoteAmount with better precision if it doesn't overflow when multiplied by itself if (sqrtRatioX96 <= type(uint128).max) { uint256 ratioX192 = uint256(sqrtRatioX96) * sqrtRatioX96; - price = isToken0 - ? FullMath.mulDiv(ratioX192, decimalPrecision, 1 << 192) - : FullMath.mulDiv(1 << 192, decimalPrecision, ratioX192); + price = isToken0 ? FullMath.mulDiv(ratioX192, decimalPrecision, 1 << 192) : FullMath.mulDiv(1 << 192, decimalPrecision, ratioX192); } else { uint256 ratioX128 = FullMath.mulDiv(sqrtRatioX96, sqrtRatioX96, 1 << 64); - price = isToken0 - ? FullMath.mulDiv(ratioX128, decimalPrecision, 1 << 128) - : FullMath.mulDiv(1 << 128, decimalPrecision, ratioX128); + price = isToken0 ? FullMath.mulDiv(ratioX128, decimalPrecision, 1 << 128) : FullMath.mulDiv(1 << 128, decimalPrecision, ratioX128); } } diff --git a/test/BalancerOracle.t.sol b/test/BalancerOracle.t.sol index e91c8f6..05cc0c6 100644 --- a/test/BalancerOracle.t.sol +++ b/test/BalancerOracle.t.sol @@ -166,9 +166,8 @@ contract BalancerOracleTest is Test { // weighted average of the first recorded oracle price and the current spot price // weighted by the time since the last update - uint256 spotAverage = ( - (price_1 * (_default.secs - skipTime)) + (getSpotPrice(address(_default.pair), _default.token) * skipTime) - ) / _default.secs; + uint256 spotAverage = + ((price_1 * (_default.secs - skipTime)) + (getSpotPrice(address(_default.pair), _default.token) * skipTime)) / _default.secs; assertApproxEqRel(spotAverage, oracle.getPrice(), 0.01 ether, "price variance too large"); } @@ -187,13 +186,9 @@ contract BalancerOracleTest is Test { : (balances[0] * weights[1]).divWadDown(balances[1] * weights[0]); } - function swap(address pool, address tokenIn, address tokenOut, uint256 amountIn, address sender) - internal - returns (uint256 amountOut) - { + function swap(address pool, address tokenIn, address tokenOut, uint256 amountIn, address sender) internal returns (uint256 amountOut) { bytes32 poolId = IBalancerTwapOracle(pool).getPoolId(); - IVault.SingleSwap memory singleSwap = - IVault.SingleSwap(poolId, IVault.SwapKind.GIVEN_IN, IAsset(tokenIn), IAsset(tokenOut), amountIn, ""); + IVault.SingleSwap memory singleSwap = IVault.SingleSwap(poolId, IVault.SwapKind.GIVEN_IN, IAsset(tokenIn), IAsset(tokenOut), amountIn, ""); IVault.FundManagement memory funds = IVault.FundManagement(sender, false, payable(sender), false); diff --git a/test/OptionsToken.t.sol b/test/OptionsToken.t.sol index e88d2d7..8302af2 100644 --- a/test/OptionsToken.t.sol +++ b/test/OptionsToken.t.sol @@ -111,8 +111,7 @@ contract OptionsTokenTest is Test { paymentToken.mint(address(this), expectedPaymentAmount); // exercise options tokens - DiscountExerciseParams memory params = - DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max}); + DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max}); (uint256 paymentAmount,,,) = optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); // verify options tokens were transferred @@ -123,12 +122,8 @@ contract OptionsTokenTest is Test { assertEqDecimal(paymentToken.balanceOf(address(this)), 0, 18, "user still has payment tokens"); uint256 paymentFee1 = expectedPaymentAmount.mulDivDown(feeBPS_[0], 10000); uint256 paymentFee2 = expectedPaymentAmount - paymentFee1; - assertEqDecimal( - paymentToken.balanceOf(feeRecipients_[0]), paymentFee1, 18, "fee recipient 1 didn't receive payment tokens" - ); - assertEqDecimal( - paymentToken.balanceOf(feeRecipients_[1]), paymentFee2, 18, "fee recipient 2 didn't receive payment tokens" - ); + assertEqDecimal(paymentToken.balanceOf(feeRecipients_[0]), paymentFee1, 18, "fee recipient 1 didn't receive payment tokens"); + assertEqDecimal(paymentToken.balanceOf(feeRecipients_[1]), paymentFee2, 18, "fee recipient 2 didn't receive payment tokens"); assertEqDecimal(paymentAmount, expectedPaymentAmount, 18, "exercise returned wrong value"); } @@ -147,8 +142,7 @@ contract OptionsTokenTest is Test { paymentToken.mint(address(this), expectedPaymentAmount); // exercise options tokens - DiscountExerciseParams memory params = - DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max}); + DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max}); vm.expectRevert(bytes4(keccak256("BalancerOracle__BelowMinPrice()"))); optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); } @@ -168,8 +162,7 @@ contract OptionsTokenTest is Test { paymentToken.mint(address(this), expectedPaymentAmount); // exercise options tokens - DiscountExerciseParams memory params = - DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max}); + DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max}); (uint256 paidAmount,,,) = optionsToken.exercise(amount, address(this), address(exerciser), abi.encode(params)); // update multiplier @@ -201,8 +194,7 @@ contract OptionsTokenTest is Test { paymentToken.mint(address(this), expectedPaymentAmount); // exercise options tokens which should fail - DiscountExerciseParams memory params = - DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount - 1, deadline: type(uint256).max}); + DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount - 1, deadline: type(uint256).max}); vm.expectRevert(DiscountExercise.Exercise__SlippageTooHigh.selector); optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); } @@ -225,8 +217,7 @@ contract OptionsTokenTest is Test { oracle.setParams(ORACLE_SECS, ORACLE_LARGEST_SAFETY_WINDOW, ORACLE_MIN_PRICE); // exercise options tokens which should fail - DiscountExerciseParams memory params = - DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max}); + DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max}); vm.expectRevert(BalancerOracle.BalancerOracle__TWAPOracleNotReady.selector); optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); } @@ -244,8 +235,7 @@ contract OptionsTokenTest is Test { paymentToken.mint(address(this), expectedPaymentAmount); // exercise options tokens - DiscountExerciseParams memory params = - DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: deadline}); + DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: deadline}); if (amount != 0) { vm.expectRevert(DiscountExercise.Exercise__PastDeadline.selector); } @@ -263,8 +253,7 @@ contract OptionsTokenTest is Test { paymentToken.mint(address(this), expectedPaymentAmount); // exercise options tokens which should fail - DiscountExerciseParams memory params = - DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max}); + DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max}); vm.expectRevert(BaseExercise.Exercise__NotOToken.selector); exerciser.exercise(address(this), amount, recipient, abi.encode(params)); } @@ -285,8 +274,7 @@ contract OptionsTokenTest is Test { paymentToken.mint(address(this), expectedPaymentAmount); // exercise options tokens which should fail - DiscountExerciseParams memory params = - DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max}); + DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max}); vm.expectRevert(OptionsToken.OptionsToken__NotExerciseContract.selector); optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); } diff --git a/test/ThenaOracle.t.sol b/test/ThenaOracle.t.sol index 26e5219..0b592be 100644 --- a/test/ThenaOracle.t.sol +++ b/test/ThenaOracle.t.sol @@ -188,8 +188,7 @@ contract ThenaOracleTest is Test { // wait skip(skipTime); - uint256 expectedMinPrice = - (price_1 * (_default.secs - skipTime) + getSpotPrice(_default.pair, _default.token) * skipTime) / _default.secs; + uint256 expectedMinPrice = (price_1 * (_default.secs - skipTime) + getSpotPrice(_default.pair, _default.token) * skipTime) / _default.secs; assertGeDecimal(oracle.getPrice(), expectedMinPrice, 18, "price variation too large"); } diff --git a/test/mocks/MockBalancerTwapOracle.sol b/test/mocks/MockBalancerTwapOracle.sol index f14e56d..3d0eb2c 100644 --- a/test/mocks/MockBalancerTwapOracle.sol +++ b/test/mocks/MockBalancerTwapOracle.sol @@ -11,11 +11,7 @@ contract MockVault is IVault { tokens = _tokens; } - function joinPool(bytes32 poolId, address sender, address recipient, JoinPoolRequest memory request) - external - payable - override - {} + function joinPool(bytes32 poolId, address sender, address recipient, JoinPoolRequest memory request) external payable override {} function getPool(bytes32 poolId) external view override returns (address, PoolSpecialization) {} diff --git a/test/mocks/MockUniswapPool.sol b/test/mocks/MockUniswapPool.sol index c47066d..42cd0ba 100644 --- a/test/mocks/MockUniswapPool.sol +++ b/test/mocks/MockUniswapPool.sol @@ -92,13 +92,7 @@ contract MockUniswapPool is IUniswapV3Pool { external view override - returns ( - uint128 _liquidity, - uint256 feeGrowthInside0LastX128, - uint256 feeGrowthInside1LastX128, - uint128 tokensOwed0, - uint128 tokensOwed1 - ) + returns (uint128 _liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1) {} function observations(uint256 index) @@ -122,11 +116,7 @@ contract MockUniswapPool is IUniswapV3Pool { returns (uint128 amount0, uint128 amount1) {} - function burn(int24 tickLower, int24 tickUpper, uint128 amount) - external - override - returns (uint256 amount0, uint256 amount1) - {} + function burn(int24 tickLower, int24 tickUpper, uint128 amount) external override returns (uint256 amount0, uint256 amount1) {} function swap(address recipient, bool zeroForOne, int256 amountSpecified, uint160 sqrtPriceLimitX96, bytes calldata data) external From 1075484cd6cae3b1cdfec618763825c04a058b60 Mon Sep 17 00:00:00 2001 From: Eidolon <92181746+imrtlfarm@users.noreply.github.com> Date: Thu, 11 Jan 2024 04:40:18 -0800 Subject: [PATCH 42/64] Update README.md --- README.md | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ba1fdbf..9548b78 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,22 @@ # OptionsToken -An options token representing the right to purchase the underlying token at an oracle-specified rate. It's similar to a call option but with a variable strike price that's always at a certain discount to the market price. -It also has no expiry date. +An options token representing the right to exercise any one of the whitelisted exercise contracts, allowing the user to receive different forms of discounted assets in return for the appropriate payment. The option does not expire. The options token receives user input and a specified exercise contract address, passing through to the exercise contract to execute the option. We fork https://github.com/timeless-fi/options-token, which is a simple implementation of an option for discounted tokens at an adjusted oracle rate. Here, we divorce the exercise functionality from the token contract, and allow an admin to whitelist and fund exercise contracts as the desired. We also implement more potential oracle types, and make several other minor changes. + +We want to ensure there are no attacks on pricing in DiscountExercise, atomically or otherwise, in each oracle implementation. We want to ensure users will never pay more than maxPaymentAmount. When properly specified, this should ensure users experience no more deviation in price than they specify. + +Given the nature of this token, it is fine for the admin to have some centralized permissions (admin can mint tokens, admin is the one who funds exercise contracts, etc). The team is responsible for refilling the exercise contracts. We limit the amount of funds we leave in an exercise contract at any given time to limit risk. + +# Flow of an Option Token Exercise (Ex. Discount Exercise) + +The user will always interact with the OptionsToken itself, and never with any exercise contract directly. + +1. The user approves OptionsToken the amount of WETH they wish to spend +2. User calls exercise on the OptionsToken, specifying their desired exercise contract and encoding exercise parameters +3. OptionsToken validates the exercise contract, decodes the parameters for the exercise function on the exercise contract of choice, and calls said function. In the case of DiscountExercise, the params are maxPaymentAmount and deadline. +4. oTokens are burnt, WETH is sent to the treasury, and underlyingTokens, discounted by the multiplier, are sent to the user exercising + a. Can be priced using balancer, thena, univ3 twap oracles + b. Reverts above maxPaymentAmount or past deadline + ## Installation From 9aa8a91e6788ada2354682e43e781e1c691af574 Mon Sep 17 00:00:00 2001 From: lookeey <71905281+lookeey@users.noreply.github.com> Date: Tue, 23 Jan 2024 13:41:49 -0300 Subject: [PATCH 43/64] audit review --- hardhat.config.ts | 17 +- package-lock.json | 485 +++++--------------------- package.json | 3 + script/DeployThena.s.sol | 72 ---- src/OptionsToken.sol | 7 +- src/exercise/BaseExercise.sol | 25 +- src/exercise/DiscountExercise.sol | 44 ++- src/interfaces/IOracle.sol | 3 + src/oracles/BalancerOracle.sol | 24 ++ src/oracles/ThenaOracle.sol | 20 +- src/oracles/UniswapV3Oracle.sol | 18 +- test/OptionsToken.t.sol | 7 +- test/mocks/MockBalancerTwapOracle.sol | 8 +- test/mocks/OptionsTokenV2.sol | 195 +++++++++++ test_hardhat/OptionsToken.ts | 51 +++ 15 files changed, 475 insertions(+), 504 deletions(-) delete mode 100644 script/DeployThena.s.sol create mode 100644 test/mocks/OptionsTokenV2.sol create mode 100644 test_hardhat/OptionsToken.ts diff --git a/hardhat.config.ts b/hardhat.config.ts index 860e869..b7c2f29 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -2,6 +2,11 @@ import { HardhatUserConfig } from "hardhat/config"; import "@nomicfoundation/hardhat-toolbox"; import '@openzeppelin/hardhat-upgrades'; import "@nomicfoundation/hardhat-foundry"; +import glob from "glob"; +import {TASK_COMPILE_SOLIDITY_GET_SOURCE_PATHS} from "hardhat/builtin-tasks/task-names"; +import path from "path"; +import { subtask } from "hardhat/config"; + import { config as dotenvConfig } from "dotenv"; dotenvConfig(); @@ -16,7 +21,8 @@ const config: HardhatUserConfig = { } }, paths: { - sources: "./src" + sources: "./src", + tests: "./test_hardhat", }, networks: { op: { @@ -37,4 +43,13 @@ const config: HardhatUserConfig = { }, }; +subtask(TASK_COMPILE_SOLIDITY_GET_SOURCE_PATHS).setAction(async (_, hre, runSuper) => { + const paths = await runSuper(); + + const otherDirectoryGlob = path.join(hre.config.paths.root, "test", "**", "*.sol"); + const otherPaths = glob.sync(otherDirectoryGlob); + + return [...paths, ...otherPaths]; +}); + export default config; diff --git a/package-lock.json b/package-lock.json index 21f914d..6d88e8c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,9 @@ "name": "options-token", "version": "1.0.0", "license": "AGPL-3.0", + "dependencies": { + "@nomicfoundation/hardhat-network-helpers": "^1.0.10" + }, "devDependencies": { "@nomicfoundation/hardhat-ethers": "^3.0.5", "@nomicfoundation/hardhat-foundry": "^1.1.1", @@ -89,14 +92,12 @@ "node_modules/@chainsafe/as-sha256": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/@chainsafe/as-sha256/-/as-sha256-0.3.1.tgz", - "integrity": "sha512-hldFFYuf49ed7DAakWVXSJODuq3pzJEguD8tQ7h+sGkM18vja+OFoJI9krnGmgzyuZC2ETX0NOIcCTy31v2Mtg==", - "dev": true + "integrity": "sha512-hldFFYuf49ed7DAakWVXSJODuq3pzJEguD8tQ7h+sGkM18vja+OFoJI9krnGmgzyuZC2ETX0NOIcCTy31v2Mtg==" }, "node_modules/@chainsafe/persistent-merkle-tree": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.4.2.tgz", "integrity": "sha512-lLO3ihKPngXLTus/L7WHKaw9PnNJWizlOF1H9NNzHP6Xvh82vzg9F2bzkXhYIFshMZ2gTCEz8tq6STe7r5NDfQ==", - "dev": true, "dependencies": { "@chainsafe/as-sha256": "^0.3.1" } @@ -105,7 +106,6 @@ "version": "0.9.4", "resolved": "https://registry.npmjs.org/@chainsafe/ssz/-/ssz-0.9.4.tgz", "integrity": "sha512-77Qtg2N1ayqs4Bg/wvnWfg5Bta7iy7IRh8XqXh7oNMeP2HBbBwx8m6yTpA8p0EHItWPEBkgZd5S5/LSlp3GXuQ==", - "dev": true, "dependencies": { "@chainsafe/as-sha256": "^0.3.1", "@chainsafe/persistent-merkle-tree": "^0.4.2", @@ -116,7 +116,7 @@ "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, + "devOptional": true, "peer": true, "dependencies": { "@jridgewell/trace-mapping": "0.3.9" @@ -196,7 +196,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", - "dev": true, "funding": [ { "type": "individual", @@ -223,7 +222,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", - "dev": true, "funding": [ { "type": "individual", @@ -248,7 +246,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", - "dev": true, "funding": [ { "type": "individual", @@ -271,7 +268,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", - "dev": true, "funding": [ { "type": "individual", @@ -294,7 +290,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", - "dev": true, "funding": [ { "type": "individual", @@ -313,7 +308,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", - "dev": true, "funding": [ { "type": "individual", @@ -333,7 +327,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", - "dev": true, "funding": [ { "type": "individual", @@ -354,7 +347,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", - "dev": true, "funding": [ { "type": "individual", @@ -373,7 +365,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", - "dev": true, "funding": [ { "type": "individual", @@ -392,7 +383,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", - "dev": true, "funding": [ { "type": "individual", @@ -420,7 +410,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", - "dev": true, "funding": [ { "type": "individual", @@ -447,7 +436,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", - "dev": true, "funding": [ { "type": "individual", @@ -477,7 +465,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", - "dev": true, "funding": [ { "type": "individual", @@ -507,14 +494,12 @@ "node_modules/@ethersproject/json-wallets/node_modules/aes-js": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", - "dev": true + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" }, "node_modules/@ethersproject/keccak256": { "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", - "dev": true, "funding": [ { "type": "individual", @@ -534,7 +519,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", - "dev": true, "funding": [ { "type": "individual", @@ -550,7 +534,6 @@ "version": "5.7.1", "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", - "dev": true, "funding": [ { "type": "individual", @@ -569,7 +552,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", - "dev": true, "funding": [ { "type": "individual", @@ -589,7 +571,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", - "dev": true, "funding": [ { "type": "individual", @@ -608,7 +589,6 @@ "version": "5.7.2", "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", - "dev": true, "funding": [ { "type": "individual", @@ -646,7 +626,6 @@ "version": "7.4.6", "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "dev": true, "engines": { "node": ">=8.3.0" }, @@ -667,7 +646,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", - "dev": true, "funding": [ { "type": "individual", @@ -687,7 +665,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", - "dev": true, "funding": [ { "type": "individual", @@ -707,7 +684,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", - "dev": true, "funding": [ { "type": "individual", @@ -728,7 +704,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", - "dev": true, "funding": [ { "type": "individual", @@ -752,7 +727,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", - "dev": true, "funding": [ { "type": "individual", @@ -776,7 +750,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", - "dev": true, "funding": [ { "type": "individual", @@ -797,7 +770,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", - "dev": true, "funding": [ { "type": "individual", @@ -824,7 +796,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", - "dev": true, "funding": [ { "type": "individual", @@ -845,7 +816,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", - "dev": true, "funding": [ { "type": "individual", @@ -878,7 +848,6 @@ "version": "5.7.1", "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", - "dev": true, "funding": [ { "type": "individual", @@ -901,7 +870,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", - "dev": true, "funding": [ { "type": "individual", @@ -924,7 +892,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.0.tgz", "integrity": "sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==", - "dev": true, "engines": { "node": ">=14" } @@ -933,7 +900,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true, + "devOptional": true, "peer": true, "engines": { "node": ">=6.0.0" @@ -943,14 +910,14 @@ "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true, + "devOptional": true, "peer": true }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, + "devOptional": true, "peer": true, "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", @@ -961,7 +928,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz", "integrity": "sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==", - "dev": true, "dependencies": { "ethereumjs-abi": "^0.6.8", "ethereumjs-util": "^6.2.1", @@ -977,7 +943,6 @@ "version": "4.11.6", "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", - "dev": true, "dependencies": { "@types/node": "*" } @@ -985,14 +950,12 @@ "node_modules/@metamask/eth-sig-util/node_modules/bn.js": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" }, "node_modules/@metamask/eth-sig-util/node_modules/ethereumjs-util": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", - "dev": true, "dependencies": { "@types/bn.js": "^4.11.3", "bn.js": "^4.11.0", @@ -1031,7 +994,6 @@ "version": "1.7.1", "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz", "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==", - "dev": true, "funding": [ { "type": "individual", @@ -1081,7 +1043,6 @@ "version": "5.0.2", "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-5.0.2.tgz", "integrity": "sha512-hSe6CuHI4SsSiWWjHDIzWhSiAVpzMUcDRpWYzN0T9l8/Rz7xNn3elwVOJ/tAyS0LqL6vitUD78Uk7lQDXZun7Q==", - "dev": true, "dependencies": { "@nomicfoundation/ethereumjs-common": "4.0.2", "@nomicfoundation/ethereumjs-rlp": "5.0.2", @@ -1099,7 +1060,6 @@ "version": "5.7.2", "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", - "dev": true, "funding": [ { "type": "individual", @@ -1147,7 +1107,6 @@ "version": "7.0.2", "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-7.0.2.tgz", "integrity": "sha512-8UUsSXJs+MFfIIAKdh3cG16iNmWzWC/91P40sazNvrqhhdR/RtGDlFk2iFTGbBAZPs2+klZVzhRX8m2wvuvz3w==", - "dev": true, "dependencies": { "@nomicfoundation/ethereumjs-block": "5.0.2", "@nomicfoundation/ethereumjs-common": "4.0.2", @@ -1171,7 +1130,6 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.2.tgz", "integrity": "sha512-I2WGP3HMGsOoycSdOTSqIaES0ughQTueOsddJ36aYVpI3SN8YSusgRFLwzDJwRFVIYDKx/iJz0sQ5kBHVgdDwg==", - "dev": true, "dependencies": { "@nomicfoundation/ethereumjs-util": "9.0.2", "crc-32": "^1.2.0" @@ -1181,7 +1139,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-3.0.2.tgz", "integrity": "sha512-8PfoOQCcIcO9Pylq0Buijuq/O73tmMVURK0OqdjhwqcGHYC2PwhbajDh7GZ55ekB0Px197ajK3PQhpKoiI/UPg==", - "dev": true, "dependencies": { "@nomicfoundation/ethereumjs-block": "5.0.2", "@nomicfoundation/ethereumjs-rlp": "5.0.2", @@ -1198,7 +1155,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-2.0.2.tgz", "integrity": "sha512-rBLcUaUfANJxyOx9HIdMX6uXGin6lANCulIm/pjMgRqfiCRMZie3WKYxTSd8ZE/d+qT+zTedBF4+VHTdTSePmQ==", - "dev": true, "dependencies": { "@ethersproject/providers": "^5.7.1", "@nomicfoundation/ethereumjs-common": "4.0.2", @@ -1217,7 +1173,6 @@ "version": "5.0.2", "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.2.tgz", "integrity": "sha512-QwmemBc+MMsHJ1P1QvPl8R8p2aPvvVcKBbvHnQOKBpBztEo0omN0eaob6FeZS/e3y9NSe+mfu3nNFBHszqkjTA==", - "dev": true, "bin": { "rlp": "bin/rlp" }, @@ -1229,7 +1184,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-2.0.2.tgz", "integrity": "sha512-dlKy5dIXLuDubx8Z74sipciZnJTRSV/uHG48RSijhgm1V7eXYFC567xgKtsKiVZB1ViTP9iFL4B6Je0xD6X2OA==", - "dev": true, "dependencies": { "@nomicfoundation/ethereumjs-common": "4.0.2", "@nomicfoundation/ethereumjs-rlp": "5.0.2", @@ -1243,7 +1197,6 @@ "version": "5.7.2", "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", - "dev": true, "funding": [ { "type": "individual", @@ -1291,7 +1244,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-6.0.2.tgz", "integrity": "sha512-yw8vg9hBeLYk4YNg5MrSJ5H55TLOv2FSWUTROtDtTMMmDGROsAu+0tBjiNGTnKRi400M6cEzoFfa89Fc5k8NTQ==", - "dev": true, "dependencies": { "@nomicfoundation/ethereumjs-rlp": "5.0.2", "@nomicfoundation/ethereumjs-util": "9.0.2", @@ -1307,7 +1259,6 @@ "version": "5.0.2", "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.2.tgz", "integrity": "sha512-T+l4/MmTp7VhJeNloMkM+lPU3YMUaXdcXgTGCf8+ZFvV9NYZTRLFekRwlG6/JMmVfIfbrW+dRRJ9A6H5Q/Z64g==", - "dev": true, "dependencies": { "@chainsafe/ssz": "^0.9.2", "@ethersproject/providers": "^5.7.2", @@ -1324,7 +1275,6 @@ "version": "9.0.2", "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.2.tgz", "integrity": "sha512-4Wu9D3LykbSBWZo8nJCnzVIYGvGCuyiYLIJa9XXNVt1q1jUzHdB+sJvx95VGCpPkCT+IbLecW6yfzy3E1bQrwQ==", - "dev": true, "dependencies": { "@chainsafe/ssz": "^0.10.0", "@nomicfoundation/ethereumjs-rlp": "5.0.2", @@ -1338,7 +1288,6 @@ "version": "0.5.0", "resolved": "https://registry.npmjs.org/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.5.0.tgz", "integrity": "sha512-l0V1b5clxA3iwQLXP40zYjyZYospQLZXzBVIhhr9kDg/1qHZfzzHw0jj4VPBijfYCArZDlPkRi1wZaV2POKeuw==", - "dev": true, "dependencies": { "@chainsafe/as-sha256": "^0.3.1" } @@ -1347,7 +1296,6 @@ "version": "0.10.2", "resolved": "https://registry.npmjs.org/@chainsafe/ssz/-/ssz-0.10.2.tgz", "integrity": "sha512-/NL3Lh8K+0q7A3LsiFq09YXS9fPE+ead2rr7vM2QK8PLzrNsw3uqrif9bpRX5UxgeRjM+vYi+boCM3+GM4ovXg==", - "dev": true, "dependencies": { "@chainsafe/as-sha256": "^0.3.1", "@chainsafe/persistent-merkle-tree": "^0.5.0" @@ -1357,7 +1305,6 @@ "version": "7.0.2", "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-7.0.2.tgz", "integrity": "sha512-Bj3KZT64j54Tcwr7Qm/0jkeZXJMfdcAtRBedou+Hx0dPOSIgqaIr0vvLwP65TpHbak2DmAq+KJbW2KNtIoFwvA==", - "dev": true, "dependencies": { "@nomicfoundation/ethereumjs-block": "5.0.2", "@nomicfoundation/ethereumjs-blockchain": "7.0.2", @@ -1426,8 +1373,6 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.0.10.tgz", "integrity": "sha512-R35/BMBlx7tWN5V6d/8/19QCwEmIdbnA4ZrsuXgvs8i2qFx5i7h6mH5pBS4Pwi4WigLH+upl6faYusrNPuzMrQ==", - "dev": true, - "peer": true, "dependencies": { "ethereumjs-util": "^7.1.4" }, @@ -1485,7 +1430,6 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.1.tgz", "integrity": "sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg==", - "dev": true, "engines": { "node": ">= 12" }, @@ -1509,7 +1453,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "darwin" @@ -1525,7 +1468,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "darwin" @@ -1541,7 +1483,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "freebsd" @@ -1557,7 +1498,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -1573,7 +1513,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -1589,7 +1528,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -1605,7 +1543,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -1621,7 +1558,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "win32" @@ -1637,7 +1573,6 @@ "cpu": [ "ia32" ], - "dev": true, "optional": true, "os": [ "win32" @@ -1653,7 +1588,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "win32" @@ -1965,7 +1899,6 @@ "version": "1.1.5", "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.5.tgz", "integrity": "sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ==", - "dev": true, "funding": { "url": "https://paulmillr.com/funding/" } @@ -2029,7 +1962,6 @@ "version": "5.30.0", "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz", "integrity": "sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==", - "dev": true, "dependencies": { "@sentry/hub": "5.30.0", "@sentry/minimal": "5.30.0", @@ -2044,14 +1976,12 @@ "node_modules/@sentry/core/node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@sentry/hub": { "version": "5.30.0", "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz", "integrity": "sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==", - "dev": true, "dependencies": { "@sentry/types": "5.30.0", "@sentry/utils": "5.30.0", @@ -2064,14 +1994,12 @@ "node_modules/@sentry/hub/node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@sentry/minimal": { "version": "5.30.0", "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz", "integrity": "sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==", - "dev": true, "dependencies": { "@sentry/hub": "5.30.0", "@sentry/types": "5.30.0", @@ -2084,14 +2012,12 @@ "node_modules/@sentry/minimal/node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@sentry/node": { "version": "5.30.0", "resolved": "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz", "integrity": "sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==", - "dev": true, "dependencies": { "@sentry/core": "5.30.0", "@sentry/hub": "5.30.0", @@ -2110,14 +2036,12 @@ "node_modules/@sentry/node/node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@sentry/tracing": { "version": "5.30.0", "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz", "integrity": "sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==", - "dev": true, "dependencies": { "@sentry/hub": "5.30.0", "@sentry/minimal": "5.30.0", @@ -2132,14 +2056,12 @@ "node_modules/@sentry/tracing/node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@sentry/types": { "version": "5.30.0", "resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz", "integrity": "sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==", - "dev": true, "engines": { "node": ">=6" } @@ -2148,7 +2070,6 @@ "version": "5.30.0", "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz", "integrity": "sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==", - "dev": true, "dependencies": { "@sentry/types": "5.30.0", "tslib": "^1.9.3" @@ -2160,8 +2081,7 @@ "node_modules/@sentry/utils/node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@smithy/types": { "version": "2.8.0", @@ -2195,28 +2115,28 @@ "version": "1.0.9", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true, + "devOptional": true, "peer": true }, "node_modules/@tsconfig/node12": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true, + "devOptional": true, "peer": true }, "node_modules/@tsconfig/node14": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true, + "devOptional": true, "peer": true }, "node_modules/@tsconfig/node16": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "dev": true, + "devOptional": true, "peer": true }, "node_modules/@typechain/ethers-v6": { @@ -2255,7 +2175,6 @@ "version": "5.1.5", "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.5.tgz", "integrity": "sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==", - "dev": true, "dependencies": { "@types/node": "*" } @@ -2311,8 +2230,7 @@ "node_modules/@types/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", - "dev": true + "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==" }, "node_modules/@types/minimatch": { "version": "5.1.2", @@ -2332,7 +2250,6 @@ "version": "20.10.6", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.6.tgz", "integrity": "sha512-Vac8H+NlRNNlAmDfGUP7b5h/KA+AtWIzuXy0E6OyP8f1tCLYAtPvKRRDJjAPqhpCb0t6U2j7/xqAuLEebW2kiw==", - "dev": true, "dependencies": { "undici-types": "~5.26.4" } @@ -2341,7 +2258,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.2.tgz", "integrity": "sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==", - "dev": true, "dependencies": { "@types/node": "*" } @@ -2364,7 +2280,6 @@ "version": "2.3.15", "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-2.3.15.tgz", "integrity": "sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ==", - "dev": true, "dependencies": { "@types/node": "*", "safe-buffer": "~5.1.1" @@ -2373,14 +2288,12 @@ "node_modules/@types/readable-stream/node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "node_modules/@types/secp256k1": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.6.tgz", "integrity": "sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==", - "dev": true, "dependencies": { "@types/node": "*" } @@ -2396,7 +2309,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/abstract-level/-/abstract-level-1.0.3.tgz", "integrity": "sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA==", - "dev": true, "dependencies": { "buffer": "^6.0.3", "catering": "^2.1.0", @@ -2414,7 +2326,7 @@ "version": "8.11.3", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", - "dev": true, + "devOptional": true, "peer": true, "bin": { "acorn": "bin/acorn" @@ -2427,7 +2339,7 @@ "version": "8.3.1", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.1.tgz", "integrity": "sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==", - "dev": true, + "devOptional": true, "peer": true, "engines": { "node": ">=0.4.0" @@ -2447,7 +2359,6 @@ "version": "0.4.16", "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", - "dev": true, "engines": { "node": ">=0.3.0" } @@ -2462,7 +2373,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, "dependencies": { "debug": "4" }, @@ -2474,7 +2384,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -2539,7 +2448,6 @@ "version": "4.1.3", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true, "engines": { "node": ">=6" } @@ -2548,7 +2456,6 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, "dependencies": { "type-fest": "^0.21.3" }, @@ -2563,7 +2470,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, "engines": { "node": ">=8" } @@ -2572,7 +2478,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -2591,7 +2496,6 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -2604,14 +2508,13 @@ "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true, + "devOptional": true, "peer": true }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "node_modules/array-back": { "version": "3.1.0", @@ -2781,14 +2684,12 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/base-x": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", - "dev": true, "dependencies": { "safe-buffer": "^5.0.1" } @@ -2797,7 +2698,6 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, "funding": [ { "type": "github", @@ -2816,14 +2716,12 @@ "node_modules/bech32": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", - "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", - "dev": true + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" }, "node_modules/bigint-crypto-utils": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/bigint-crypto-utils/-/bigint-crypto-utils-3.3.0.tgz", "integrity": "sha512-jOTSb+drvEDxEq6OuUybOAv/xxoh3cuYRUIPyu8sSHQNKM303UQ2R1DAo45o1AkcIXw6fzbaFI1+xGGdaXs2lg==", - "dev": true, "engines": { "node": ">=14.0.0" } @@ -2832,7 +2730,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, "engines": { "node": ">=8" } @@ -2840,20 +2737,17 @@ "node_modules/blakejs": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", - "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", - "dev": true + "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==" }, "node_modules/bn.js": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2863,7 +2757,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, "dependencies": { "fill-range": "^7.0.1" }, @@ -2874,14 +2767,12 @@ "node_modules/brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", - "dev": true + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" }, "node_modules/browser-level": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/browser-level/-/browser-level-1.0.1.tgz", "integrity": "sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ==", - "dev": true, "dependencies": { "abstract-level": "^1.0.2", "catering": "^2.1.1", @@ -2892,14 +2783,12 @@ "node_modules/browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" }, "node_modules/browserify-aes": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, "dependencies": { "buffer-xor": "^1.0.3", "cipher-base": "^1.0.0", @@ -2913,7 +2802,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "dev": true, "dependencies": { "base-x": "^3.0.2" } @@ -2922,7 +2810,6 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", - "dev": true, "dependencies": { "bs58": "^4.0.0", "create-hash": "^1.1.0", @@ -2933,7 +2820,6 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, "funding": [ { "type": "github", @@ -2956,20 +2842,17 @@ "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, "node_modules/buffer-xor": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", - "dev": true + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, "engines": { "node": ">= 0.8" } @@ -2992,7 +2875,6 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, "engines": { "node": ">=10" }, @@ -3004,7 +2886,6 @@ "version": "1.6.3", "resolved": "https://registry.npmjs.org/case/-/case-1.6.3.tgz", "integrity": "sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==", - "dev": true, "engines": { "node": ">= 0.8.0" } @@ -3020,7 +2901,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/catering/-/catering-2.1.1.tgz", "integrity": "sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==", - "dev": true, "engines": { "node": ">=6" } @@ -3074,7 +2954,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -3111,7 +2990,6 @@ "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, "funding": [ { "type": "individual", @@ -3137,14 +3015,12 @@ "node_modules/ci-info": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" }, "node_modules/cipher-base": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -3154,7 +3030,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/classic-level/-/classic-level-1.3.0.tgz", "integrity": "sha512-iwFAJQYtqRTRM0F6L8h4JCt00ZSGdOyqh7yVrhhjrOpFhmBjNlRUey64MCiyo6UmQHMJ+No3c81nujPv+n9yrg==", - "dev": true, "hasInstallScript": true, "dependencies": { "abstract-level": "^1.0.2", @@ -3171,7 +3046,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, "engines": { "node": ">=6" } @@ -3197,7 +3071,6 @@ "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -3208,7 +3081,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, "engines": { "node": ">=8" } @@ -3217,7 +3089,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -3231,7 +3102,6 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "dependencies": { "color-name": "1.1.3" } @@ -3239,8 +3109,7 @@ "node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "node_modules/colors": { "version": "1.4.0", @@ -3267,8 +3136,7 @@ "node_modules/command-exists": { "version": "1.2.9", "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", - "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", - "dev": true + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==" }, "node_modules/command-line-args": { "version": "5.2.1", @@ -3325,8 +3193,7 @@ "node_modules/commander": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", - "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", - "dev": true + "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==" }, "node_modules/compare-versions": { "version": "6.1.0", @@ -3337,8 +3204,7 @@ "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "node_modules/concat-stream": { "version": "1.6.2", @@ -3393,7 +3259,6 @@ "version": "0.4.2", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "dev": true, "engines": { "node": ">= 0.6" } @@ -3409,7 +3274,6 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", - "dev": true, "bin": { "crc32": "bin/crc32.njs" }, @@ -3421,7 +3285,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, "dependencies": { "cipher-base": "^1.0.1", "inherits": "^2.0.1", @@ -3434,7 +3297,6 @@ "version": "1.1.7", "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, "dependencies": { "cipher-base": "^1.0.3", "create-hash": "^1.1.0", @@ -3448,7 +3310,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true, + "devOptional": true, "peer": true }, "node_modules/crypt": { @@ -3472,7 +3334,6 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -3489,7 +3350,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true, "engines": { "node": ">=10" }, @@ -3571,7 +3431,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, "engines": { "node": ">= 0.8" } @@ -3595,7 +3454,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true, "engines": { "node": ">=0.3.1" } @@ -3642,7 +3500,6 @@ "version": "6.5.4", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, "dependencies": { "bn.js": "^4.11.9", "brorand": "^1.1.0", @@ -3656,20 +3513,17 @@ "node_modules/elliptic/node_modules/bn.js": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/enquirer": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", - "dev": true, "dependencies": { "ansi-colors": "^4.1.1", "strip-ansi": "^6.0.1" @@ -3682,7 +3536,6 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true, "engines": { "node": ">=6" } @@ -3784,7 +3637,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, "engines": { "node": ">=6" } @@ -3793,7 +3645,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, "engines": { "node": ">=0.8.0" } @@ -4009,7 +3860,6 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, "dependencies": { "@types/pbkdf2": "^3.0.0", "@types/secp256k1": "^4.0.1", @@ -4032,7 +3882,6 @@ "version": "0.6.8", "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz", "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==", - "dev": true, "dependencies": { "bn.js": "^4.11.8", "ethereumjs-util": "^6.0.0" @@ -4042,7 +3891,6 @@ "version": "4.11.6", "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", - "dev": true, "dependencies": { "@types/node": "*" } @@ -4050,14 +3898,12 @@ "node_modules/ethereumjs-abi/node_modules/bn.js": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" }, "node_modules/ethereumjs-abi/node_modules/ethereumjs-util": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", - "dev": true, "dependencies": { "@types/bn.js": "^4.11.3", "bn.js": "^4.11.0", @@ -4072,7 +3918,6 @@ "version": "7.1.5", "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", - "dev": true, "dependencies": { "@types/bn.js": "^5.1.0", "bn.js": "^5.1.2", @@ -4144,7 +3989,6 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", - "dev": true, "dependencies": { "is-hex-prefixed": "1.0.0", "strip-hex-prefix": "1.0.0" @@ -4158,7 +4002,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, "dependencies": { "md5.js": "^1.3.4", "safe-buffer": "^5.1.1" @@ -4215,7 +4058,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -4240,7 +4082,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", - "dev": true, "dependencies": { "locate-path": "^2.0.0" }, @@ -4252,7 +4093,6 @@ "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, "bin": { "flat": "cli.js" } @@ -4261,7 +4101,6 @@ "version": "1.15.4", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", - "dev": true, "funding": [ { "type": "individual", @@ -4303,8 +4142,7 @@ "node_modules/fp-ts": { "version": "1.19.3", "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz", - "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==", - "dev": true + "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==" }, "node_modules/fs-extra": { "version": "9.1.0", @@ -4332,14 +4170,12 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, "hasInstallScript": true, "optional": true, "os": [ @@ -4379,8 +4215,7 @@ "node_modules/functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==" }, "node_modules/functions-have-names": { "version": "1.2.3", @@ -4395,7 +4230,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, "engines": { "node": "6.* || 8.* || >= 10.*" } @@ -4469,7 +4303,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -4489,7 +4322,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -4575,8 +4407,7 @@ "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "node_modules/handlebars": { "version": "4.7.8", @@ -4614,7 +4445,6 @@ "version": "2.19.4", "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.19.4.tgz", "integrity": "sha512-fTQJpqSt3Xo9Mn/WrdblNGAfcANM6XC3tAEi6YogB4s02DmTf93A8QsGb8uR0KR8TFcpcS8lgiW4ugAIYpnbrQ==", - "dev": true, "dependencies": { "@ethersproject/abi": "^5.1.2", "@metamask/eth-sig-util": "^4.0.0", @@ -4700,7 +4530,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", - "dev": true, "funding": [ { "type": "individual", @@ -4712,7 +4541,6 @@ "version": "1.1.5", "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", - "dev": true, "funding": [ { "type": "individual", @@ -4729,7 +4557,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", - "dev": true, "funding": [ { "type": "individual", @@ -4745,7 +4572,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz", "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", - "dev": true, "dependencies": { "@noble/hashes": "1.2.0", "@noble/secp256k1": "1.7.1", @@ -4757,7 +4583,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, "dependencies": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", @@ -4771,7 +4596,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, "optionalDependencies": { "graceful-fs": "^4.1.6" } @@ -4780,7 +4604,6 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, "engines": { "node": ">= 4.0.0" } @@ -4789,7 +4612,6 @@ "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true, "engines": { "node": ">=8.3.0" }, @@ -4819,7 +4641,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, "engines": { "node": ">=4" } @@ -4879,7 +4700,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, "dependencies": { "inherits": "^2.0.4", "readable-stream": "^3.6.0", @@ -4893,7 +4713,6 @@ "version": "1.1.7", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, "dependencies": { "inherits": "^2.0.3", "minimalistic-assert": "^1.0.1" @@ -4915,7 +4734,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, "bin": { "he": "bin/he" } @@ -4931,7 +4749,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "dev": true, "dependencies": { "hash.js": "^1.0.3", "minimalistic-assert": "^1.0.0", @@ -4958,7 +4775,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", @@ -4991,7 +4807,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, "dependencies": { "agent-base": "6", "debug": "4" @@ -5004,7 +4819,6 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -5016,7 +4830,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, "funding": [ { "type": "github", @@ -5045,14 +4858,12 @@ "node_modules/immutable": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", - "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==", - "dev": true + "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==" }, "node_modules/indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, "engines": { "node": ">=8" } @@ -5061,7 +4872,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -5070,8 +4880,7 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/ini": { "version": "1.3.8", @@ -5108,7 +4917,6 @@ "version": "1.10.4", "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz", "integrity": "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==", - "dev": true, "dependencies": { "fp-ts": "^1.0.0" } @@ -5143,7 +4951,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, "dependencies": { "binary-extensions": "^2.0.0" }, @@ -5171,7 +4978,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true, "funding": [ { "type": "github", @@ -5221,7 +5027,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -5240,7 +5045,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, "dependencies": { "is-extglob": "^2.1.1" }, @@ -5252,7 +5056,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", - "dev": true, "engines": { "node": ">=6.5.0", "npm": ">=3" @@ -5274,7 +5077,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, "engines": { "node": ">=0.12.0" } @@ -5298,7 +5100,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true, "engines": { "node": ">=8" } @@ -5380,7 +5181,6 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, "engines": { "node": ">=10" }, @@ -5433,7 +5233,6 @@ "version": "4.4.2", "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.2.tgz", "integrity": "sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==", - "dev": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/js-sdsl" @@ -5442,14 +5241,12 @@ "node_modules/js-sha3": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", - "dev": true + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, "dependencies": { "argparse": "^2.0.1" }, @@ -5491,7 +5288,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.4.tgz", "integrity": "sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==", - "dev": true, "hasInstallScript": true, "dependencies": { "node-addon-api": "^2.0.0", @@ -5516,7 +5312,6 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==", - "dev": true, "optionalDependencies": { "graceful-fs": "^4.1.9" } @@ -5525,7 +5320,6 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/level/-/level-8.0.0.tgz", "integrity": "sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ==", - "dev": true, "dependencies": { "browser-level": "^1.0.1", "classic-level": "^1.2.0" @@ -5542,7 +5336,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-4.0.1.tgz", "integrity": "sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==", - "dev": true, "engines": { "node": ">=12" } @@ -5551,7 +5344,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/level-transcoder/-/level-transcoder-1.0.1.tgz", "integrity": "sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==", - "dev": true, "dependencies": { "buffer": "^6.0.3", "module-error": "^1.0.1" @@ -5578,7 +5370,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", - "dev": true, "dependencies": { "p-locate": "^2.0.0", "path-exists": "^3.0.0" @@ -5590,8 +5381,7 @@ "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "node_modules/lodash.camelcase": { "version": "4.3.0", @@ -5624,7 +5414,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -5640,7 +5429,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -5655,7 +5443,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -5671,7 +5458,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -5682,14 +5468,12 @@ "node_modules/log-symbols/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/log-symbols/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "engines": { "node": ">=8" } @@ -5698,7 +5482,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -5719,14 +5502,12 @@ "node_modules/lru_map": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", - "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==", - "dev": true + "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==" }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, "dependencies": { "yallist": "^3.0.2" } @@ -5735,7 +5516,7 @@ "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true, + "devOptional": true, "peer": true }, "node_modules/markdown-table": { @@ -5749,7 +5530,6 @@ "version": "0.7.9", "resolved": "https://registry.npmjs.org/mcl-wasm/-/mcl-wasm-0.7.9.tgz", "integrity": "sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ==", - "dev": true, "engines": { "node": ">=8.9.0" } @@ -5758,7 +5538,6 @@ "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, "dependencies": { "hash-base": "^3.0.0", "inherits": "^2.0.1", @@ -5769,7 +5548,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/memory-level/-/memory-level-1.0.0.tgz", "integrity": "sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og==", - "dev": true, "dependencies": { "abstract-level": "^1.0.0", "functional-red-black-tree": "^1.0.1", @@ -5783,7 +5561,6 @@ "version": "0.3.1", "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", - "dev": true, "engines": { "node": ">= 0.10.0" } @@ -5843,20 +5620,17 @@ "node_modules/minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" }, "node_modules/minimalistic-crypto-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", - "dev": true + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -5890,7 +5664,6 @@ "version": "0.38.5", "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz", "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==", - "dev": true, "dependencies": { "obliterator": "^2.0.0" } @@ -5899,7 +5672,6 @@ "version": "10.2.0", "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", - "dev": true, "dependencies": { "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", @@ -5939,7 +5711,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, "engines": { "node": ">=6" } @@ -5948,7 +5719,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -5957,7 +5727,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, "engines": { "node": ">=10" }, @@ -5969,7 +5738,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -5985,7 +5753,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "engines": { "node": ">=8" } @@ -5994,7 +5761,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, "dependencies": { "p-locate": "^5.0.0" }, @@ -6009,7 +5775,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", - "dev": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -6020,14 +5785,12 @@ "node_modules/mocha/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/mocha/node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, "dependencies": { "yocto-queue": "^0.1.0" }, @@ -6042,7 +5805,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, "dependencies": { "p-limit": "^3.0.2" }, @@ -6057,7 +5819,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, "engines": { "node": ">=8" } @@ -6066,7 +5827,6 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -6081,7 +5841,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/module-error/-/module-error-1.0.2.tgz", "integrity": "sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==", - "dev": true, "engines": { "node": ">=10" } @@ -6089,14 +5848,12 @@ "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/nanoid": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", - "dev": true, "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -6107,8 +5864,7 @@ "node_modules/napi-macros": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.2.2.tgz", - "integrity": "sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==", - "dev": true + "integrity": "sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==" }, "node_modules/neo-async": { "version": "2.6.2", @@ -6120,8 +5876,7 @@ "node_modules/node-addon-api": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", - "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", - "dev": true + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==" }, "node_modules/node-emoji": { "version": "1.11.0", @@ -6157,7 +5912,6 @@ "version": "4.7.1", "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.7.1.tgz", "integrity": "sha512-wTSrZ+8lsRRa3I3H8Xr65dLWSgCvY2l4AOnaeKdPA9TB/WYMPaTcrzf3rXvFoVvjKNVnu0CcWSx54qq9GKRUYg==", - "dev": true, "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", @@ -6190,7 +5944,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -6266,14 +6019,12 @@ "node_modules/obliterator": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz", - "integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==", - "dev": true + "integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==" }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "dependencies": { "wrappy": "1" } @@ -6307,7 +6058,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -6316,7 +6066,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, "dependencies": { "p-try": "^1.0.0" }, @@ -6328,7 +6077,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", - "dev": true, "dependencies": { "p-limit": "^1.1.0" }, @@ -6340,7 +6088,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, "dependencies": { "aggregate-error": "^3.0.0" }, @@ -6355,7 +6102,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", - "dev": true, "engines": { "node": ">=4" } @@ -6371,7 +6117,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, "engines": { "node": ">=4" } @@ -6380,7 +6125,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -6388,8 +6132,7 @@ "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "node_modules/path-type": { "version": "4.0.0", @@ -6415,7 +6158,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dev": true, "dependencies": { "create-hash": "^1.1.2", "create-hmac": "^1.1.4", @@ -6431,7 +6173,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, "engines": { "node": ">=8.6" }, @@ -6548,7 +6289,6 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, "funding": [ { "type": "github", @@ -6568,7 +6308,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, "dependencies": { "safe-buffer": "^5.1.0" } @@ -6577,7 +6316,6 @@ "version": "2.5.2", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "dev": true, "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -6592,7 +6330,6 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -6606,7 +6343,6 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, "dependencies": { "picomatch": "^2.2.1" }, @@ -6697,7 +6433,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -6706,7 +6441,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -6715,7 +6449,6 @@ "version": "1.17.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "dev": true, "dependencies": { "path-parse": "^1.0.6" }, @@ -6757,7 +6490,6 @@ "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, "dependencies": { "glob": "^7.1.3" }, @@ -6769,7 +6501,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, "dependencies": { "hash-base": "^3.0.0", "inherits": "^2.0.1" @@ -6779,7 +6510,6 @@ "version": "2.2.7", "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", - "dev": true, "dependencies": { "bn.js": "^5.2.0" }, @@ -6815,7 +6545,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz", "integrity": "sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==", - "dev": true, "funding": [ { "type": "github", @@ -6837,8 +6566,7 @@ "node_modules/rustbn.js": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz", - "integrity": "sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==", - "dev": true + "integrity": "sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==" }, "node_modules/safe-array-concat": { "version": "1.0.1", @@ -6868,7 +6596,6 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, "funding": [ { "type": "github", @@ -6901,8 +6628,7 @@ "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/sc-istanbul": { "version": "0.4.6", @@ -7018,14 +6744,12 @@ "node_modules/scrypt-js": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", - "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", - "dev": true + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" }, "node_modules/secp256k1": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", - "dev": true, "hasInstallScript": true, "dependencies": { "elliptic": "^6.5.4", @@ -7040,7 +6764,6 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, "bin": { "semver": "bin/semver.js" } @@ -7049,7 +6772,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, "dependencies": { "randombytes": "^2.1.0" } @@ -7086,20 +6808,17 @@ "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "dev": true + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, "node_modules/sha.js": { "version": "2.4.11", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -7238,7 +6957,6 @@ "version": "0.7.3", "resolved": "https://registry.npmjs.org/solc/-/solc-0.7.3.tgz", "integrity": "sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==", - "dev": true, "dependencies": { "command-exists": "^1.2.8", "commander": "3.0.2", @@ -7261,7 +6979,6 @@ "version": "0.30.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==", - "dev": true, "dependencies": { "graceful-fs": "^4.1.2", "jsonfile": "^2.1.0", @@ -7274,7 +6991,6 @@ "version": "2.4.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", - "dev": true, "optionalDependencies": { "graceful-fs": "^4.1.6" } @@ -7283,7 +6999,6 @@ "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, "bin": { "semver": "bin/semver" } @@ -7431,7 +7146,6 @@ "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -7441,7 +7155,6 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -7457,7 +7170,6 @@ "version": "0.1.10", "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", - "dev": true, "dependencies": { "type-fest": "^0.7.1" }, @@ -7469,7 +7181,6 @@ "version": "0.7.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", - "dev": true, "engines": { "node": ">=8" } @@ -7478,7 +7189,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true, "engines": { "node": ">= 0.8" } @@ -7487,7 +7197,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, "dependencies": { "safe-buffer": "~5.2.0" } @@ -7585,7 +7294,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -7597,7 +7305,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", - "dev": true, "dependencies": { "is-hex-prefixed": "1.0.0" }, @@ -7610,7 +7317,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, "engines": { "node": ">=8" }, @@ -7622,7 +7328,6 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -7782,7 +7487,6 @@ "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, "dependencies": { "os-tmpdir": "~1.0.2" }, @@ -7794,7 +7498,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "dependencies": { "is-number": "^7.0.0" }, @@ -7806,7 +7509,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true, "engines": { "node": ">=0.6" } @@ -7923,7 +7625,7 @@ "version": "10.9.2", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", - "dev": true, + "devOptional": true, "peer": true, "dependencies": { "@cspotcode/source-map-support": "^0.8.0", @@ -7967,7 +7669,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, + "devOptional": true, "peer": true, "engines": { "node": ">=0.3.1" @@ -7982,20 +7684,17 @@ "node_modules/tsort": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz", - "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==", - "dev": true + "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==" }, "node_modules/tweetnacl": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", - "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", - "dev": true + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" }, "node_modules/tweetnacl-util": { "version": "0.15.1", "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", - "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", - "dev": true + "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==" }, "node_modules/type-check": { "version": "0.3.2", @@ -8024,7 +7723,6 @@ "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, "engines": { "node": ">=10" }, @@ -8202,7 +7900,7 @@ "version": "5.3.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", - "dev": true, + "devOptional": true, "peer": true, "bin": { "tsc": "bin/tsc", @@ -8255,7 +7953,6 @@ "version": "5.28.2", "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.2.tgz", "integrity": "sha512-wh1pHJHnUeQV5Xa8/kyQhO7WFa8M34l026L5P/+2TYiakvGy5Rdc8jWZVyG7ieht/0WgJLEd3kcU5gKx+6GC8w==", - "dev": true, "dependencies": { "@fastify/busboy": "^2.0.0" }, @@ -8266,8 +7963,7 @@ "node_modules/undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" }, "node_modules/unfetch": { "version": "4.2.0", @@ -8289,7 +7985,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true, "engines": { "node": ">= 0.8" } @@ -8314,14 +8009,12 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, "bin": { "uuid": "dist/bin/uuid" } @@ -8330,7 +8023,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true, + "devOptional": true, "peer": true }, "node_modules/web3-utils": { @@ -8500,14 +8193,12 @@ "node_modules/workerpool": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", - "dev": true + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==" }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -8524,7 +8215,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -8539,7 +8229,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -8550,14 +8239,12 @@ "node_modules/wrap-ansi/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, "engines": { "node": ">=8" } @@ -8566,7 +8253,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -8579,8 +8265,7 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/ws": { "version": "8.5.0", @@ -8607,7 +8292,6 @@ "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, "engines": { "node": ">=10" } @@ -8615,14 +8299,12 @@ "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, "node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -8640,7 +8322,6 @@ "version": "20.2.4", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true, "engines": { "node": ">=10" } @@ -8649,7 +8330,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, "dependencies": { "camelcase": "^6.0.0", "decamelize": "^4.0.0", @@ -8664,7 +8344,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, "engines": { "node": ">=8" } @@ -8673,7 +8352,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -8687,7 +8365,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, + "devOptional": true, "peer": true, "engines": { "node": ">=6" @@ -8697,7 +8375,6 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, "engines": { "node": ">=10" }, diff --git a/package.json b/package.json index 0eac360..58f10dd 100644 --- a/package.json +++ b/package.json @@ -20,5 +20,8 @@ "dotenv": "^16.3.1", "ethers": "^6.9.2", "hardhat": "^2.19.4" + }, + "dependencies": { + "@nomicfoundation/hardhat-network-helpers": "^1.0.10" } } diff --git a/script/DeployThena.s.sol b/script/DeployThena.s.sol deleted file mode 100644 index a3ce881..0000000 --- a/script/DeployThena.s.sol +++ /dev/null @@ -1,72 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0 -pragma solidity ^0.8.13; - -import {Script} from "forge-std/Script.sol"; -import {ERC20} from "solmate/tokens/ERC20.sol"; -import {IERC20} from "oz/token/ERC20/IERC20.sol"; -import {ERC1967Proxy} from "oz/proxy/ERC1967/ERC1967Proxy.sol"; - -import {OptionsToken} from "../src/OptionsToken.sol"; -import {DiscountExercise} from "../src/exercise/DiscountExercise.sol"; -import {ThenaOracle, IThenaPair} from "../src/oracles/ThenaOracle.sol"; -import {IERC20Mintable} from "../src/interfaces/IERC20Mintable.sol"; -import {IBalancerTwapOracle} from "../src/interfaces/IBalancerTwapOracle.sol"; - -contract DeployScript is Script { - constructor() {} - - function run() public returns (OptionsToken optionsToken, DiscountExercise exercise, ThenaOracle oracle) { - uint256 deployerPrivateKey = uint256(vm.envBytes32("PRIVATE_KEY")); - - vm.startBroadcast(deployerPrivateKey); - - { - IThenaPair thenaPair = IThenaPair(vm.envAddress("BALANCER_POOL")); - address owner = vm.envAddress("OWNER"); - address targetToken = vm.envAddress("ORACLE_TOKEN"); - uint56 secs = uint56(vm.envUint("ORACLE_SECS")); - uint128 minPrice = uint128(vm.envUint("ORACLE_MIN_PRICE")); - - oracle = new ThenaOracle(thenaPair, targetToken, owner, secs, minPrice); - } - - { - string memory name = vm.envString("OT_NAME"); - string memory symbol = vm.envString("OT_SYMBOL"); - address owner = vm.envAddress("OWNER"); - address tokenAdmin = vm.envAddress("OT_TOKEN_ADMIN"); - - address implementation = address(new OptionsToken()); - ERC1967Proxy proxy = new ERC1967Proxy(address(implementation), ""); - optionsToken = OptionsToken(address(proxy)); - optionsToken.initialize(name, symbol, tokenAdmin); - optionsToken.transferOwnership(owner); - } - - { - address owner = vm.envAddress("OWNER"); - uint256 multiplier = vm.envUint("MULTIPLIER"); - - address[] memory feeRecipients = vm.envAddress("OT_FEE_RECIPIENTS", ","); - uint256[] memory feeBps = vm.envUint("OT_FEE_BPS", ","); - - address paymentToken = vm.envAddress("OT_PAYMENT_TOKEN"); - address underlyingToken = vm.envAddress("OT_UNDERLYING_TOKEN"); - - exercise = new DiscountExercise( - optionsToken, - owner, - IERC20(paymentToken), - IERC20(underlyingToken), - oracle, - multiplier, - feeRecipients, - feeBps - ); - } - - optionsToken.setExerciseContract(address(exercise), true); - - vm.stopBroadcast(); - } -} diff --git a/src/OptionsToken.sol b/src/OptionsToken.sol index e4df922..d51db05 100644 --- a/src/OptionsToken.sol +++ b/src/OptionsToken.sol @@ -46,6 +46,7 @@ contract OptionsToken is IOptionsToken, ERC20Upgradeable, OwnableUpgradeable, UU mapping(address => bool) public isExerciseContract; uint256 public upgradeProposalTime; + address public nextImplementation; /// @custom:oz-upgrades-unsafe-allow constructor constructor() { @@ -158,8 +159,9 @@ contract OptionsToken is IOptionsToken, ERC20Upgradeable, OwnableUpgradeable, UU * @dev This function must be called prior to upgrading the implementation. * It's required to wait UPGRADE_TIMELOCK seconds before executing the upgrade. */ - function initiateUpgradeCooldown() external onlyOwner { + function initiateUpgradeCooldown(address _nextImplementation) external onlyOwner { upgradeProposalTime = block.timestamp; + nextImplementation = _nextImplementation; } /** @@ -181,8 +183,9 @@ contract OptionsToken is IOptionsToken, ERC20Upgradeable, OwnableUpgradeable, UU * Only the owner can upgrade the implementation once the timelock * has passed. */ - function _authorizeUpgrade(address) internal override onlyOwner { + function _authorizeUpgrade(address _nextImplementation) internal override onlyOwner { require(upgradeProposalTime + UPGRADE_TIMELOCK < block.timestamp, "Upgrade cooldown not initiated or still ongoing"); + require(_nextImplementation == nextImplementation, "Incorrect implementation"); _clearUpgradeCooldown(); } } diff --git a/src/exercise/BaseExercise.sol b/src/exercise/BaseExercise.sol index c172535..9de0cc6 100644 --- a/src/exercise/BaseExercise.sol +++ b/src/exercise/BaseExercise.sol @@ -14,6 +14,7 @@ abstract contract BaseExercise is IExercise, Owned { error Exercise__NotOToken(); error Exercise__feeArrayLengthMismatch(); + error Exercise__InvalidFeeAmounts(); event SetFees(address[] feeRecipients, uint256[] feeBPS); event DistributeFees(address[] feeRecipients, uint256[] feeBPS, uint256 totalAmount); @@ -31,10 +32,7 @@ abstract contract BaseExercise is IExercise, Owned { constructor(IOptionsToken _oToken, address[] memory _feeRecipients, uint256[] memory _feeBPS) { oToken = _oToken; - if (_feeRecipients.length != _feeBPS.length) revert Exercise__feeArrayLengthMismatch(); - feeRecipients = _feeRecipients; - feeBPS = _feeBPS; - emit SetFees(_feeRecipients, _feeBPS); + _setFees(_feeRecipients, _feeBPS); } modifier onlyOToken() { @@ -55,7 +53,16 @@ abstract contract BaseExercise is IExercise, Owned { returns (uint256 paymentAmount, address, uint256, uint256); function setFees(address[] memory _feeRecipients, uint256[] memory _feeBPS) external onlyOwner { + _setFees(_feeRecipients, _feeBPS); + } + + function _setFees(address[] memory _feeRecipients, uint256[] memory _feeBPS) internal { if (_feeRecipients.length != _feeBPS.length) revert Exercise__feeArrayLengthMismatch(); + uint256 totalBPS = 0; + for (uint256 i = 0; i < _feeBPS.length; i++) { + totalBPS += _feeBPS[i]; + } + if (totalBPS != FEE_DENOMINATOR) revert Exercise__InvalidFeeAmounts(); feeRecipients = _feeRecipients; feeBPS = _feeBPS; emit SetFees(_feeRecipients, _feeBPS); @@ -64,24 +71,26 @@ abstract contract BaseExercise is IExercise, Owned { /// @notice Distributes fees to the fee recipients from a token holder who has approved /// @dev Sends the residual amount to the last fee recipient to avoid rounding errors function distributeFeesFrom(uint256 totalAmount, IERC20 token, address from) internal virtual { + uint256 remaining = totalAmount; for (uint256 i = 0; i < feeRecipients.length - 1; i++) { uint256 feeAmount = totalAmount * feeBPS[i] / FEE_DENOMINATOR; token.safeTransferFrom(from, feeRecipients[i], feeAmount); - totalAmount -= feeAmount; + remaining -= feeAmount; } - token.safeTransferFrom(from, feeRecipients[feeRecipients.length - 1], totalAmount); + token.safeTransferFrom(from, feeRecipients[feeRecipients.length - 1], remaining); emit DistributeFees(feeRecipients, feeBPS, totalAmount); } /// @notice Distributes fees to the fee recipients from token balance of exercise contract /// @dev Sends the residual amount to the last fee recipient to avoid rounding errors function distributeFees(uint256 totalAmount, IERC20 token) internal virtual { + uint256 remaining = totalAmount; for (uint256 i = 0; i < feeRecipients.length - 1; i++) { uint256 feeAmount = totalAmount * feeBPS[i] / FEE_DENOMINATOR; token.safeTransfer(feeRecipients[i], feeAmount); - totalAmount -= feeAmount; + remaining -= feeAmount; } - token.safeTransfer(feeRecipients[feeRecipients.length - 1], totalAmount); + token.safeTransfer(feeRecipients[feeRecipients.length - 1], remaining); emit DistributeFees(feeRecipients, feeBPS, totalAmount); } } diff --git a/src/exercise/DiscountExercise.sol b/src/exercise/DiscountExercise.sol index c1b10bb..54f7dbb 100644 --- a/src/exercise/DiscountExercise.sol +++ b/src/exercise/DiscountExercise.sol @@ -29,6 +29,7 @@ contract DiscountExercise is BaseExercise { error Exercise__SlippageTooHigh(); error Exercise__PastDeadline(); error Exercise__MultiplierOutOfRange(); + error Exercise__InvalidOracle(); /// Events event Exercised(address indexed sender, address indexed recipient, uint256 amount, uint256 paymentAmount); @@ -60,6 +61,10 @@ contract DiscountExercise is BaseExercise { /// the options token. Uses 4 decimals. uint256 public multiplier; + /// @notice The amount of payment tokens the user can claim + /// Used when the contract does not have enough tokens to pay the user + mapping (address => uint256) public credit; + constructor( OptionsToken oToken_, address owner_, @@ -72,11 +77,11 @@ contract DiscountExercise is BaseExercise { ) BaseExercise(oToken_, feeRecipients_, feeBPS_) Owned(owner_) { paymentToken = paymentToken_; underlyingToken = underlyingToken_; - oracle = oracle_; - multiplier = multiplier_; + + _setOracle(oracle_); + _setMultiplier(multiplier_); emit SetOracle(oracle_); - emit SetMultiplier(multiplier_); } /// External functions @@ -97,11 +102,25 @@ contract DiscountExercise is BaseExercise { return _exercise(from, amount, recipient, params); } + function claim(address to) external { + uint256 amount = credit[msg.sender]; + if (amount == 0) return; + credit[msg.sender] = 0; + underlyingToken.safeTransfer(to, amount); + } + /// Owner functions /// @notice Sets the oracle contract. Only callable by the owner. /// @param oracle_ The new oracle contract function setOracle(IOracle oracle_) external onlyOwner { + _setOracle(oracle_); + } + + function _setOracle(IOracle oracle_) internal { + (address paymentToken_, address underlyingToken_) = oracle_.getTokens(); + if (paymentToken_ != address(paymentToken) || underlyingToken_ != address(underlyingToken)) + revert Exercise__InvalidOracle(); oracle = oracle_; emit SetOracle(oracle_); } @@ -109,6 +128,10 @@ contract DiscountExercise is BaseExercise { /// @notice Sets the discount multiplier. /// @param multiplier_ The new multiplier function setMultiplier(uint256 multiplier_) external onlyOwner { + _setMultiplier(multiplier_); + } + + function _setMultiplier(uint256 multiplier_) internal { if ( multiplier_ > MULTIPLIER_DENOM * 2 // over 200% || multiplier_ < MULTIPLIER_DENOM / 10 // under 10% @@ -138,16 +161,27 @@ contract DiscountExercise is BaseExercise { // transfer payment tokens from user to the set receivers distributeFeesFrom(paymentAmount, paymentToken, from); // transfer underlying tokens to recipient - underlyingToken.safeTransfer(recipient, amount); + _pay(recipient, amount); emit Exercised(from, recipient, amount, paymentAmount); } + function _pay(address to, uint256 amount) internal returns (uint256 remainingAmount) { + uint256 balance = underlyingToken.balanceOf(address(this)); + if (amount > balance) { + underlyingToken.safeTransfer(to, balance); + remainingAmount = amount - balance; + } else { + underlyingToken.safeTransfer(to, amount); + } + credit[to] += remainingAmount; + } + /// View functions /// @notice Returns the amount of payment tokens required to exercise the given amount of options tokens. /// @param amount The amount of options tokens to exercise function getPaymentAmount(uint256 amount) external view returns (uint256 paymentAmount) { - paymentAmount = amount.mulWadUp(oracle.getPrice()); + paymentAmount = amount.mulWadUp(oracle.getPrice().mulDivUp(multiplier, MULTIPLIER_DENOM)); } } diff --git a/src/interfaces/IOracle.sol b/src/interfaces/IOracle.sol index de4f7d2..562f5c4 100644 --- a/src/interfaces/IOracle.sol +++ b/src/interfaces/IOracle.sol @@ -11,4 +11,7 @@ interface IOracle { /// For example, if the payment token is $2 and the strike price is $4, the return value /// would be 2e18. function getPrice() external view returns (uint256 price); + + /// @notice This is important for verifying compatibility between oracle and exercise. + function getTokens() external view returns (address paymentToken, address underlyingToken); } diff --git a/src/oracles/BalancerOracle.sol b/src/oracles/BalancerOracle.sol index 633515e..6eba82e 100644 --- a/src/oracles/BalancerOracle.sol +++ b/src/oracles/BalancerOracle.sol @@ -3,6 +3,7 @@ pragma solidity ^0.8.13; import {Owned} from "solmate/auth/Owned.sol"; import {FixedPointMathLib} from "solmate/utils/FixedPointMathLib.sol"; +import {ERC20} from "solmate/tokens/ERC20.sol"; import {IOracle} from "../interfaces/IOracle.sol"; import {IVault} from "../interfaces/IBalancerVault.sol"; @@ -27,6 +28,8 @@ contract BalancerOracle is IOracle, Owned { /// Errors /// ----------------------------------------------------------------------- + error BalancerOracle__InvalidParams(); + error BalancerOracle__InvalidWindow(); error BalancerOracle__TWAPOracleNotReady(); error BalancerOracle__BelowMinPrice(); @@ -40,6 +43,8 @@ contract BalancerOracle is IOracle, Owned { /// Immutable parameters /// ----------------------------------------------------------------------- + uint256 internal constant MIN_SECS = 20 minutes; + /// @notice The Balancer TWAP oracle contract (usually a pool with oracle support) IBalancerTwapOracle public immutable balancerTwapOracle; @@ -71,6 +76,11 @@ contract BalancerOracle is IOracle, Owned { IVault vault = balancerTwapOracle.getVault(); (address[] memory poolTokens,,) = vault.getPoolTokens(balancerTwapOracle_.getPoolId()); + + if (ERC20(poolTokens[0]).decimals() != 18 || ERC20(poolTokens[1]).decimals() != 18) revert BalancerOracle__InvalidParams(); + if (token != poolTokens[0] && token != poolTokens[1]) revert BalancerOracle__InvalidParams(); + if (secs_ < MIN_SECS) revert BalancerOracle__InvalidWindow(); + isToken0 = poolTokens[0] == token; secs = secs_; @@ -124,6 +134,19 @@ contract BalancerOracle is IOracle, Owned { if (price < minPrice_) revert BalancerOracle__BelowMinPrice(); } + /// @inheritdoc IOracle + function getTokens() external view override returns (address paymentToken, address underlyingToken) { + IVault vault = balancerTwapOracle.getVault(); + (address[] memory poolTokens,,) = vault.getPoolTokens(balancerTwapOracle.getPoolId()); + if (isToken0) { + paymentToken = poolTokens[1]; + underlyingToken = poolTokens[0]; + } else { + paymentToken = poolTokens[0]; + underlyingToken = poolTokens[1]; + } + } + /// ----------------------------------------------------------------------- /// Owner functions /// ----------------------------------------------------------------------- @@ -135,6 +158,7 @@ contract BalancerOracle is IOracle, Owned { /// @param minPrice_ The minimum value returned by getPrice(). Maintains a floor for the /// price to mitigate potential attacks on the TWAP oracle. function setParams(uint56 secs_, uint56 ago_, uint128 minPrice_) external onlyOwner { + if (secs_ < MIN_SECS) revert BalancerOracle__InvalidWindow(); secs = secs_; ago = ago_; minPrice = minPrice_; diff --git a/src/oracles/ThenaOracle.sol b/src/oracles/ThenaOracle.sol index 1916774..0b2e8a1 100644 --- a/src/oracles/ThenaOracle.sol +++ b/src/oracles/ThenaOracle.sol @@ -12,9 +12,6 @@ import {IThenaPair} from "../interfaces/IThenaPair.sol"; /// @notice The oracle contract that provides the current price to purchase /// the underlying token while exercising options. Uses Thena TWAP oracle /// as data source, and then applies a lower bound. -/// Furthermore, the payment token and the underlying token must use 18 decimals. -/// This is because the Thena oracle returns the TWAP value in 18 decimals -/// and the OptionsToken contract also expects 18 decimals. contract ThenaOracle is IOracle, Owned { /// ----------------------------------------------------------------------- /// Library usage @@ -26,6 +23,8 @@ contract ThenaOracle is IOracle, Owned { /// Errors /// ----------------------------------------------------------------------- + error ThenaOracle__InvalidParams(); + error ThenaOracle__InvalidWindow(); error ThenaOracle__StablePairsUnsupported(); error ThenaOracle__Overflow(); error ThenaOracle__BelowMinPrice(); @@ -40,6 +39,8 @@ contract ThenaOracle is IOracle, Owned { /// Immutable parameters /// ----------------------------------------------------------------------- + uint256 internal constant MIN_SECS = 20 minutes; + /// @notice The Thena TWAP oracle contract (usually a pool with oracle support) IThenaPair public immutable thenaPair; @@ -64,6 +65,9 @@ contract ThenaOracle is IOracle, Owned { constructor(IThenaPair thenaPair_, address token, address owner_, uint56 secs_, uint128 minPrice_) Owned(owner_) { if (thenaPair_.stable()) revert ThenaOracle__StablePairsUnsupported(); + if (thenaPair_.token0() != token && thenaPair_.token1() != token) revert ThenaOracle__InvalidParams(); + if (secs_ < MIN_SECS) revert ThenaOracle__InvalidWindow(); + thenaPair = thenaPair_; isToken0 = thenaPair_.token0() == token; secs = secs_; @@ -113,6 +117,15 @@ contract ThenaOracle is IOracle, Owned { if (price < minPrice) revert ThenaOracle__BelowMinPrice(); } + /// @inheritdoc IOracle + function getTokens() external view override returns (address paymentToken, address underlyingToken) { + if (isToken0) { + return (thenaPair.token1(), thenaPair.token0()); + } else { + return (thenaPair.token0(), thenaPair.token1()); + } + } + /// ----------------------------------------------------------------------- /// Owner functions /// ----------------------------------------------------------------------- @@ -122,6 +135,7 @@ contract ThenaOracle is IOracle, Owned { /// @param minPrice_ The minimum value returned by getPrice(). Maintains a floor for the /// price to mitigate potential attacks on the TWAP oracle. function setParams(uint56 secs_, uint128 minPrice_) external onlyOwner { + if (secs_ < MIN_SECS) revert ThenaOracle__InvalidWindow(); secs = secs_; minPrice = minPrice_; emit SetParams(secs_, minPrice_); diff --git a/src/oracles/UniswapV3Oracle.sol b/src/oracles/UniswapV3Oracle.sol index de15ef6..8c93e6d 100644 --- a/src/oracles/UniswapV3Oracle.sol +++ b/src/oracles/UniswapV3Oracle.sol @@ -15,8 +15,6 @@ import {FullMath} from "v3-core/libraries/FullMath.sol"; /// @notice The oracle contract that provides the current price to purchase /// the underlying token while exercising options. Uses UniswapV3 TWAP oracle /// as data source, and then applies a multiplier & lower bound. -/// @dev IMPORTANT: This oracle assumes both tokens have 18 decimals, and -/// returns the price with 18 decimals. contract UniswapV3Oracle is IOracle, Owned { /// ----------------------------------------------------------------------- /// Library usage @@ -28,6 +26,8 @@ contract UniswapV3Oracle is IOracle, Owned { /// Errors /// ----------------------------------------------------------------------- + error UniswapOracle__InvalidParams(); + error UniswapOracle__InvalidWindow(); error UniswapOracle__BelowMinPrice(); /// ----------------------------------------------------------------------- @@ -40,6 +40,8 @@ contract UniswapV3Oracle is IOracle, Owned { /// Immutable parameters /// ----------------------------------------------------------------------- + uint256 internal constant MIN_SECS = 20 minutes; + /// @notice The UniswapV3 Pool contract (provides the oracle) IUniswapV3Pool public immutable uniswapPool; @@ -67,6 +69,8 @@ contract UniswapV3Oracle is IOracle, Owned { /// ----------------------------------------------------------------------- constructor(IUniswapV3Pool uniswapPool_, address token, address owner_, uint32 secs_, uint32 ago_, uint128 minPrice_) Owned(owner_) { + if (uniswapPool_.token0() != token && uniswapPool_.token1() != token) revert UniswapOracle__InvalidParams(); + if (secs_ < MIN_SECS) revert UniswapOracle__InvalidWindow(); uniswapPool = uniswapPool_; isToken0 = token == uniswapPool_.token0(); secs = secs_; @@ -122,6 +126,15 @@ contract UniswapV3Oracle is IOracle, Owned { if (price < minPrice) revert UniswapOracle__BelowMinPrice(); } + /// @inheritdoc IOracle + function getTokens() external view override returns (address paymentToken, address underlyingToken) { + if (isToken0) { + return (uniswapPool.token1(), uniswapPool.token0()); + } else { + return (uniswapPool.token0(), uniswapPool.token1()); + } + } + /// ----------------------------------------------------------------------- /// Owner functions /// ----------------------------------------------------------------------- @@ -133,6 +146,7 @@ contract UniswapV3Oracle is IOracle, Owned { /// @param minPrice_ The minimum value returned by getPrice(). Maintains a floor for the /// price to mitigate potential attacks on the TWAP oracle. function setParams(uint32 secs_, uint32 ago_, uint128 minPrice_) external onlyOwner { + if (secs_ < MIN_SECS) revert UniswapOracle__InvalidWindow(); secs = secs_; ago = ago_; minPrice = minPrice_; diff --git a/test/OptionsToken.t.sol b/test/OptionsToken.t.sol index 8302af2..89207a5 100644 --- a/test/OptionsToken.t.sol +++ b/test/OptionsToken.t.sol @@ -61,10 +61,11 @@ contract OptionsTokenTest is Test { optionsToken.transferOwnership(owner); address[] memory tokens = new address[](2); - tokens[0] = underlyingToken; - tokens[1] = address(paymentToken); + tokens[0] = address(paymentToken); + tokens[1] = underlyingToken; balancerTwapOracle = new MockBalancerTwapOracle(tokens); + console.log(tokens[0], tokens[1]); oracle = new BalancerOracle(balancerTwapOracle, underlyingToken, owner, ORACLE_SECS, ORACLE_AGO, ORACLE_MIN_PRICE); exerciser = @@ -100,7 +101,7 @@ contract OptionsTokenTest is Test { } function test_exerciseHappyPath(uint256 amount, address recipient) public { - amount = bound(amount, 0, MAX_SUPPLY); + amount = bound(amount, 100, MAX_SUPPLY); // mint options tokens vm.prank(tokenAdmin); diff --git a/test/mocks/MockBalancerTwapOracle.sol b/test/mocks/MockBalancerTwapOracle.sol index 3d0eb2c..5e0dd81 100644 --- a/test/mocks/MockBalancerTwapOracle.sol +++ b/test/mocks/MockBalancerTwapOracle.sol @@ -15,10 +15,10 @@ contract MockVault is IVault { function getPool(bytes32 poolId) external view override returns (address, PoolSpecialization) {} - function getPoolTokens(bytes32 poolId) external view override returns (address[] memory tokens, uint256[] memory, uint256) { - tokens = new address[](2); - tokens[0] = tokens[0]; - tokens[1] = tokens[1]; + function getPoolTokens(bytes32 poolId) external view override returns (address[] memory tokens_, uint256[] memory, uint256) { + tokens_ = new address[](2); + tokens_[0] = tokens[0]; + tokens_[1] = tokens[1]; } function swap(SingleSwap memory singleSwap, FundManagement memory funds, uint256 limit, uint256 deadline) diff --git a/test/mocks/OptionsTokenV2.sol b/test/mocks/OptionsTokenV2.sol new file mode 100644 index 0000000..36c95ca --- /dev/null +++ b/test/mocks/OptionsTokenV2.sol @@ -0,0 +1,195 @@ +// SPDX-License-Identifier: AGPL-3.0 +pragma solidity ^0.8.13; + +import {OwnableUpgradeable} from "oz-upgradeable/access/OwnableUpgradeable.sol"; +import {ERC20Upgradeable} from "oz-upgradeable/token/ERC20/ERC20Upgradeable.sol"; +import {UUPSUpgradeable} from "oz-upgradeable/proxy/utils/UUPSUpgradeable.sol"; + +import {IOptionsToken} from "../../src/interfaces/IOptionsToken.sol"; +import {IOracle} from "../../src/interfaces/IOracle.sol"; +import {IExercise} from "../../src/interfaces/IExercise.sol"; + +/// @title Options Token +/// @author Eidolon & lookee +/// @notice Options token representing the right to perform an advantageous action, +/// such as purchasing the underlying token at a discount to the market price. +contract OptionsTokenV2 is IOptionsToken, ERC20Upgradeable, OwnableUpgradeable, UUPSUpgradeable { + /// ----------------------------------------------------------------------- + /// Errors + /// ----------------------------------------------------------------------- + + error OptionsToken__NotTokenAdmin(); + error OptionsToken__NotExerciseContract(); + error Upgradeable__Unauthorized(); + + /// ----------------------------------------------------------------------- + /// Events + /// ----------------------------------------------------------------------- + + event Exercise( + address indexed sender, address indexed recipient, uint256 amount, address data0, uint256 data1, uint256 data2 + ); + event SetOracle(IOracle indexed newOracle); + event SetExerciseContract(address indexed _address, bool _isExercise); + + /// ----------------------------------------------------------------------- + /// Constant parameters + /// ----------------------------------------------------------------------- + + uint256 public constant UPGRADE_TIMELOCK = 48 hours; + uint256 public constant FUTURE_NEXT_PROPOSAL_TIME = 365 days * 100; + + /// ----------------------------------------------------------------------- + /// Storage variables + /// ----------------------------------------------------------------------- + + /// @notice The contract that has the right to mint options tokens + address public tokenAdmin; + + mapping(address => bool) public isExerciseContract; + uint256 public upgradeProposalTime; + address public nextImplementation; + + uint256 public constant newVar = 123456; + + /// @custom:oz-upgrades-unsafe-allow constructor + constructor() { + _disableInitializers(); + } + + /// ----------------------------------------------------------------------- + /// Initializer + /// ----------------------------------------------------------------------- + + function initialize(string memory name_, string memory symbol_, address tokenAdmin_) external initializer { + __UUPSUpgradeable_init(); + __ERC20_init(name_, symbol_); + __Ownable_init(); + tokenAdmin = tokenAdmin_; + + _clearUpgradeCooldown(); + } + + /// ----------------------------------------------------------------------- + /// External functions + /// ----------------------------------------------------------------------- + + /// @notice Called by the token admin to mint options tokens + /// @param to The address that will receive the minted options tokens + /// @param amount The amount of options tokens that will be minted + function mint(address to, uint256 amount) external virtual override { + /// ----------------------------------------------------------------------- + /// Verification + /// ----------------------------------------------------------------------- + + if (msg.sender != tokenAdmin) revert OptionsToken__NotTokenAdmin(); + + /// ----------------------------------------------------------------------- + /// State updates + /// ----------------------------------------------------------------------- + + // skip if amount is zero + if (amount == 0) return; + + // mint options tokens + _mint(to, amount); + } + + /// @notice Exercises options tokens, burning them and giving the reward to the recipient. + /// @param amount The amount of options tokens to exercise + /// @param recipient The recipient of the reward + /// @param option The address of the Exercise contract with the redemption logic + /// @param params Extra parameters to be used by the exercise function + function exercise(uint256 amount, address recipient, address option, bytes calldata params) + external + virtual + returns ( + uint256 paymentAmount, + address, + uint256, + uint256 // misc data + ) + { + return _exercise(amount, recipient, option, params); + } + + /// ----------------------------------------------------------------------- + /// Owner functions + /// ----------------------------------------------------------------------- + + /// @notice Adds a new Exercise contract to the available options. + /// @param _address Address of the Exercise contract, that implements BaseExercise. + /// @param _isExercise Whether oToken holders should be allowed to exercise using this option. + function setExerciseContract(address _address, bool _isExercise) external onlyOwner { + isExerciseContract[_address] = _isExercise; + emit SetExerciseContract(_address, _isExercise); + } + + /// ----------------------------------------------------------------------- + /// Internal functions + /// ----------------------------------------------------------------------- + + function _exercise(uint256 amount, address recipient, address option, bytes calldata params) + internal + virtual + returns ( + uint256 paymentAmount, + address data0, + uint256 data1, + uint256 data2 // misc data + ) + { + // skip if amount is zero + if (amount == 0) return (0, address(0), 0, 0); + + // revert if the exercise contract is not whitelisted + if (!isExerciseContract[option]) revert OptionsToken__NotExerciseContract(); + + // burn options tokens + _burn(msg.sender, amount); + + // give rewards to recipient + (paymentAmount, data0, data1, data2) = IExercise(option).exercise(msg.sender, amount, recipient, params); + + // emit event + emit Exercise(msg.sender, recipient, amount, data0, data1, data2); + } + + /// ----------------------------------------------------------------------- + /// UUPS functions + /// ----------------------------------------------------------------------- + + /** + * @dev This function must be called prior to upgrading the implementation. + * It's required to wait UPGRADE_TIMELOCK seconds before executing the upgrade. + */ + function initiateUpgradeCooldown(address _nextImplementation) external onlyOwner { + upgradeProposalTime = block.timestamp; + nextImplementation = _nextImplementation; + } + + /** + * @dev This function is called: + * - in initialize() + * - as part of a successful upgrade + * - manually to clear the upgrade cooldown. + */ + function _clearUpgradeCooldown() internal { + upgradeProposalTime = block.timestamp + FUTURE_NEXT_PROPOSAL_TIME; + } + + function clearUpgradeCooldown() external onlyOwner { + _clearUpgradeCooldown(); + } + + /** + * @dev This function must be overriden simply for access control purposes. + * Only the owner can upgrade the implementation once the timelock + * has passed. + */ + function _authorizeUpgrade(address _nextImplementation) internal override onlyOwner { + require(upgradeProposalTime + UPGRADE_TIMELOCK < block.timestamp, "Upgrade cooldown not initiated or still ongoing"); + require(_nextImplementation == nextImplementation, "Incorrect implementation"); + _clearUpgradeCooldown(); + } +} diff --git a/test_hardhat/OptionsToken.ts b/test_hardhat/OptionsToken.ts new file mode 100644 index 0000000..3c014bd --- /dev/null +++ b/test_hardhat/OptionsToken.ts @@ -0,0 +1,51 @@ +import {expect} from "chai"; +import {ethers, upgrades} from "hardhat"; +import {AddressZero} from "@ethersproject/constants"; +import { time } from "@nomicfoundation/hardhat-network-helpers"; + +describe("OptionsToken", function() { + it('upgrades seamlessly', async () => { + const OptionsToken = await ethers.getContractFactory("OptionsToken"); + const OptionsTokenV2 = await ethers.getContractFactory("OptionsTokenV2"); + + const signerAddress = await (await ethers.getSigners())[0].getAddress(); + + const instance = await upgrades.deployProxy(OptionsToken, ["TEST", "TEST", signerAddress]); + const newImpl = await upgrades.prepareUpgrade(instance, OptionsTokenV2); + await instance.initiateUpgradeCooldown(newImpl); + await time.increase(60 * 60 * 48); + await instance.upgradeTo(newImpl); + + const instanceV2 = OptionsTokenV2.attach(await instance.getAddress()); + + const value = await (instanceV2 as any).newVar(); + expect(value.toString()).to.equal('123456'); + + await instance.mint(signerAddress, 1000); + expect(await instance.balanceOf(signerAddress)).to.equal(1000); + }); + + it('prevents upgrading before the given timelock', async () => { + const OptionsToken = await ethers.getContractFactory("OptionsToken"); + const OptionsTokenV2 = await ethers.getContractFactory("OptionsTokenV2"); + + const instance = await upgrades.deployProxy(OptionsToken, ["TEST", "TEST", AddressZero]); + const newImpl = await upgrades.prepareUpgrade(instance, OptionsTokenV2); + await instance.initiateUpgradeCooldown(newImpl); + await time.increase(60 * 60 * 48 - 1); + + await expect(instance.upgradeTo(newImpl)).to.be.revertedWith('Upgrade cooldown not initiated or still ongoing'); + }); + + it('requires correct contract to be set before an upgrade', async () => { + const OptionsToken = await ethers.getContractFactory("OptionsToken"); + const OptionsTokenV2 = await ethers.getContractFactory("OptionsTokenV2"); + + const instance = await upgrades.deployProxy(OptionsToken, ["TEST", "TEST", AddressZero]); + const newImpl = await upgrades.prepareUpgrade(instance, OptionsTokenV2); + await instance.initiateUpgradeCooldown(AddressZero); + await time.increase(60 * 60 * 48); + + await expect(instance.upgradeTo(newImpl)).to.be.revertedWith('Incorrect implementation'); + }); +}); From 40797fbabf69fc0b8f22667591bfc90d2a1dc583 Mon Sep 17 00:00:00 2001 From: xRave110 Date: Thu, 1 Feb 2024 16:44:59 +0100 Subject: [PATCH 44/64] forge install: tarot-price-oracle --- .gitmodules | 3 +++ lib/tarot-price-oracle | 1 + 2 files changed, 4 insertions(+) create mode 160000 lib/tarot-price-oracle diff --git a/.gitmodules b/.gitmodules index 45bc574..7adb170 100644 --- a/.gitmodules +++ b/.gitmodules @@ -16,3 +16,6 @@ [submodule "lib/openzeppelin-contracts"] path = lib/openzeppelin-contracts url = https://github.com/OpenZeppelin/openzeppelin-contracts +[submodule "lib/tarot-price-oracle"] + path = lib/tarot-price-oracle + url = https://github.com/xrave110/tarot-price-oracle diff --git a/lib/tarot-price-oracle b/lib/tarot-price-oracle new file mode 160000 index 0000000..483959c --- /dev/null +++ b/lib/tarot-price-oracle @@ -0,0 +1 @@ +Subproject commit 483959c501ddab57e5215e47bbb257f04aa02b76 From 4d36188fe1d343768684354f1fb0240b7d6536f8 Mon Sep 17 00:00:00 2001 From: lookeey <71905281+lookeey@users.noreply.github.com> Date: Mon, 5 Feb 2024 19:37:33 -0300 Subject: [PATCH 45/64] bsc deployment --- .openzeppelin/bsc.json | 205 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 205 insertions(+) create mode 100644 .openzeppelin/bsc.json diff --git a/.openzeppelin/bsc.json b/.openzeppelin/bsc.json new file mode 100644 index 0000000..7320b61 --- /dev/null +++ b/.openzeppelin/bsc.json @@ -0,0 +1,205 @@ +{ + "manifestVersion": "3.2", + "proxies": [ + { + "address": "0x45c19a3068642B98F5AEf1dEdE023443cd1FbFAd", + "txHash": "0xb0835bbacd616b635b6a1230e89a7d4f47fa5a4c55969a510d92b87d9b1367eb", + "kind": "uups" + } + ], + "impls": { + "d568e812a589f8a8e8864a13f1ba9c178a5bf812de48e4764db703f702d1ec44": { + "address": "0xc79593C528d673f5Db0B8707115193FE1596aB34", + "txHash": "0xb0107c79caa671945a41ee8e6e6300a08081285e10d0e56233c7db3023df32b3", + "layout": { + "solcVersion": "0.8.19", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "oz-upgradeable/proxy/utils/Initializable.sol:62", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "oz-upgradeable/proxy/utils/Initializable.sol:67" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "oz-upgradeable/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_balances", + "offset": 0, + "slot": "51", + "type": "t_mapping(t_address,t_uint256)", + "contract": "ERC20Upgradeable", + "src": "oz-upgradeable/token/ERC20/ERC20Upgradeable.sol:37" + }, + { + "label": "_allowances", + "offset": 0, + "slot": "52", + "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))", + "contract": "ERC20Upgradeable", + "src": "oz-upgradeable/token/ERC20/ERC20Upgradeable.sol:39" + }, + { + "label": "_totalSupply", + "offset": 0, + "slot": "53", + "type": "t_uint256", + "contract": "ERC20Upgradeable", + "src": "oz-upgradeable/token/ERC20/ERC20Upgradeable.sol:41" + }, + { + "label": "_name", + "offset": 0, + "slot": "54", + "type": "t_string_storage", + "contract": "ERC20Upgradeable", + "src": "oz-upgradeable/token/ERC20/ERC20Upgradeable.sol:43" + }, + { + "label": "_symbol", + "offset": 0, + "slot": "55", + "type": "t_string_storage", + "contract": "ERC20Upgradeable", + "src": "oz-upgradeable/token/ERC20/ERC20Upgradeable.sol:44" + }, + { + "label": "__gap", + "offset": 0, + "slot": "56", + "type": "t_array(t_uint256)45_storage", + "contract": "ERC20Upgradeable", + "src": "oz-upgradeable/token/ERC20/ERC20Upgradeable.sol:400" + }, + { + "label": "_owner", + "offset": 0, + "slot": "101", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "oz-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "102", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "oz-upgradeable/access/OwnableUpgradeable.sol:94" + }, + { + "label": "__gap", + "offset": 0, + "slot": "151", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "oz-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" + }, + { + "label": "__gap", + "offset": 0, + "slot": "201", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "oz-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" + }, + { + "label": "tokenAdmin", + "offset": 0, + "slot": "251", + "type": "t_address", + "contract": "OptionsToken", + "src": "src/OptionsToken.sol:45" + }, + { + "label": "isExerciseContract", + "offset": 0, + "slot": "252", + "type": "t_mapping(t_address,t_bool)", + "contract": "OptionsToken", + "src": "src/OptionsToken.sol:47" + }, + { + "label": "upgradeProposalTime", + "offset": 0, + "slot": "253", + "type": "t_uint256", + "contract": "OptionsToken", + "src": "src/OptionsToken.sol:48" + }, + { + "label": "nextImplementation", + "offset": 0, + "slot": "254", + "type": "t_address", + "contract": "OptionsToken", + "src": "src/OptionsToken.sol:49" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)45_storage": { + "label": "uint256[45]", + "numberOfBytes": "1440" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_mapping(t_address,t_uint256))": { + "label": "mapping(address => mapping(address => uint256))", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + } + } +} From 9e87a0b05c884e3cc2962f4963cfa0900ce8b0e4 Mon Sep 17 00:00:00 2001 From: lookeey <71905281+lookeey@users.noreply.github.com> Date: Tue, 20 Feb 2024 19:54:43 -0300 Subject: [PATCH 46/64] Add algebra oracle --- src/interfaces/IAlgebraPool.sol | 24 +++++ src/oracles/AlgebraOracle.sol | 156 ++++++++++++++++++++++++++++++++ 2 files changed, 180 insertions(+) create mode 100644 src/interfaces/IAlgebraPool.sol create mode 100644 src/oracles/AlgebraOracle.sol diff --git a/src/interfaces/IAlgebraPool.sol b/src/interfaces/IAlgebraPool.sol new file mode 100644 index 0000000..5e2f44f --- /dev/null +++ b/src/interfaces/IAlgebraPool.sol @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +pragma solidity >=0.5.0; + +/** + * @title The minimal interface we use for a Algebra Pool + * @dev The pool interface is broken up into many smaller pieces. + * Credit to Uniswap Labs under GPL-2.0-or-later license: + * https://github.com/Uniswap/v3-core/tree/main/contracts/interfaces + */ +interface IAlgebraPool { + /// @notice The first of the two tokens of the pool, sorted by address + /// @return The token contract address + function token0() external view returns (address); + + /// @notice The second of the two tokens of the pool, sorted by address + /// @return The token contract address + function token1() external view returns (address); + + function getTimepoints(uint32[] calldata secondsAgos) + external + view + returns (int56[] memory tickCumulatives, uint160[] memory secondsPerLiquidityCumulativeX128s, uint112[] memory volatilityCumulatives, uint256[] memory volumePerAvgLiquiditys); + +} \ No newline at end of file diff --git a/src/oracles/AlgebraOracle.sol b/src/oracles/AlgebraOracle.sol new file mode 100644 index 0000000..349e8aa --- /dev/null +++ b/src/oracles/AlgebraOracle.sol @@ -0,0 +1,156 @@ +// SPDX-License-Identifier: AGPL-3.0 +pragma solidity ^0.8.13; + +import {Owned} from "solmate/auth/Owned.sol"; +import {FixedPointMathLib} from "solmate/utils/FixedPointMathLib.sol"; + +import {IOracle} from "../interfaces/IOracle.sol"; + +import {IAlgebraPool} from "../interfaces/IAlgebraPool.sol"; +import {TickMath} from "v3-core/libraries/TickMath.sol"; +import {FullMath} from "v3-core/libraries/FullMath.sol"; + +/// @title Oracle using Algebra TWAP oracle as data source +/// @notice The oracle contract that provides the current price to purchase +/// the underlying token while exercising options. Uses Algebra TWAP oracle +/// as data source, and then applies a multiplier & lower bound. +/// @notice Same as UniswapV3, with a minimal interface change. +/// (observe -> getTimepoints) +contract AlgebraOracle is IOracle, Owned { + /// ----------------------------------------------------------------------- + /// Library usage + /// ----------------------------------------------------------------------- + + using FixedPointMathLib for uint256; + + /// ----------------------------------------------------------------------- + /// Errors + /// ----------------------------------------------------------------------- + + error AlgebraOracle__InvalidParams(); + error AlgebraOracle__InvalidWindow(); + error AlgebraOracle__BelowMinPrice(); + + /// ----------------------------------------------------------------------- + /// Events + /// ----------------------------------------------------------------------- + + event SetParams(uint56 secs, uint56 ago, uint128 minPrice); + + /// ----------------------------------------------------------------------- + /// Immutable parameters + /// ----------------------------------------------------------------------- + + uint256 internal constant MIN_SECS = 20 minutes; + + /// @notice The Algebra Pool contract (provides the oracle) + IAlgebraPool public immutable algebraPool; + + /// ----------------------------------------------------------------------- + /// Storage variables + /// ----------------------------------------------------------------------- + + /// @notice The size of the window to take the TWAP value over in seconds. + uint32 public secs; + + /// @notice The number of seconds in the past to take the TWAP from. The window + /// would be (block.timestamp - secs - ago, block.timestamp - ago]. + uint32 public ago; + + /// @notice The minimum value returned by getPrice(). Maintains a floor for the + /// price to mitigate potential attacks on the TWAP oracle. + uint128 public minPrice; + + /// @notice Whether the price of token0 should be returned (in units of token1). + /// If false, the price is returned in units of token0. + bool public isToken0; + + /// ----------------------------------------------------------------------- + /// Constructor + /// ----------------------------------------------------------------------- + + constructor(IAlgebraPool algebraPool_, address token, address owner_, uint32 secs_, uint32 ago_, uint128 minPrice_) Owned(owner_) { + if (algebraPool_.token0() != token && algebraPool_.token1() != token) revert AlgebraOracle__InvalidParams(); + if (secs_ < MIN_SECS) revert AlgebraOracle__InvalidWindow(); + algebraPool = algebraPool_; + isToken0 = token == algebraPool_.token0(); + secs = secs_; + ago = ago_; + minPrice = minPrice_; + + emit SetParams(secs_, ago_, minPrice_); + } + + /// ----------------------------------------------------------------------- + /// IOracle + /// ----------------------------------------------------------------------- + + /// @inheritdoc IOracle + function getPrice() external view override returns (uint256 price) { + /// ----------------------------------------------------------------------- + /// Validation + /// ----------------------------------------------------------------------- + + // The Algebra pool reverts on invalid TWAP queries, so we don't need to + + /// ----------------------------------------------------------------------- + /// Computation + /// ----------------------------------------------------------------------- + + // query Algebra oracle to get TWAP tick + { + uint32 _twapDuration = secs; + uint32 _twapAgo = ago; + uint32[] memory secondsAgo = new uint32[](2); + secondsAgo[0] = _twapDuration + _twapAgo; + secondsAgo[1] = _twapAgo; + + (int56[] memory tickCumulatives,,,) = algebraPool.getTimepoints(secondsAgo); + int24 tick = int24((tickCumulatives[1] - tickCumulatives[0]) / int56(int32(_twapDuration))); + + uint256 decimalPrecision = 1e18; + + // from https://optimistic.etherscan.io/address/0xB210CE856631EeEB767eFa666EC7C1C57738d438#code#F5#L49 + uint160 sqrtRatioX96 = TickMath.getSqrtRatioAtTick(tick); + + // Calculate quoteAmount with better precision if it doesn't overflow when multiplied by itself + if (sqrtRatioX96 <= type(uint128).max) { + uint256 ratioX192 = uint256(sqrtRatioX96) * sqrtRatioX96; + price = isToken0 ? FullMath.mulDiv(ratioX192, decimalPrecision, 1 << 192) : FullMath.mulDiv(1 << 192, decimalPrecision, ratioX192); + } else { + uint256 ratioX128 = FullMath.mulDiv(sqrtRatioX96, sqrtRatioX96, 1 << 64); + price = isToken0 ? FullMath.mulDiv(ratioX128, decimalPrecision, 1 << 128) : FullMath.mulDiv(1 << 128, decimalPrecision, ratioX128); + } + } + + // apply minimum price + if (price < minPrice) revert AlgebraOracle__BelowMinPrice(); + } + + /// @inheritdoc IOracle + function getTokens() external view override returns (address paymentToken, address underlyingToken) { + if (isToken0) { + return (algebraPool.token1(), algebraPool.token0()); + } else { + return (algebraPool.token0(), algebraPool.token1()); + } + } + + /// ----------------------------------------------------------------------- + /// Owner functions + /// ----------------------------------------------------------------------- + + /// @notice Updates the oracle parameters. Only callable by the owner. + /// @param secs_ The size of the window to take the TWAP value over in seconds. + /// @param ago_ The number of seconds in the past to take the TWAP from. The window + /// would be (block.timestamp - secs - ago, block.timestamp - ago]. + /// @param minPrice_ The minimum value returned by getPrice(). Maintains a floor for the + /// price to mitigate potential attacks on the TWAP oracle. + function setParams(uint32 secs_, uint32 ago_, uint128 minPrice_) external onlyOwner { + if (secs_ < MIN_SECS) revert AlgebraOracle__InvalidWindow(); + secs = secs_; + ago = ago_; + minPrice = minPrice_; + emit SetParams(secs_, ago_, minPrice_); + } +} From de55775597e3e70bad951b6871a03823c4a454eb Mon Sep 17 00:00:00 2001 From: xRave110 Date: Fri, 7 Jun 2024 17:37:57 +0200 Subject: [PATCH 47/64] Simple instant exit feature --- src/exercise/DiscountExercise.sol | 70 ++++++++++++++++++++++++------- test/OptionsToken.t.sol | 59 ++++++++++++++++++++------ 2 files changed, 103 insertions(+), 26 deletions(-) diff --git a/src/exercise/DiscountExercise.sol b/src/exercise/DiscountExercise.sol index 54f7dbb..5c60528 100644 --- a/src/exercise/DiscountExercise.sol +++ b/src/exercise/DiscountExercise.sol @@ -13,6 +13,7 @@ import {OptionsToken} from "../OptionsToken.sol"; struct DiscountExerciseParams { uint256 maxPaymentAmount; uint256 deadline; + bool isInstantExit; } /// @title Options Token Exercise Contract @@ -30,6 +31,7 @@ contract DiscountExercise is BaseExercise { error Exercise__PastDeadline(); error Exercise__MultiplierOutOfRange(); error Exercise__InvalidOracle(); + error Exercise__FeeGreaterThanMax(); /// Events event Exercised(address indexed sender, address indexed recipient, uint256 amount, uint256 paymentAmount); @@ -41,7 +43,7 @@ contract DiscountExercise is BaseExercise { /// @notice The denominator for converting the multiplier into a decimal number. /// i.e. multiplier uses 4 decimals. - uint256 internal constant MULTIPLIER_DENOM = 10000; + uint256 internal constant BPS_DENOM = 10_000; /// Immutable parameters @@ -63,7 +65,9 @@ contract DiscountExercise is BaseExercise { /// @notice The amount of payment tokens the user can claim /// Used when the contract does not have enough tokens to pay the user - mapping (address => uint256) public credit; + mapping(address => uint256) public credit; + + uint256 public instantExitFee; constructor( OptionsToken oToken_, @@ -72,6 +76,7 @@ contract DiscountExercise is BaseExercise { IERC20 underlyingToken_, IOracle oracle_, uint256 multiplier_, + uint256 instantExitFee_, address[] memory feeRecipients_, uint256[] memory feeBPS_ ) BaseExercise(oToken_, feeRecipients_, feeBPS_) Owned(owner_) { @@ -80,6 +85,7 @@ contract DiscountExercise is BaseExercise { _setOracle(oracle_); _setMultiplier(multiplier_); + _setInstantExitFee(instantExitFee_); emit SetOracle(oracle_); } @@ -99,7 +105,14 @@ contract DiscountExercise is BaseExercise { onlyOToken returns (uint256 paymentAmount, address, uint256, uint256) { - return _exercise(from, amount, recipient, params); + DiscountExerciseParams memory _params = abi.decode(params, (DiscountExerciseParams)); + if (_params.isInstantExit) { + return _instantExitExercise(from, amount, recipient, _params); + } + else + { + return _discountExercise(from, amount, recipient, _params); + } } function claim(address to) external { @@ -119,8 +132,9 @@ contract DiscountExercise is BaseExercise { function _setOracle(IOracle oracle_) internal { (address paymentToken_, address underlyingToken_) = oracle_.getTokens(); - if (paymentToken_ != address(paymentToken) || underlyingToken_ != address(underlyingToken)) + if (paymentToken_ != address(paymentToken) || underlyingToken_ != address(underlyingToken)) { revert Exercise__InvalidOracle(); + } oracle = oracle_; emit SetOracle(oracle_); } @@ -133,30 +147,58 @@ contract DiscountExercise is BaseExercise { function _setMultiplier(uint256 multiplier_) internal { if ( - multiplier_ > MULTIPLIER_DENOM * 2 // over 200% - || multiplier_ < MULTIPLIER_DENOM / 10 // under 10% + multiplier_ > BPS_DENOM * 2 // over 200% + || multiplier_ < BPS_DENOM / 10 // under 10% ) revert Exercise__MultiplierOutOfRange(); multiplier = multiplier_; emit SetMultiplier(multiplier_); } - /// Internal functions + function setInstantExitFee(uint256 _instantExitFee) external onlyOwner { + _setInstantExitFee(_instantExitFee); + } - function _exercise(address from, uint256 amount, address recipient, bytes memory params) + function _setInstantExitFee(uint256 _instantExitFee) internal { + if (_instantExitFee > BPS_DENOM) { + revert Exercise__FeeGreaterThanMax(); + } + instantExitFee = _instantExitFee; + } + + /// Internal functions + function _instantExitExercise(address from, uint256 amount, address recipient, DiscountExerciseParams memory params) internal virtual returns (uint256 paymentAmount, address, uint256, uint256) { - // decode params - DiscountExerciseParams memory _params = abi.decode(params, (DiscountExerciseParams)); + if (block.timestamp > params.deadline) revert Exercise__PastDeadline(); - if (block.timestamp > _params.deadline) revert Exercise__PastDeadline(); + uint256 underlyingAmount = amount.mulDivUp(multiplier, BPS_DENOM); + uint256 feeAmount = amount.mulDivUp(instantExitFee, BPS_DENOM); + underlyingAmount -= feeAmount; + + // transfer underlying tokens from user to the set receivers + distributeFees(feeAmount, underlyingToken); + + // transfer underlying tokens to recipient + _pay(recipient, underlyingAmount); + + emit Exercised(from, recipient, underlyingAmount, paymentAmount); + } + + /// Internal functions + function _discountExercise(address from, uint256 amount, address recipient, DiscountExerciseParams memory params) + internal + virtual + returns (uint256 paymentAmount, address, uint256, uint256) + { + if (block.timestamp > params.deadline) revert Exercise__PastDeadline(); // apply multiplier to price - uint256 price = oracle.getPrice().mulDivUp(multiplier, MULTIPLIER_DENOM); + uint256 price = oracle.getPrice().mulDivUp(multiplier, BPS_DENOM); paymentAmount = amount.mulWadUp(price); - if (paymentAmount > _params.maxPaymentAmount) revert Exercise__SlippageTooHigh(); + if (paymentAmount > params.maxPaymentAmount) revert Exercise__SlippageTooHigh(); // transfer payment tokens from user to the set receivers distributeFeesFrom(paymentAmount, paymentToken, from); @@ -182,6 +224,6 @@ contract DiscountExercise is BaseExercise { /// @notice Returns the amount of payment tokens required to exercise the given amount of options tokens. /// @param amount The amount of options tokens to exercise function getPaymentAmount(uint256 amount) external view returns (uint256 paymentAmount) { - paymentAmount = amount.mulWadUp(oracle.getPrice().mulDivUp(multiplier, MULTIPLIER_DENOM)); + paymentAmount = amount.mulWadUp(oracle.getPrice().mulDivUp(multiplier, BPS_DENOM)); } } diff --git a/test/OptionsToken.t.sol b/test/OptionsToken.t.sol index 89207a5..76edb83 100644 --- a/test/OptionsToken.t.sol +++ b/test/OptionsToken.t.sol @@ -24,6 +24,7 @@ contract OptionsTokenTest is Test { uint256 constant ORACLE_INIT_TWAP_VALUE = 1e19; uint256 constant ORACLE_MIN_PRICE_DENOM = 10000; uint256 constant MAX_SUPPLY = 1e27; // the max supply of the options token & the underlying token + uint256 constant INSTANT_EXIT_FEE = 500; address owner; address tokenAdmin; @@ -67,10 +68,8 @@ contract OptionsTokenTest is Test { balancerTwapOracle = new MockBalancerTwapOracle(tokens); console.log(tokens[0], tokens[1]); oracle = new BalancerOracle(balancerTwapOracle, underlyingToken, owner, ORACLE_SECS, ORACLE_AGO, ORACLE_MIN_PRICE); - exerciser = - new DiscountExercise(optionsToken, owner, IERC20(address(paymentToken)), IERC20(underlyingToken), oracle, PRICE_MULTIPLIER, feeRecipients_, feeBPS_); - + new DiscountExercise(optionsToken, owner, IERC20(address(paymentToken)), IERC20(underlyingToken), oracle, PRICE_MULTIPLIER, INSTANT_EXIT_FEE, feeRecipients_, feeBPS_); TestERC20(underlyingToken).mint(address(exerciser), 1e20 ether); // add exerciser to the list of options @@ -100,7 +99,7 @@ contract OptionsTokenTest is Test { assertEqDecimal(optionsToken.balanceOf(address(this)), amount, 18); } - function test_exerciseHappyPath(uint256 amount, address recipient) public { + function test_discountExerciseHappyPath(uint256 amount, address recipient) public { amount = bound(amount, 100, MAX_SUPPLY); // mint options tokens @@ -112,7 +111,7 @@ contract OptionsTokenTest is Test { paymentToken.mint(address(this), expectedPaymentAmount); // exercise options tokens - DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max}); + DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: false}); (uint256 paymentAmount,,,) = optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); // verify options tokens were transferred @@ -128,6 +127,42 @@ contract OptionsTokenTest is Test { assertEqDecimal(paymentAmount, expectedPaymentAmount, 18, "exercise returned wrong value"); } + function test_instantExitExerciseHappyPath(uint256 amount, address recipient) public { + amount = bound(amount, 10_000, MAX_SUPPLY); + + // mint options tokens + vm.prank(tokenAdmin); + optionsToken.mint(address(this), amount); + + // mint payment tokens + uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); + uint256 discountedUnderlying = amount.mulDivUp(PRICE_MULTIPLIER, 10_000); + uint256 expectedUnderlyingAmount = discountedUnderlying - amount.mulDivUp(INSTANT_EXIT_FEE, 10_000); + paymentToken.mint(address(this), expectedPaymentAmount); + console.log("discountedUnderlying:", discountedUnderlying); + console.log("expectedUnderlyingAmount:", expectedUnderlyingAmount); + + // exercise options tokens + DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: true}); + (uint256 paymentAmount,,,) = optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); + + // verify options tokens were transferred + assertEqDecimal(optionsToken.balanceOf(address(this)), 0, 18, "user still has options tokens"); + assertEqDecimal(optionsToken.totalSupply(), 0, 18, "option tokens not burned"); + + // verify payment tokens were transferred + assertEq(paymentToken.balanceOf(address(this)), expectedPaymentAmount, "user lost payment tokens during instant exit"); + uint256 totalFee = amount.mulDivUp(INSTANT_EXIT_FEE, 10_000); + uint256 fee1 = totalFee.mulDivDown(feeBPS_[0], 10_000); + uint256 fee2 = totalFee - fee1; + console.log("paymentFee1: ", fee1); + console.log("paymentFee2: ", fee2); + assertEqDecimal(IERC20(underlyingToken).balanceOf(feeRecipients_[0]), fee1, 18, "fee recipient 1 didn't receive payment tokens"); + assertEqDecimal(IERC20(underlyingToken).balanceOf(feeRecipients_[1]), fee2, 18, "fee recipient 2 didn't receive payment tokens"); + assertEqDecimal(paymentAmount, 0, 18, "exercise returned wrong value"); + // assertEq(expectedUnderlyingAmount, IERC20(underlyingToken).balanceOf(recipient), "Recipient got wrong amount of underlying token"); + } + function test_exerciseMinPrice(uint256 amount, address recipient) public { amount = bound(amount, 1, MAX_SUPPLY); @@ -143,7 +178,7 @@ contract OptionsTokenTest is Test { paymentToken.mint(address(this), expectedPaymentAmount); // exercise options tokens - DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max}); + DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: false}); vm.expectRevert(bytes4(keccak256("BalancerOracle__BelowMinPrice()"))); optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); } @@ -163,7 +198,7 @@ contract OptionsTokenTest is Test { paymentToken.mint(address(this), expectedPaymentAmount); // exercise options tokens - DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max}); + DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: false}); (uint256 paidAmount,,,) = optionsToken.exercise(amount, address(this), address(exerciser), abi.encode(params)); // update multiplier @@ -195,7 +230,7 @@ contract OptionsTokenTest is Test { paymentToken.mint(address(this), expectedPaymentAmount); // exercise options tokens which should fail - DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount - 1, deadline: type(uint256).max}); + DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount - 1, deadline: type(uint256).max, isInstantExit: false}); vm.expectRevert(DiscountExercise.Exercise__SlippageTooHigh.selector); optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); } @@ -218,7 +253,7 @@ contract OptionsTokenTest is Test { oracle.setParams(ORACLE_SECS, ORACLE_LARGEST_SAFETY_WINDOW, ORACLE_MIN_PRICE); // exercise options tokens which should fail - DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max}); + DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: false}); vm.expectRevert(BalancerOracle.BalancerOracle__TWAPOracleNotReady.selector); optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); } @@ -236,7 +271,7 @@ contract OptionsTokenTest is Test { paymentToken.mint(address(this), expectedPaymentAmount); // exercise options tokens - DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: deadline}); + DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: deadline, isInstantExit: false}); if (amount != 0) { vm.expectRevert(DiscountExercise.Exercise__PastDeadline.selector); } @@ -254,7 +289,7 @@ contract OptionsTokenTest is Test { paymentToken.mint(address(this), expectedPaymentAmount); // exercise options tokens which should fail - DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max}); + DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: false}); vm.expectRevert(BaseExercise.Exercise__NotOToken.selector); exerciser.exercise(address(this), amount, recipient, abi.encode(params)); } @@ -275,7 +310,7 @@ contract OptionsTokenTest is Test { paymentToken.mint(address(this), expectedPaymentAmount); // exercise options tokens which should fail - DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max}); + DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: false}); vm.expectRevert(OptionsToken.OptionsToken__NotExerciseContract.selector); optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); } From 016ca86f5c319a7d7c47ae4364063da585c6e788 Mon Sep 17 00:00:00 2001 From: xRave110 Date: Tue, 18 Jun 2024 09:05:58 +0200 Subject: [PATCH 48/64] Zapping feature with tests --- .gitmodules | 3 + .vscode/settings.json | 4 + lib/vault-v2 | 1 + remappings.txt | 1 + src/exercise/BaseExercise.sol | 4 +- src/exercise/DiscountExercise.sol | 95 ++++--- src/helpers/SwapHelper.sol | 104 ++++++++ src/interfaces/ISwapperSwaps.sol | 128 +++++++++ test/Common.sol | 241 +++++++++++++++++ test/ItBscOptionsToken.t.solNOT | 407 +++++++++++++++++++++++++++++ test/ItModeOptionsToken.t.sol | 391 ++++++++++++++++++++++++++++ test/ItOpOptionsToken.t copy.sol | 413 ++++++++++++++++++++++++++++++ test/OptionsToken.t.sol | 142 ++++++---- test/mocks/ReaperSwapperMock.sol | 71 +++++ 14 files changed, 1920 insertions(+), 85 deletions(-) create mode 100644 .vscode/settings.json create mode 160000 lib/vault-v2 create mode 100644 src/helpers/SwapHelper.sol create mode 100644 src/interfaces/ISwapperSwaps.sol create mode 100644 test/Common.sol create mode 100644 test/ItBscOptionsToken.t.solNOT create mode 100644 test/ItModeOptionsToken.t.sol create mode 100644 test/ItOpOptionsToken.t copy.sol create mode 100644 test/mocks/ReaperSwapperMock.sol diff --git a/.gitmodules b/.gitmodules index 7adb170..c75bf00 100644 --- a/.gitmodules +++ b/.gitmodules @@ -19,3 +19,6 @@ [submodule "lib/tarot-price-oracle"] path = lib/tarot-price-oracle url = https://github.com/xrave110/tarot-price-oracle +[submodule "lib/vault-v2"] + path = lib/vault-v2 + url = https://github.com/Byte-Masons/vault-v2 diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..2306f3c --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "solidity.formatter": "forge", + "editor.formatOnSave": true +} \ No newline at end of file diff --git a/lib/vault-v2 b/lib/vault-v2 new file mode 160000 index 0000000..23df243 --- /dev/null +++ b/lib/vault-v2 @@ -0,0 +1 @@ +Subproject commit 23df243595d358986708544e03229501fc82b595 diff --git a/remappings.txt b/remappings.txt index d1a17b6..faaa3df 100644 --- a/remappings.txt +++ b/remappings.txt @@ -2,4 +2,5 @@ create3-factory/=lib/create3-factory/src/ v3-core/=lib/v3-core/contracts/ oz-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/ oz/=lib/openzeppelin-contracts/contracts/ +vault/=lib/vault-v2/src diff --git a/src/exercise/BaseExercise.sol b/src/exercise/BaseExercise.sol index 9de0cc6..959ff94 100644 --- a/src/exercise/BaseExercise.sol +++ b/src/exercise/BaseExercise.sol @@ -72,7 +72,7 @@ abstract contract BaseExercise is IExercise, Owned { /// @dev Sends the residual amount to the last fee recipient to avoid rounding errors function distributeFeesFrom(uint256 totalAmount, IERC20 token, address from) internal virtual { uint256 remaining = totalAmount; - for (uint256 i = 0; i < feeRecipients.length - 1; i++) { + for (uint256 i = 0; i < feeRecipients.length; i++) { uint256 feeAmount = totalAmount * feeBPS[i] / FEE_DENOMINATOR; token.safeTransferFrom(from, feeRecipients[i], feeAmount); remaining -= feeAmount; @@ -85,7 +85,7 @@ abstract contract BaseExercise is IExercise, Owned { /// @dev Sends the residual amount to the last fee recipient to avoid rounding errors function distributeFees(uint256 totalAmount, IERC20 token) internal virtual { uint256 remaining = totalAmount; - for (uint256 i = 0; i < feeRecipients.length - 1; i++) { + for (uint256 i = 0; i < feeRecipients.length; i++) { uint256 feeAmount = totalAmount * feeBPS[i] / FEE_DENOMINATOR; token.safeTransfer(feeRecipients[i], feeAmount); remaining -= feeAmount; diff --git a/src/exercise/DiscountExercise.sol b/src/exercise/DiscountExercise.sol index 5c60528..95d2f45 100644 --- a/src/exercise/DiscountExercise.sol +++ b/src/exercise/DiscountExercise.sol @@ -10,6 +10,10 @@ import {BaseExercise} from "../exercise/BaseExercise.sol"; import {IOracle} from "../interfaces/IOracle.sol"; import {OptionsToken} from "../OptionsToken.sol"; +import {ExchangeType, SwapProps, SwapHelper} from "../helpers/SwapHelper.sol"; + +import "forge-std/console.sol"; + struct DiscountExerciseParams { uint256 maxPaymentAmount; uint256 deadline; @@ -21,7 +25,7 @@ struct DiscountExerciseParams { /// @notice Contract that allows the holder of options tokens to exercise them, /// in this case, by purchasing the underlying token at a discount to the market price. /// @dev Assumes the underlying token and the payment token both use 18 decimals. -contract DiscountExercise is BaseExercise { +contract DiscountExercise is BaseExercise, SwapHelper { /// Library usage using SafeERC20 for IERC20; using FixedPointMathLib for uint256; @@ -32,6 +36,9 @@ contract DiscountExercise is BaseExercise { error Exercise__MultiplierOutOfRange(); error Exercise__InvalidOracle(); error Exercise__FeeGreaterThanMax(); + error Exercise__SlippageGreaterThanMax(); + error Exercise__ParamHasAddressZero(); + error Exercise__InvalidExchangeType(uint256); /// Events event Exercised(address indexed sender, address indexed recipient, uint256 amount, uint256 paymentAmount); @@ -40,11 +47,6 @@ contract DiscountExercise is BaseExercise { event SetMultiplier(uint256 indexed newMultiplier); /// Constants - - /// @notice The denominator for converting the multiplier into a decimal number. - /// i.e. multiplier uses 4 decimals. - uint256 internal constant BPS_DENOM = 10_000; - /// Immutable parameters /// @notice The token paid by the options token holder during redemption @@ -67,7 +69,9 @@ contract DiscountExercise is BaseExercise { /// Used when the contract does not have enough tokens to pay the user mapping(address => uint256) public credit; - uint256 public instantExitFee; + uint256 private feeAmount; + uint256 public minAmountToTriggerSwap; + uint256 public redeemBonus; constructor( OptionsToken oToken_, @@ -76,16 +80,17 @@ contract DiscountExercise is BaseExercise { IERC20 underlyingToken_, IOracle oracle_, uint256 multiplier_, - uint256 instantExitFee_, + uint256 redeemBonus_, address[] memory feeRecipients_, - uint256[] memory feeBPS_ - ) BaseExercise(oToken_, feeRecipients_, feeBPS_) Owned(owner_) { + uint256[] memory feeBPS_, + SwapProps memory swapProps_ + ) BaseExercise(oToken_, feeRecipients_, feeBPS_) Owned(owner_) SwapHelper(swapProps_) { paymentToken = paymentToken_; underlyingToken = underlyingToken_; _setOracle(oracle_); _setMultiplier(multiplier_); - _setInstantExitFee(instantExitFee_); + _setRedeemBonus(redeemBonus_); emit SetOracle(oracle_); } @@ -107,11 +112,9 @@ contract DiscountExercise is BaseExercise { { DiscountExerciseParams memory _params = abi.decode(params, (DiscountExerciseParams)); if (_params.isInstantExit) { - return _instantExitExercise(from, amount, recipient, _params); - } - else - { - return _discountExercise(from, amount, recipient, _params); + return _zap(from, amount, recipient, _params); + } else { + return _redeem(from, amount, recipient, _params); } } @@ -154,40 +157,62 @@ contract DiscountExercise is BaseExercise { emit SetMultiplier(multiplier_); } - function setInstantExitFee(uint256 _instantExitFee) external onlyOwner { - _setInstantExitFee(_instantExitFee); + function setRedeemBonus(uint256 _redeemBonus) external onlyOwner { + _setRedeemBonus(_redeemBonus); } - function _setInstantExitFee(uint256 _instantExitFee) internal { - if (_instantExitFee > BPS_DENOM) { + function _setRedeemBonus(uint256 _redeemBonus) internal { + if (_redeemBonus > BPS_DENOM) { revert Exercise__FeeGreaterThanMax(); } - instantExitFee = _instantExitFee; + redeemBonus = _redeemBonus; + } + + function setMinAmountToTriggerSwap(uint256 _minAmountToTriggerSwap) external onlyOwner { + minAmountToTriggerSwap = _minAmountToTriggerSwap; } /// Internal functions - function _instantExitExercise(address from, uint256 amount, address recipient, DiscountExerciseParams memory params) + function _zap(address from, uint256 amount, address recipient, DiscountExerciseParams memory params) internal virtual returns (uint256 paymentAmount, address, uint256, uint256) { if (block.timestamp > params.deadline) revert Exercise__PastDeadline(); - uint256 underlyingAmount = amount.mulDivUp(multiplier, BPS_DENOM); - uint256 feeAmount = amount.mulDivUp(instantExitFee, BPS_DENOM); - underlyingAmount -= feeAmount; + uint256 discountedUnderlying = amount.mulDivUp(multiplier, BPS_DENOM); + uint256 fee = discountedUnderlying.mulDivUp(redeemBonus, BPS_DENOM); + uint256 underlyingAmount = discountedUnderlying - fee; + + console.log("Discounted: %e \t fee: %e", discountedUnderlying, fee); + + // Fee amount in underlying tokens which is effect of not having redeem bonus + feeAmount += fee; + console.log("feeAmount: %s vs minAmountToTriggerSwap: %s", feeAmount, minAmountToTriggerSwap); + + if (feeAmount >= minAmountToTriggerSwap) { + uint256 minAmountOut = _getMinAmountOutData(feeAmount, swapProps.maxSwapSlippage, address(oracle)); + console.log("minAmountOut: ", minAmountOut); + /* Approve the underlying token to make swap */ + underlyingToken.approve(swapProps.swapper, feeAmount); + /* Swap underlying token to payment token (asset) */ + console.log("under before: %e", underlyingToken.balanceOf(address(this))); + _generalSwap(swapProps.exchangeTypes, address(underlyingToken), address(paymentToken), feeAmount, minAmountOut, swapProps.exchangeAddress); + feeAmount = 0; + // transfer payment tokens from user to the set receivers + console.log("Fee recipients: ", feeRecipients.length); + distributeFees(paymentToken.balanceOf(address(this)), paymentToken); + } - // transfer underlying tokens from user to the set receivers - distributeFees(feeAmount, underlyingToken); - - // transfer underlying tokens to recipient + // transfer underlying tokens to recipient without the bonus + console.log("Transferring underlying : %e", underlyingAmount); _pay(recipient, underlyingAmount); emit Exercised(from, recipient, underlyingAmount, paymentAmount); } /// Internal functions - function _discountExercise(address from, uint256 amount, address recipient, DiscountExerciseParams memory params) + function _redeem(address from, uint256 amount, address recipient, DiscountExerciseParams memory params) internal virtual returns (uint256 paymentAmount, address, uint256, uint256) @@ -195,9 +220,7 @@ contract DiscountExercise is BaseExercise { if (block.timestamp > params.deadline) revert Exercise__PastDeadline(); // apply multiplier to price - uint256 price = oracle.getPrice().mulDivUp(multiplier, BPS_DENOM); - - paymentAmount = amount.mulWadUp(price); + paymentAmount = _getPaymentAmount(amount); if (paymentAmount > params.maxPaymentAmount) revert Exercise__SlippageTooHigh(); // transfer payment tokens from user to the set receivers @@ -224,6 +247,12 @@ contract DiscountExercise is BaseExercise { /// @notice Returns the amount of payment tokens required to exercise the given amount of options tokens. /// @param amount The amount of options tokens to exercise function getPaymentAmount(uint256 amount) external view returns (uint256 paymentAmount) { + return _getPaymentAmount(amount); + } + + function _getPaymentAmount(uint256 amount) private view returns (uint256 paymentAmount) { + console.log("Price inside: ", oracle.getPrice()); paymentAmount = amount.mulWadUp(oracle.getPrice().mulDivUp(multiplier, BPS_DENOM)); + // paymentAmount -= paymentAmount.mulDivUp(redeemBonus, BPS_DENOM); // redeem bonus applied } } diff --git a/src/helpers/SwapHelper.sol b/src/helpers/SwapHelper.sol new file mode 100644 index 0000000..bea68e7 --- /dev/null +++ b/src/helpers/SwapHelper.sol @@ -0,0 +1,104 @@ +// SPDX-License-Identifier: BUSL-1.1 + +pragma solidity ^0.8.0; + +import {ISwapperSwaps, MinAmountOutData, MinAmountOutKind} from "vault-v2/ReaperSwapper.sol"; +import {IOracle} from "../interfaces/IOracle.sol"; +import {FixedPointMathLib} from "solmate/utils/FixedPointMathLib.sol"; + +import "forge-std/console.sol"; + +enum ExchangeType { + UniV2, + Bal, + VeloSolid, + UniV3 +} + +struct SwapProps { + address swapper; + address exchangeAddress; + ExchangeType exchangeTypes; + uint256 maxSwapSlippage; +} + +abstract contract SwapHelper { + using FixedPointMathLib for uint256; + + /// @notice The denominator for converting the multiplier into a decimal number. + /// i.e. multiplier uses 4 decimals. + uint256 internal constant BPS_DENOM = 10_000; + SwapProps public swapProps; + + error NotAnOwner(); + error SwapHelper__SlippageGreaterThanMax(); + error SwapHelper__ParamHasAddressZero(); + error SwapHelper__AddressZero(); + error SwapHelper__InvalidExchangeType(uint256 exType); + + constructor(SwapProps memory _swapProps) { + _configSwapProps(_swapProps); + } + + function configSwapProps(SwapProps memory _swapProps) external virtual { + _configSwapProps(_swapProps); + } + + function _configSwapProps(SwapProps memory _swapProps) internal { + if (_swapProps.maxSwapSlippage > BPS_DENOM) { + revert SwapHelper__SlippageGreaterThanMax(); + } + if (_swapProps.exchangeAddress == address(0)) { + revert SwapHelper__ParamHasAddressZero(); + } + if (_swapProps.swapper == address(0)) { + revert SwapHelper__ParamHasAddressZero(); + } + swapProps = _swapProps; + } + + /** + * @dev Private function that allow to swap via multiple exchange types + * @param exType - type of exchange + * @param tokenIn - address of token in + * @param tokenOut - address of token out + * @param amount - amount of tokenIn to swap + * @param minAmountOut - minimal acceptable amount of tokenOut + * @param exchangeAddress - address of the exchange + */ + function _generalSwap(ExchangeType exType, address tokenIn, address tokenOut, uint256 amount, uint256 minAmountOut, address exchangeAddress) + internal + { + ISwapperSwaps _swapper = ISwapperSwaps(swapProps.swapper); + MinAmountOutData memory minAmountOutData = MinAmountOutData(MinAmountOutKind.Absolute, minAmountOut); + if (exType == ExchangeType.UniV2) { + console.log("Calling Univ2"); + _swapper.swapUniV2(tokenIn, tokenOut, amount, minAmountOutData, exchangeAddress); + } else if (exType == ExchangeType.Bal) { + _swapper.swapBal(tokenIn, tokenOut, amount, minAmountOutData, exchangeAddress); + console.log("HERE"); + } else if (exType == ExchangeType.VeloSolid) { + _swapper.swapVelo(tokenIn, tokenOut, amount, minAmountOutData, exchangeAddress); + } else if (exType == ExchangeType.UniV3) { + console.log("Calling Univ3"); + _swapper.swapUniV3(tokenIn, tokenOut, amount, minAmountOutData, exchangeAddress); + } else { + revert SwapHelper__InvalidExchangeType(uint256(exType)); + } + } + + /** + * @dev Private function that calculates minimal amount token out of swap using oracles + * @param _amountIn - amount of token to be swapped + * @param _maxSlippage - max allowed slippage + */ + function _getMinAmountOutData(uint256 _amountIn, uint256 _maxSlippage, address _oracle) internal view returns (uint256) { + uint256 minAmountOut = 0; + /* Get price from oracle */ + uint256 price = IOracle(_oracle).getPrice(); + /* Deduct slippage amount from predicted amount */ + minAmountOut = ((_amountIn.mulWadUp(price)) - (((_amountIn.mulWadUp(price)) * _maxSlippage) / BPS_DENOM)); + + return minAmountOut; + } +} diff --git a/src/interfaces/ISwapperSwaps.sol b/src/interfaces/ISwapperSwaps.sol new file mode 100644 index 0000000..2cf6215 --- /dev/null +++ b/src/interfaces/ISwapperSwaps.sol @@ -0,0 +1,128 @@ +// SPDX-License-Identifier: BUSL1.1 + +pragma solidity ^0.8.0; + +enum MinAmountOutKind { + Absolute, + ChainlinkBased +} + +struct MinAmountOutData { + MinAmountOutKind kind; + uint256 absoluteOrBPSValue; // for type "ChainlinkBased", value must be in BPS +} + +struct UniV3SwapData { + address[] path; + uint24[] fees; +} + +interface ISwapperSwaps { + function swapUniV2( + address _from, + address _to, + uint256 _amount, + MinAmountOutData memory _minAmountOutData, + address _router, + uint256 _deadline, + bool _tryCatchActive + ) external returns (uint256); + + function swapUniV2( + address _from, + address _to, + uint256 _amount, + MinAmountOutData memory _minAmountOutData, + address _router, + uint256 _deadline + ) external returns (uint256); + + function swapUniV2( + address _from, + address _to, + uint256 _amount, + MinAmountOutData memory _minAmountOutData, + address _router + ) external returns (uint256); + + function swapBal( + address _from, + address _to, + uint256 _amount, + MinAmountOutData memory _minAmountOutData, + address _vault, + uint256 _deadline, + bool _tryCatchActive + ) external returns (uint256); + + function swapBal( + address _from, + address _to, + uint256 _amount, + MinAmountOutData memory _minAmountOutData, + address _vault, + uint256 _deadline + ) external returns (uint256); + + function swapBal( + address _from, + address _to, + uint256 _amount, + MinAmountOutData memory _minAmountOutData, + address _vault + ) external returns (uint256); + + function swapThenaRam( + address _from, + address _to, + uint256 _amount, + MinAmountOutData memory _minAmountOutData, + address _router, + uint256 _deadline, + bool _tryCatchActive + ) external returns (uint256); + + function swapThenaRam( + address _from, + address _to, + uint256 _amount, + MinAmountOutData memory _minAmountOutData, + address _router, + uint256 _deadline + ) external returns (uint256); + + function swapThenaRam( + address _from, + address _to, + uint256 _amount, + MinAmountOutData memory _minAmountOutData, + address _router + ) external returns (uint256); + + function swapUniV3( + address _from, + address _to, + uint256 _amount, + MinAmountOutData memory _minAmountOutData, + address _router, + uint256 _deadline, + bool _tryCatchActive + ) external returns (uint256); + + function swapUniV3( + address _from, + address _to, + uint256 _amount, + MinAmountOutData memory _minAmountOutData, + address _router, + uint256 _deadline + ) external returns (uint256); + + function swapUniV3( + address _from, + address _to, + uint256 _amount, + MinAmountOutData memory _minAmountOutData, + address _router + ) external returns (uint256); +} diff --git a/test/Common.sol b/test/Common.sol new file mode 100644 index 0000000..843f5fe --- /dev/null +++ b/test/Common.sol @@ -0,0 +1,241 @@ +// SPDX-License-Identifier: BUSL-1.1 + +pragma solidity ^0.8.0; + +import "forge-std/Test.sol"; +import {ReaperVaultV2} from "vault-v2/ReaperVaultV2.sol"; +import {IERC20} from "oz/token/ERC20/IERC20.sol"; +import {ReaperSwapper, MinAmountOutData, MinAmountOutKind, IVeloRouter, ISwapRouter, UniV3SwapData} from "vault-v2/ReaperSwapper.sol"; +import {OptionsToken} from "../src/OptionsToken.sol"; +import {SwapProps, ExchangeType} from "../src/helpers/SwapHelper.sol"; +import {ERC1967Proxy} from "oz/proxy/ERC1967/ERC1967Proxy.sol"; +import {ERC20} from "solmate/tokens/ERC20.sol"; +import {DiscountExerciseParams, DiscountExercise} from "../src/exercise/DiscountExercise.sol"; +import {IOracle} from "../src/interfaces/IOracle.sol"; +import {ThenaOracle, IThenaPair} from "../src/oracles/ThenaOracle.sol"; +import {IUniswapV3Factory} from "vault-v2/interfaces/IUniswapV3Factory.sol"; +import {IUniswapV3Pool, UniswapV3Oracle} from "../src/oracles/UniswapV3Oracle.sol"; +import {MockBalancerTwapOracle} from "../test/mocks/MockBalancerTwapOracle.sol"; +import {BalancerOracle} from "../src/oracles/BalancerOracle.sol"; + +error Common__NotYetImplemented(); + +/* Constants */ +uint256 constant NON_ZERO_PROFIT = 1; +uint16 constant PRICE_MULTIPLIER = 5000; // 0.5 +uint256 constant INSTANT_EXIT_FEE = 500; // 0.05 +uint56 constant ORACLE_SECS = 30 minutes; +uint56 constant ORACLE_AGO = 2 minutes; +uint128 constant ORACLE_MIN_PRICE = 1e7; +uint56 constant ORACLE_LARGEST_SAFETY_WINDOW = 24 hours; +uint256 constant ORACLE_MIN_PRICE_DENOM = 10000; +uint256 constant BPS_DENOM = 10_000; +uint256 constant MAX_SUPPLY = 1e27; // the max supply of the options token & the underlying token + +uint256 constant AMOUNT = 2e18; // 2 ETH +address constant REWARDER = 0x6A0406B8103Ec68EE9A713A073C7bD587c5e04aD; +uint256 constant MIN_OATH_FOR_FUZZING = 1e19; + +/* OP */ +address constant OP_POOL_ADDRESSES_PROVIDER_V2 = 0xdDE5dC81e40799750B92079723Da2acAF9e1C6D6; // Granary (aavev2) +// AAVEv3 - 0xa97684ead0e402dC232d5A977953DF7ECBaB3CDb; +address constant OP_WETH = 0x4200000000000000000000000000000000000006; +address constant OP_OATHV1 = 0x39FdE572a18448F8139b7788099F0a0740f51205; +address constant OP_OATHV2 = 0x00e1724885473B63bCE08a9f0a52F35b0979e35A; +address constant OP_CUSDC = 0xEC8FEa79026FfEd168cCf5C627c7f486D77b765F; +address constant OP_GUSDC = 0x7A0FDDBA78FF45D353B1630B77f4D175A00df0c0; +address constant OP_GOP = 0x30091e843deb234EBb45c7E1Da4bBC4C33B3f0B4; +address constant OP_SOOP = 0x8cD6b19A07d754bF36AdEEE79EDF4F2134a8F571; +address constant OP_USDC = 0x7F5c764cBc14f9669B88837ca1490cCa17c31607; +address constant OP_OP = 0x4200000000000000000000000000000000000042; +/* Balancer */ +address constant OP_DATA_PROVIDER = 0x9546F673eF71Ff666ae66d01Fd6E7C6Dae5a9995; +bytes32 constant OP_OATHV1_ETH_BPT = 0xd20f6f1d8a675cdca155cb07b5dc9042c467153f0002000000000000000000bc; // OATHv1/ETH BPT +bytes32 constant OP_OATHV2_ETH_BPT = 0xd13d81af624956327a24d0275cbe54b0ee0e9070000200000000000000000109; // OATHv2/ETH BPT +bytes32 constant OP_BTC_WETH_USDC_BPT = 0x5028497af0c9a54ea8c6d42a054c0341b9fc6168000100000000000000000004; +bytes32 constant OP_WETH_OP_USDC_BPT = 0x39965c9dab5448482cf7e002f583c812ceb53046000100000000000000000003; +address constant OP_BEETX_VAULT = 0xBA12222222228d8Ba445958a75a0704d566BF2C8; +/* Uniswap */ +address constant OP_UNIV3_ROUTERV = 0xE592427A0AEce92De3Edee1F18E0157C05861564; +address constant OP_UNIV3_FACTORY = 0x1F98431c8aD98523631AE4a59f267346ea31F984; +/* Velodrome */ +address constant OP_VELO_OATHV2_ETH_PAIR = 0xc3439bC1A747e545887192d6b7F8BE47f608473F; +address constant OP_VELO_ROUTER = 0xa062aE8A9c5e11aaA026fc2670B0D65cCc8B2858; +address constant OP_VELO_FACTORY = 0xF1046053aa5682b4F9a81b5481394DA16BE5FF5a; + +/* BSC */ +address constant BSC_LENDING_POOL = 0xad441B19a9948c3a3f38C0AB6CCbd853036851d2; +address constant BSC_ADDRESS_PROVIDER = 0xcD2f1565e6d2A83A167FDa6abFc10537d4e984f0; +address constant BSC_DATA_PROVIDER = 0xFa0AC9b741F0868B2a8C4a6001811a5153019818; +address constant BSC_HBR = 0x42c95788F791a2be3584446854c8d9BB01BE88A9; +address constant BSC_USDT = 0x55d398326f99059fF775485246999027B3197955; +address constant BSC_BTCB = 0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c; +address constant BSC_WBNB = 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c; +address constant BSC_GUSDT = 0x686C55C8344E902CD8143Cf4BDF2c5089Be273c5; +address constant BSC_THENA_ROUTER = 0xd4ae6eCA985340Dd434D38F470aCCce4DC78D109; +address constant BSC_THENA_FACTORY = 0x2c788FE40A417612cb654b14a944cd549B5BF130; +address constant BSC_UNIV3_ROUTERV2 = 0xB971eF87ede563556b2ED4b1C0b0019111Dd85d2; +address constant BSC_UNIV3_FACTORY = 0xdB1d10011AD0Ff90774D0C6Bb92e5C5c8b4461F7; +address constant BSC_PANCAKE_ROUTER = 0x1b81D678ffb9C0263b24A97847620C99d213eB14; +address constant BSC_PANCAKE_FACTORY = 0x0BFbCF9fa4f9C56B0F40a671Ad40E0805A091865; +address constant BSC_REWARDER = 0x071c626C75248E4F672bAb8c21c089166F49B615; + +/* ARB */ +address constant ARB_USDCE = 0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8; +address constant ARB_USDC = 0xaf88d065e77c8cC2239327C5EDb3A432268e5831; +address constant ARB_RAM = 0xAAA6C1E32C55A7Bfa8066A6FAE9b42650F262418; +address constant ARB_WETH = 0x82aF49447D8a07e3bd95BD0d56f35241523fBab1; +/* Ramses */ +address constant ARB_RAM_ROUTER = 0xAAA87963EFeB6f7E0a2711F397663105Acb1805e; +address constant ARB_RAM_ROUTERV2 = 0xAA23611badAFB62D37E7295A682D21960ac85A90; //univ3 +address constant ARB_RAM_FACTORYV2 = 0xAA2cd7477c451E703f3B9Ba5663334914763edF8; + +/* MODE */ +address constant MODE_MODE = 0xDfc7C877a950e49D2610114102175A06C2e3167a; +address constant MODE_USDC = 0xd988097fb8612cc24eeC14542bC03424c656005f; +address constant MODE_WETH = 0x4200000000000000000000000000000000000006; +/* Velodrome */ +address constant MODE_VELO_USDC_MODE_PAIR = 0x283bA4E204DFcB6381BCBf2cb5d0e765A2B57bC2; // DECIMALS ISSUE +address constant MODE_VELO_WETH_MODE_PAIR = 0x0fba984c97539B3fb49ACDA6973288D0EFA903DB; +address constant MODE_VELO_ROUTER = 0x3a63171DD9BebF4D07BC782FECC7eb0b890C2A45; + +contract Common is Test { + IERC20 nativeToken; + IERC20 paymentToken; + IERC20 underlyingToken; + IERC20 wantToken; + IVeloRouter veloRouter; + ISwapRouter swapRouter; + IUniswapV3Factory univ3Factory; + ReaperSwapper reaperSwapper; + MockBalancerTwapOracle underlyingPaymentMock; + + address[] treasuries; + uint256[] feeBPS; + bytes32 paymentUnderlyingBpt; + bytes32 paymentWantBpt; + + address pool; + address addressProvider; + address dataProvider; + address rewarder; + address balancerVault; + address owner; + address gWantAddress; + address tokenAdmin; + address strategist = address(4); + address vault; + address management1; + address management2; + address management3; + address keeper; + + uint256 targetLtv = 0.77 ether; + uint256 maxLtv = 0.771 ether; + + OptionsToken optionsToken; + ERC1967Proxy tmpProxy; + OptionsToken optionsTokenProxy; + DiscountExercise exerciser; + + function fixture_setupAccountsAndFees(uint256 fee1, uint256 fee2) public { + /* Setup accounts */ + owner = makeAddr("owner"); + tokenAdmin = makeAddr("tokenAdmin"); + treasuries = new address[](2); + treasuries[0] = makeAddr("treasury1"); + treasuries[1] = makeAddr("treasury2"); + vault = makeAddr("vault"); + management1 = makeAddr("management1"); + management2 = makeAddr("management2"); + management3 = makeAddr("management3"); + keeper = makeAddr("keeper"); + + feeBPS = new uint256[](2); + feeBPS[0] = fee1; + feeBPS[1] = fee2; + } + + /* Functions */ + function fixture_prepareOptionToken(uint256 _amount, address _compounder, address _strategy, OptionsToken _optionsToken, address _tokenAdmin) + public + { + /* Mint options tokens and transfer them to the strategy (rewards simulation) */ + vm.prank(_tokenAdmin); + _optionsToken.mint(_strategy, _amount); + vm.prank(_strategy); + _optionsToken.approve(_compounder, _amount); + } + + function fixture_updateSwapperPaths(ExchangeType exchangeType) public { + address[2] memory paths = [address(underlyingToken), address(paymentToken)]; + + if (exchangeType == ExchangeType.Bal) { + /* Configure balancer like dexes */ + reaperSwapper.updateBalSwapPoolID(paths[0], paths[1], balancerVault, paymentUnderlyingBpt); + reaperSwapper.updateBalSwapPoolID(paths[1], paths[0], balancerVault, paymentUnderlyingBpt); + } else if (exchangeType == ExchangeType.VeloSolid) { + /* Configure thena ram like dexes */ + IVeloRouter.Route[] memory veloPath = new IVeloRouter.Route[](1); + veloPath[0] = IVeloRouter.Route(paths[0], paths[1], false, OP_VELO_FACTORY); + reaperSwapper.updateVeloSwapPath(paths[0], paths[1], address(veloRouter), veloPath); + veloPath[0] = IVeloRouter.Route(paths[1], paths[0], false, OP_VELO_FACTORY); + reaperSwapper.updateVeloSwapPath(paths[1], paths[0], address(veloRouter), veloPath); + } else if (exchangeType == ExchangeType.UniV3) { + /* Configure univ3 like dexes */ + uint24[] memory univ3Fees = new uint24[](1); + univ3Fees[0] = 500; + address[] memory univ3Path = new address[](2); + + univ3Path[0] = paths[0]; + univ3Path[1] = paths[1]; + UniV3SwapData memory swapPathAndFees = UniV3SwapData(univ3Path, univ3Fees); + reaperSwapper.updateUniV3SwapPath(paths[0], paths[1], address(swapRouter), swapPathAndFees); + } else { + revert Common__NotYetImplemented(); + } + } + + function fixture_getMockedOracle(ExchangeType exchangeType) public returns (IOracle) { + IOracle oracle; + address[] memory _tokens = new address[](2); + _tokens[0] = address(paymentToken); + _tokens[1] = address(underlyingToken); + if (exchangeType == ExchangeType.Bal) { + BalancerOracle underlyingPaymentOracle; + underlyingPaymentMock = new MockBalancerTwapOracle(_tokens); + underlyingPaymentOracle = + new BalancerOracle(underlyingPaymentMock, address(underlyingToken), owner, ORACLE_SECS, ORACLE_AGO, ORACLE_MIN_PRICE); + oracle = underlyingPaymentOracle; + } else if (exchangeType == ExchangeType.VeloSolid) { + IVeloRouter router = IVeloRouter(payable(address(veloRouter))); + ThenaOracle underlyingPaymentOracle; + address pair = router.pairFor(address(underlyingToken), address(paymentToken), false, OP_VELO_FACTORY); + underlyingPaymentOracle = new ThenaOracle(IThenaPair(pair), address(underlyingToken), owner, ORACLE_SECS, ORACLE_MIN_PRICE); + oracle = IOracle(address(underlyingPaymentOracle)); + } else if (exchangeType == ExchangeType.UniV3) { + IUniswapV3Pool univ3Pool = IUniswapV3Pool(univ3Factory.getPool(address(underlyingToken), address(paymentToken), 500)); + UniswapV3Oracle univ3Oracle = + new UniswapV3Oracle(univ3Pool, address(paymentToken), owner, uint32(ORACLE_SECS), uint32(ORACLE_AGO), ORACLE_MIN_PRICE); + oracle = IOracle(address(univ3Oracle)); + } else { + revert Common__NotYetImplemented(); + } + return oracle; + } + + function fixture_getSwapProps(ExchangeType exchangeType, uint256 slippage) public view returns (SwapProps memory) { + SwapProps memory swapProps; + + if (exchangeType == ExchangeType.Bal) { + swapProps = SwapProps(address(reaperSwapper), address(swapRouter), ExchangeType.Bal, slippage); + } else if (exchangeType == ExchangeType.VeloSolid) { + swapProps = SwapProps(address(reaperSwapper), address(veloRouter), ExchangeType.VeloSolid, slippage); + } else if (exchangeType == ExchangeType.UniV3) { + swapProps = SwapProps(address(reaperSwapper), address(swapRouter), ExchangeType.UniV3, slippage); + } else { + revert Common__NotYetImplemented(); + } + return swapProps; + } +} diff --git a/test/ItBscOptionsToken.t.solNOT b/test/ItBscOptionsToken.t.solNOT new file mode 100644 index 0000000..8508344 --- /dev/null +++ b/test/ItBscOptionsToken.t.solNOT @@ -0,0 +1,407 @@ +// SPDX-License-Identifier: AGPL-3.0 +pragma solidity ^0.8.13; + +import "forge-std/Test.sol"; + +import {FixedPointMathLib} from "solmate/utils/FixedPointMathLib.sol"; +import {IERC20} from "oz/token/ERC20/IERC20.sol"; +import {ERC1967Proxy} from "oz/proxy/ERC1967/ERC1967Proxy.sol"; + +import {OptionsToken} from "../src/OptionsToken.sol"; +import {DiscountExerciseParams, DiscountExercise, BaseExercise, SwapProps, ExchangeType} from "../src/exercise/DiscountExercise.sol"; +import {TestERC20} from "./mocks/TestERC20.sol"; +import {ThenaOracle} from "../src/oracles/ThenaOracle.sol"; +import {MockBalancerTwapOracle} from "./mocks/MockBalancerTwapOracle.sol"; + +import {ReaperSwapper, MinAmountOutData, MinAmountOutKind, IThenaRamRouter, ISwapRouter, UniV3SwapData} from "vault-v2/ReaperSwapper.sol"; + +contract OptionsTokenTest is Test { + using FixedPointMathLib for uint256; + + uint256 constant FORK_BLOCK = 36349190; + string MAINNET_URL = vm.envString("BSC_RPC_URL"); + + address constant BSC_THENA_ROUTER = 0xd4ae6eCA985340Dd434D38F470aCCce4DC78D109; + address constant BSC_UNIV3_ROUTERV2 = 0xB971eF87ede563556b2ED4b1C0b0019111Dd85d2; + address constant BSC_HBR = 0x42c95788F791a2be3584446854c8d9BB01BE88A9; + address constant BSC_WBNB = 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c; + address constant ORACLE_CONTRACT = 0x733D732943aC1333771017e7c9D7b2d5abAdE5C4; + + uint16 constant PRICE_MULTIPLIER = 5000; // 0.5 + uint56 constant ORACLE_SECS = 30 minutes; + uint56 constant ORACLE_AGO = 2 minutes; + uint128 constant ORACLE_MIN_PRICE = 1e17; + uint56 constant ORACLE_LARGEST_SAFETY_WINDOW = 24 hours; + uint256 constant ORACLE_INIT_TWAP_VALUE = 1e19; + uint256 constant ORACLE_MIN_PRICE_DENOM = 10000; + + uint256 constant MAX_SUPPLY = 1e27; // the max supply of the options token & the underlying token + uint256 constant INSTANT_EXIT_FEE = 500; + + address owner; + address tokenAdmin; + address[] feeRecipients_; + uint256[] feeBPS_; + + OptionsToken optionsToken; + DiscountExercise exerciser; + ThenaOracle oracle; + MockBalancerTwapOracle balancerTwapOracle; + IERC20 paymentToken; + address underlyingToken; + ReaperSwapper reaperSwapper; + + function fixture_getSwapProps(ExchangeType exchangeType, uint256 slippage) public view returns (SwapProps memory) { + SwapProps memory swapProps; + + if (exchangeType == ExchangeType.ThenaRam) { + swapProps = SwapProps(address(reaperSwapper), BSC_THENA_ROUTER, ExchangeType.ThenaRam, slippage); + } else if (exchangeType == ExchangeType.UniV3) { + swapProps = SwapProps(address(reaperSwapper), BSC_UNIV3_ROUTERV2, ExchangeType.UniV3, slippage); + } else { + // revert + } + return swapProps; + } + + function fixture_updateSwapperPaths(ExchangeType exchangeType) public { + address[2] memory paths = [address(underlyingToken), address(paymentToken)]; + + if (exchangeType == ExchangeType.ThenaRam) { + /* Configure thena ram like dexes */ + IThenaRamRouter.route[] memory thenaPath = new IThenaRamRouter.route[](1); + thenaPath[0] = IThenaRamRouter.route(paths[0], paths[1], false); + reaperSwapper.updateThenaRamSwapPath(paths[0], paths[1], address(BSC_THENA_ROUTER), thenaPath); + thenaPath[0] = IThenaRamRouter.route(paths[1], paths[0], false); + reaperSwapper.updateThenaRamSwapPath(paths[1], paths[0], address(BSC_THENA_ROUTER), thenaPath); + } else if (exchangeType == ExchangeType.UniV3) { + /* Configure univ3 like dexes */ + uint24[] memory univ3Fees = new uint24[](1); + univ3Fees[0] = 500; + address[] memory univ3Path = new address[](2); + + univ3Path[0] = paths[0]; + univ3Path[1] = paths[1]; + UniV3SwapData memory swapPathAndFees = UniV3SwapData(univ3Path, univ3Fees); + reaperSwapper.updateUniV3SwapPath(paths[0], paths[1], address(BSC_UNIV3_ROUTERV2), swapPathAndFees); + } else { + // revert + } + } + + function setUp() public { + uint256 bscFork = vm.createFork(MAINNET_URL, FORK_BLOCK); + vm.selectFork(bscFork); + + // set up accounts + owner = makeAddr("owner"); + tokenAdmin = makeAddr("tokenAdmin"); + + feeRecipients_ = new address[](2); + feeRecipients_[0] = makeAddr("feeRecipient"); + feeRecipients_[1] = makeAddr("feeRecipient2"); + + feeBPS_ = new uint256[](2); + feeBPS_[0] = 1000; // 10% + feeBPS_[1] = 9000; // 90% + + // deploy contracts + paymentToken = IERC20(BSC_WBNB); + underlyingToken = BSC_HBR; + + address implementation = address(new OptionsToken()); + ERC1967Proxy proxy = new ERC1967Proxy(implementation, ""); + optionsToken = OptionsToken(address(proxy)); + optionsToken.initialize("TIT Call Option Token", "oTIT", tokenAdmin); + optionsToken.transferOwnership(owner); + + /* Reaper deployment and configuration */ + address[] memory strategists = new address[](1); + strategists[0] = makeAddr("strategist"); + reaperSwapper = new ReaperSwapper(); + ERC1967Proxy tmpProxy = new ERC1967Proxy(address(reaperSwapper), ""); + reaperSwapper = ReaperSwapper(address(tmpProxy)); + reaperSwapper.initialize(strategists, address(this), address(this)); + + fixture_updateSwapperPaths(ExchangeType.ThenaRam); + + SwapProps memory swapProps = fixture_getSwapProps(ExchangeType.ThenaRam, 200); + + address[] memory tokens = new address[](2); + tokens[0] = address(paymentToken); + tokens[1] = underlyingToken; + + balancerTwapOracle = new MockBalancerTwapOracle(tokens); + console.log(tokens[0], tokens[1]); + oracle = ThenaOracle(ORACLE_CONTRACT); + exerciser = new DiscountExercise( + optionsToken, + owner, + IERC20(address(paymentToken)), + IERC20(underlyingToken), + oracle, + PRICE_MULTIPLIER, + INSTANT_EXIT_FEE, + feeRecipients_, + feeBPS_, + swapProps + ); + deal(underlyingToken, address(exerciser), 1e20 ether); + + // add exerciser to the list of options + vm.startPrank(owner); + optionsToken.setExerciseContract(address(exerciser), true); + vm.stopPrank(); + + // set up contracts + balancerTwapOracle.setTwapValue(ORACLE_INIT_TWAP_VALUE); + paymentToken.approve(address(exerciser), type(uint256).max); + } + + function test_onlyTokenAdminCanMint(uint256 amount, address hacker) public { + vm.assume(hacker != tokenAdmin); + + // try minting as non token admin + vm.startPrank(hacker); + vm.expectRevert(OptionsToken.OptionsToken__NotTokenAdmin.selector); + optionsToken.mint(address(this), amount); + vm.stopPrank(); + + // mint as token admin + vm.prank(tokenAdmin); + optionsToken.mint(address(this), amount); + + // verify balance + assertEqDecimal(optionsToken.balanceOf(address(this)), amount, 18); + } + + function test_discountExerciseHappyPath(uint256 amount, address recipient) public { + amount = bound(amount, 100, MAX_SUPPLY); + vm.assume(recipient != address(0)); + + // mint options tokens + vm.prank(tokenAdmin); + optionsToken.mint(address(this), amount); + + // mint payment tokens + uint256 expectedPaymentAmount = amount.mulWadUp(oracle.getPrice().mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); + deal(address(paymentToken), address(this), expectedPaymentAmount); + + // exercise options tokens + DiscountExerciseParams memory params = + DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: false}); + (uint256 paymentAmount,,,) = optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); + + // verify options tokens were transferred + assertEqDecimal(optionsToken.balanceOf(address(this)), 0, 18, "user still has options tokens"); + assertEqDecimal(optionsToken.totalSupply(), 0, 18, "option tokens not burned"); + + // verify payment tokens were transferred + assertEqDecimal(paymentToken.balanceOf(address(this)), 0, 18, "user still has payment tokens"); + uint256 paymentFee1 = expectedPaymentAmount.mulDivDown(feeBPS_[0], 10000); + uint256 paymentFee2 = expectedPaymentAmount - paymentFee1; + assertEqDecimal(paymentToken.balanceOf(feeRecipients_[0]), paymentFee1, 18, "fee recipient 1 didn't receive payment tokens"); + assertEqDecimal(paymentToken.balanceOf(feeRecipients_[1]), paymentFee2, 18, "fee recipient 2 didn't receive payment tokens"); + assertEqDecimal(expectedPaymentAmount, paymentAmount, 18, "exercise returned wrong value"); + } + + function test_instantExitExerciseHappyPath(uint256 amount, address recipient) public { + amount = bound(amount, 1e16, 1e22); + vm.assume(recipient != address(0)); + + // mint options tokens + vm.prank(tokenAdmin); + optionsToken.mint(address(this), amount); + + // mint payment tokens + uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); + uint256 discountedUnderlying = amount.mulDivUp(PRICE_MULTIPLIER, 10_000); + uint256 expectedUnderlyingAmount = discountedUnderlying - amount.mulDivUp(INSTANT_EXIT_FEE, 10_000); + deal(address(paymentToken), address(this), expectedPaymentAmount); + console.log("discountedUnderlying:", discountedUnderlying); + console.log("expectedUnderlyingAmount:", expectedUnderlyingAmount); + + // exercise options tokens + DiscountExerciseParams memory params = + DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: true}); + (uint256 paymentAmount,,,) = optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); + + // verify options tokens were transferred + assertEqDecimal(optionsToken.balanceOf(address(this)), 0, 18, "user still has options tokens"); + assertEqDecimal(optionsToken.totalSupply(), 0, 18, "option tokens not burned"); + + // verify payment tokens were transferred + assertEq(paymentToken.balanceOf(address(this)), expectedPaymentAmount, "user lost payment tokens during instant exit"); + uint256 calcPaymentAmount = exerciser.getPaymentAmount(amount); + uint256 totalFee = calcPaymentAmount.mulDivUp(INSTANT_EXIT_FEE, 10_000); + uint256 fee1 = totalFee.mulDivDown(feeBPS_[0], 10_000); + uint256 fee2 = totalFee - fee1; + console.log("paymentFee1: ", fee1); + console.log("paymentFee2: ", fee2); + assertApproxEqRel(IERC20(paymentToken).balanceOf(feeRecipients_[0]), fee1, 10e16, "fee recipient 1 didn't receive payment tokens"); + assertApproxEqRel(IERC20(paymentToken).balanceOf(feeRecipients_[1]), fee2, 10e16, "fee recipient 2 didn't receive payment tokens"); + assertEqDecimal(paymentAmount, 0, 18, "exercise returned wrong value"); + assertApproxEqAbs(IERC20(underlyingToken).balanceOf(recipient), expectedUnderlyingAmount, 1, "Recipient got wrong amount of underlying token"); + } + + function test_exerciseMinPrice(uint256 amount, address recipient) public { + amount = bound(amount, 1, MAX_SUPPLY); + vm.assume(recipient != address(0)); + + // mint options tokens + vm.prank(tokenAdmin); + optionsToken.mint(address(this), amount); + + // set TWAP value such that the strike price is below the oracle's minPrice value + balancerTwapOracle.setTwapValue(ORACLE_MIN_PRICE - 1); + + // mint payment tokens + uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_MIN_PRICE); + deal(address(paymentToken), address(this), expectedPaymentAmount); + + // exercise options tokens + DiscountExerciseParams memory params = + DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: false}); + vm.expectRevert(bytes4(keccak256("ThenaOracle__BelowMinPrice()"))); + optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); + } + + function test_priceMultiplier(uint256 amount, uint256 multiplier) public { + amount = bound(amount, 1, MAX_SUPPLY / 2); + + vm.prank(owner); + exerciser.setMultiplier(10000); // full price + + // mint options tokens + vm.prank(tokenAdmin); + optionsToken.mint(address(this), amount * 2); + + // mint payment tokens + uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_INIT_TWAP_VALUE); + deal(address(paymentToken), address(this), expectedPaymentAmount); + + // exercise options tokens + DiscountExerciseParams memory params = + DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: false}); + (uint256 paidAmount,,,) = optionsToken.exercise(amount, address(this), address(exerciser), abi.encode(params)); + + // update multiplier + multiplier = bound(multiplier, 1000, 20000); + vm.prank(owner); + exerciser.setMultiplier(multiplier); + + // exercise options tokens + uint256 newPrice = oracle.getPrice().mulDivUp(multiplier, 10000); + uint256 newExpectedPaymentAmount = amount.mulWadUp(newPrice); + params.maxPaymentAmount = newExpectedPaymentAmount; + + deal(address(paymentToken), address(this), newExpectedPaymentAmount); + (uint256 newPaidAmount,,,) = optionsToken.exercise(amount, address(this), address(exerciser), abi.encode(params)); + // verify payment tokens were transferred + assertEqDecimal(paymentToken.balanceOf(address(this)), 0, 18, "user still has payment tokens"); + assertEq(newPaidAmount, paidAmount.mulDivUp(multiplier, 10000), "incorrect discount"); + } + + function test_exerciseHighSlippage(uint256 amount, address recipient) public { + amount = bound(amount, 1, MAX_SUPPLY); + vm.assume(recipient != address(0)); + + // mint options tokens + vm.prank(tokenAdmin); + optionsToken.mint(address(this), amount); + + // mint payment tokens + uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); + deal(address(paymentToken), address(this), expectedPaymentAmount); + + // exercise options tokens which should fail + DiscountExerciseParams memory params = + DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount - 1, deadline: type(uint256).max, isInstantExit: false}); + vm.expectRevert(DiscountExercise.Exercise__SlippageTooHigh.selector); + optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); + } + + // function test_exerciseTwapOracleNotReady(uint256 amount, address recipient) public { + // amount = bound(amount, 1, MAX_SUPPLY); + + // // mint options tokens + // vm.prank(tokenAdmin); + // optionsToken.mint(address(this), amount); + + // // mint payment tokens + // uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); + // deal(address(paymentToken), address(this), expectedPaymentAmount); + + // // update oracle params + // // such that the TWAP window becomes (block.timestamp - ORACLE_LARGEST_SAFETY_WINDOW - ORACLE_SECS, block.timestamp - ORACLE_LARGEST_SAFETY_WINDOW] + // // which is outside of the largest safety window + // // vm.prank(owner); + // // oracle.setParams(ORACLE_SECS, ORACLE_LARGEST_SAFETY_WINDOW, ORACLE_MIN_PRICE); + + // // exercise options tokens which should fail + // DiscountExerciseParams memory params = + // DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: false}); + // vm.expectRevert(ThenaOracle.ThenaOracle__TWAPOracleNotReady.selector); + // optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); + // } + + function test_exercisePastDeadline(uint256 amount, address recipient, uint256 deadline) public { + amount = bound(amount, 0, MAX_SUPPLY); + deadline = bound(deadline, 0, block.timestamp - 1); + + // mint options tokens + vm.prank(tokenAdmin); + optionsToken.mint(address(this), amount); + + // mint payment tokens + uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); + deal(address(paymentToken), address(this), expectedPaymentAmount); + + // exercise options tokens + DiscountExerciseParams memory params = + DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: deadline, isInstantExit: false}); + if (amount != 0) { + vm.expectRevert(DiscountExercise.Exercise__PastDeadline.selector); + } + optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); + } + + function test_exerciseNotOToken(uint256 amount, address recipient) public { + amount = bound(amount, 0, MAX_SUPPLY); + + // mint options tokens + vm.prank(tokenAdmin); + optionsToken.mint(address(this), amount); + + uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); + deal(address(paymentToken), address(this), expectedPaymentAmount); + + // exercise options tokens which should fail + DiscountExerciseParams memory params = + DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: false}); + vm.expectRevert(BaseExercise.Exercise__NotOToken.selector); + exerciser.exercise(address(this), amount, recipient, abi.encode(params)); + } + + function test_exerciseNotExerciseContract(uint256 amount, address recipient) public { + amount = bound(amount, 1, MAX_SUPPLY); + + // mint options tokens + vm.prank(tokenAdmin); + optionsToken.mint(address(this), amount); + + // set option inactive + vm.prank(owner); + optionsToken.setExerciseContract(address(exerciser), false); + + // mint payment tokens + uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); + deal(address(paymentToken), address(this), expectedPaymentAmount); + + // exercise options tokens which should fail + DiscountExerciseParams memory params = + DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: false}); + vm.expectRevert(OptionsToken.OptionsToken__NotExerciseContract.selector); + optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); + } +} diff --git a/test/ItModeOptionsToken.t.sol b/test/ItModeOptionsToken.t.sol new file mode 100644 index 0000000..8287b09 --- /dev/null +++ b/test/ItModeOptionsToken.t.sol @@ -0,0 +1,391 @@ +// SPDX-License-Identifier: AGPL-3.0 +pragma solidity ^0.8.13; + +import "forge-std/Test.sol"; + +import {FixedPointMathLib} from "solmate/utils/FixedPointMathLib.sol"; +import {IERC20} from "oz/token/ERC20/IERC20.sol"; +import {ERC1967Proxy} from "oz/proxy/ERC1967/ERC1967Proxy.sol"; + +import {OptionsToken} from "../src/OptionsToken.sol"; +import {DiscountExerciseParams, DiscountExercise, BaseExercise} from "../src/exercise/DiscountExercise.sol"; +// import {SwapProps, ExchangeType} from "../src/helpers/SwapHelper.sol"; +import {TestERC20} from "./mocks/TestERC20.sol"; +import {ThenaOracle} from "../src/oracles/ThenaOracle.sol"; +import {MockBalancerTwapOracle} from "./mocks/MockBalancerTwapOracle.sol"; + +import {ReaperSwapper, MinAmountOutData, MinAmountOutKind, IVeloRouter, ISwapRouter, UniV3SwapData} from "vault-v2/ReaperSwapper.sol"; + +import "./Common.sol"; + +contract ModeOptionsTokenTest is Test, Common { + using FixedPointMathLib for uint256; + + uint256 constant FORK_BLOCK = 9260950; + string MAINNET_URL = vm.envString("MODE_RPC_URL"); + + uint16 constant PRICE_MULTIPLIER = 5000; // 0.5 + uint56 constant ORACLE_SECS = 30 minutes; + uint56 constant ORACLE_AGO = 2 minutes; + uint128 constant ORACLE_MIN_PRICE = 1e17; + uint56 constant ORACLE_LARGEST_SAFETY_WINDOW = 24 hours; + uint256 constant ORACLE_INIT_TWAP_VALUE = 1e19; + uint128 constant ORACLE_MIN_PRICE_DENOM = 10000; + + uint256 constant MAX_SUPPLY = 1e27; // the max supply of the options token & the underlying token + uint256 constant INSTANT_EXIT_FEE = 500; + + address[] feeRecipients_; + uint256[] feeBPS_; + + ThenaOracle oracle; + MockBalancerTwapOracle balancerTwapOracle; + + // function fixture_getSwapProps(ExchangeType exchangeType, uint256 slippage) public view returns (SwapProps memory) { + // SwapProps memory swapProps; + + // if (exchangeType == ExchangeType.ThenaRam) { + // swapProps = SwapProps(address(reaperSwapper), BSC_THENA_ROUTER, ExchangeType.ThenaRam, slippage); + // } else if (exchangeType == ExchangeType.UniV3) { + // swapProps = SwapProps(address(reaperSwapper), BSC_UNIV3_ROUTERV2, ExchangeType.UniV3, slippage); + // } else { + // // revert + // } + // return swapProps; + // } + + // function fixture_updateSwapperPaths(ExchangeType exchangeType) public { + // address[2] memory paths = [address(underlyingToken), address(paymentToken)]; + + // if (exchangeType == ExchangeType.ThenaRam) { + // /* Configure thena ram like dexes */ + // IThenaRamRouter.route[] memory thenaPath = new IThenaRamRouter.route[](1); + // thenaPath[0] = IThenaRamRouter.route(paths[0], paths[1], false); + // reaperSwapper.updateThenaRamSwapPath(paths[0], paths[1], address(BSC_THENA_ROUTER), thenaPath); + // thenaPath[0] = IThenaRamRouter.route(paths[1], paths[0], false); + // reaperSwapper.updateThenaRamSwapPath(paths[1], paths[0], address(BSC_THENA_ROUTER), thenaPath); + // } else if (exchangeType == ExchangeType.UniV3) { + // /* Configure univ3 like dexes */ + // uint24[] memory univ3Fees = new uint24[](1); + // univ3Fees[0] = 500; + // address[] memory univ3Path = new address[](2); + + // univ3Path[0] = paths[0]; + // univ3Path[1] = paths[1]; + // UniV3SwapData memory swapPathAndFees = UniV3SwapData(univ3Path, univ3Fees); + // reaperSwapper.updateUniV3SwapPath(paths[0], paths[1], address(BSC_UNIV3_ROUTERV2), swapPathAndFees); + // } else { + // // revert + // } + // } + + function setUp() public { + /* Common assignments */ + ExchangeType exchangeType = ExchangeType.VeloSolid; + // nativeToken = IERC20(OP_WETH); + paymentToken = IERC20(MODE_MODE); + underlyingToken = IERC20(MODE_WETH); + // wantToken = IERC20(OP_OP); + // paymentUnderlyingBpt = OP_OATHV2_ETH_BPT; + // paymentWantBpt = OP_WETH_OP_USDC_BPT; + // balancerVault = OP_BEETX_VAULT; + // swapRouter = ISwapRouter(OP_BEETX_VAULT); + // univ3Factory = IUniswapV3Factory(OP_UNIV3_FACTORY); + veloRouter = IVeloRouter(MODE_VELO_ROUTER); + + /* Setup network */ + uint256 fork = vm.createFork(MAINNET_URL, FORK_BLOCK); + vm.selectFork(fork); + + // set up accounts + owner = makeAddr("owner"); + tokenAdmin = makeAddr("tokenAdmin"); + + feeRecipients_ = new address[](2); + feeRecipients_[0] = makeAddr("feeRecipient"); + feeRecipients_[1] = makeAddr("feeRecipient2"); + + feeBPS_ = new uint256[](2); + feeBPS_[0] = 1000; // 10% + feeBPS_[1] = 9000; // 90% + + address implementation = address(new OptionsToken()); + ERC1967Proxy proxy = new ERC1967Proxy(implementation, ""); + optionsToken = OptionsToken(address(proxy)); + optionsToken.initialize("TIT Call Option Token", "oTIT", tokenAdmin); + optionsToken.transferOwnership(owner); + + /* Reaper deployment and configuration */ + address[] memory strategists = new address[](1); + strategists[0] = makeAddr("strategist"); + reaperSwapper = new ReaperSwapper(); + ERC1967Proxy tmpProxy = new ERC1967Proxy(address(reaperSwapper), ""); + reaperSwapper = ReaperSwapper(address(tmpProxy)); + reaperSwapper.initialize(strategists, address(this), address(this)); + + fixture_updateSwapperPaths(ExchangeType.VeloSolid); + + SwapProps memory swapProps = fixture_getSwapProps(ExchangeType.VeloSolid, 200); + + address[] memory tokens = new address[](2); + tokens[0] = address(paymentToken); + tokens[1] = address(underlyingToken); + + balancerTwapOracle = new MockBalancerTwapOracle(tokens); + console.log(tokens[0], tokens[1]); + oracle = new ThenaOracle(IThenaPair(MODE_VELO_WETH_MODE_PAIR), address(underlyingToken), owner, ORACLE_SECS, ORACLE_MIN_PRICE_DENOM); + exerciser = new DiscountExercise( + optionsToken, + owner, + IERC20(address(paymentToken)), + underlyingToken, + oracle, + PRICE_MULTIPLIER, + INSTANT_EXIT_FEE, + feeRecipients_, + feeBPS_, + swapProps + ); + deal(address(underlyingToken), address(exerciser), 1e20 ether); + + // add exerciser to the list of options + vm.startPrank(owner); + optionsToken.setExerciseContract(address(exerciser), true); + vm.stopPrank(); + + // set up contracts + balancerTwapOracle.setTwapValue(ORACLE_INIT_TWAP_VALUE); + paymentToken.approve(address(exerciser), type(uint256).max); + } + + function test_modeRedeemPositiveScenario(uint256 amount, address recipient) public { + amount = bound(amount, 100, MAX_SUPPLY); + vm.assume(recipient != address(0)); + + // mint options tokens + vm.prank(tokenAdmin); + optionsToken.mint(address(this), amount); + + // mint payment tokens + uint256 expectedPaymentAmount = amount.mulWadUp(oracle.getPrice().mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); + deal(address(paymentToken), address(this), expectedPaymentAmount); + + // exercise options tokens + DiscountExerciseParams memory params = + DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: false}); + (uint256 paymentAmount,,,) = optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); + + // verify options tokens were transferred + assertEqDecimal(optionsToken.balanceOf(address(this)), 0, 18, "user still has options tokens"); + assertEqDecimal(optionsToken.totalSupply(), 0, 18, "option tokens not burned"); + + // verify payment tokens were transferred + assertEqDecimal(paymentToken.balanceOf(address(this)), 0, 18, "user still has payment tokens"); + uint256 paymentFee1 = expectedPaymentAmount.mulDivDown(feeBPS_[0], 10000); + uint256 paymentFee2 = expectedPaymentAmount - paymentFee1; + assertEqDecimal(paymentToken.balanceOf(feeRecipients_[0]), paymentFee1, 18, "fee recipient 1 didn't receive payment tokens"); + assertEqDecimal(paymentToken.balanceOf(feeRecipients_[1]), paymentFee2, 18, "fee recipient 2 didn't receive payment tokens"); + assertEqDecimal(expectedPaymentAmount, paymentAmount, 18, "exercise returned wrong value"); + } + + function test_modeZapPositiveScenario(uint256 amount, address recipient) public { + amount = bound(amount, 1e10, 1e18 - 1); + vm.assume(recipient != address(0)); + + // mint options tokens + vm.prank(tokenAdmin); + optionsToken.mint(address(this), amount); + + // mint payment tokens + uint256 expectedPaymentAmount = amount.mulWadUp(oracle.getPrice().mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); + uint256 discountedUnderlying = amount.mulDivUp(PRICE_MULTIPLIER, 10_000); + uint256 expectedUnderlyingAmount = discountedUnderlying - discountedUnderlying.mulDivUp(INSTANT_EXIT_FEE, 10_000); + deal(address(paymentToken), address(this), expectedPaymentAmount); + + console.log("discountedUnderlying:", discountedUnderlying); + console.log("expectedUnderlyingAmount:", expectedUnderlyingAmount); + + // Calculate total fee from zapping + uint256 calcPaymentAmount = exerciser.getPaymentAmount(amount); + uint256 totalFee = calcPaymentAmount.mulDivUp(INSTANT_EXIT_FEE, 10_000); + + vm.prank(owner); + exerciser.setMinAmountToTriggerSwap(totalFee + 1); + + // exercise options tokens + DiscountExerciseParams memory params = + DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: true}); + (uint256 paymentAmount,,,) = optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); + console.log("Exercise 1"); + assertEqDecimal(optionsToken.balanceOf(address(this)), 0, 18, "user still has options tokens"); + assertEqDecimal(optionsToken.totalSupply(), 0, 18, "option tokens not burned"); + + // verify payment tokens were not transferred + assertEq(paymentToken.balanceOf(address(this)), expectedPaymentAmount, "user lost payment tokens during instant exit"); + //verify whether distributions not happened + assertEq(IERC20(paymentToken).balanceOf(feeRecipients_[0]), 0, "fee recipient 1 received payment tokens but shouldn't"); + assertEq(IERC20(paymentToken).balanceOf(feeRecipients_[1]), 0, "fee recipient 2 received payment tokens but shouldn't"); + assertEqDecimal(paymentAmount, 0, 18, "exercise returned wrong value"); + uint256 balanceAfterFirstExercise = underlyingToken.balanceOf(recipient); + assertApproxEqAbs(balanceAfterFirstExercise, expectedUnderlyingAmount, 1, "Recipient got wrong amount of underlying token"); + + /*---------- Second call -----------*/ + amount = bound(amount, 1e18, 1e24); + // mint options tokens + vm.prank(tokenAdmin); + optionsToken.mint(address(this), amount); + + // mint payment tokens + expectedPaymentAmount = amount.mulWadUp(oracle.getPrice().mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); + discountedUnderlying = amount.mulDivUp(PRICE_MULTIPLIER, 10_000); + expectedUnderlyingAmount = discountedUnderlying - discountedUnderlying.mulDivUp(INSTANT_EXIT_FEE, 10_000); + deal(address(paymentToken), address(this), expectedPaymentAmount); + + (paymentAmount,,,) = optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); + + // verify options tokens were transferred + console.log("Exercise 2"); + assertEqDecimal(optionsToken.balanceOf(address(this)), 0, 18, "user still has options tokens"); + assertEqDecimal(optionsToken.totalSupply(), 0, 18, "option tokens not burned"); + + // verify payment tokens were not transferred + assertEq(paymentToken.balanceOf(address(this)), expectedPaymentAmount, "user lost payment tokens during instant exit"); + + // verify fee is distributed + calcPaymentAmount = exerciser.getPaymentAmount(amount); + totalFee += calcPaymentAmount.mulDivUp(INSTANT_EXIT_FEE, 10_000); + uint256 fee1 = totalFee.mulDivDown(feeBPS_[0], 10_000); + uint256 fee2 = totalFee - fee1; + console.log("paymentFee1: ", fee1); + console.log("paymentFee2: ", fee2); + assertApproxEqRel(IERC20(paymentToken).balanceOf(feeRecipients_[0]), fee1, 5e16, "fee recipient 1 didn't receive payment tokens"); + assertApproxEqRel(IERC20(paymentToken).balanceOf(feeRecipients_[1]), fee2, 5e16, "fee recipient 2 didn't receive payment tokens"); + assertEqDecimal(paymentAmount, 0, 18, "exercise returned wrong value"); + assertApproxEqAbs( + underlyingToken.balanceOf(recipient) + balanceAfterFirstExercise, + expectedUnderlyingAmount, + 1, + "Recipient got wrong amount of underlying token" + ); + } + + // function test_priceMultiplier(uint256 amount, uint256 multiplier) public { + // amount = bound(amount, 1, MAX_SUPPLY / 2); + + // vm.prank(owner); + // exerciser.setMultiplier(10000); // full price + + // // mint options tokens + // vm.prank(tokenAdmin); + // optionsToken.mint(address(this), amount * 2); + + // // mint payment tokens + // uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_INIT_TWAP_VALUE); + // deal(address(paymentToken), address(this), expectedPaymentAmount); + + // // exercise options tokens + // DiscountExerciseParams memory params = + // DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: false}); + // (uint256 paidAmount,,,) = optionsToken.exercise(amount, address(this), address(exerciser), abi.encode(params)); + + // // update multiplier + // multiplier = bound(multiplier, 1000, 20000); + // vm.prank(owner); + // exerciser.setMultiplier(multiplier); + + // // exercise options tokens + // uint256 newPrice = oracle.getPrice().mulDivUp(multiplier, 10000); + // uint256 newExpectedPaymentAmount = amount.mulWadUp(newPrice); + // params.maxPaymentAmount = newExpectedPaymentAmount; + + // deal(address(paymentToken), address(this), newExpectedPaymentAmount); + // (uint256 newPaidAmount,,,) = optionsToken.exercise(amount, address(this), address(exerciser), abi.encode(params)); + // // verify payment tokens were transferred + // assertEqDecimal(paymentToken.balanceOf(address(this)), 0, 18, "user still has payment tokens"); + // assertEq(newPaidAmount, paidAmount.mulDivUp(multiplier, 10000), "incorrect discount"); + // } + + // function test_exerciseTwapOracleNotReady(uint256 amount, address recipient) public { + // amount = bound(amount, 1, MAX_SUPPLY); + + // // mint options tokens + // vm.prank(tokenAdmin); + // optionsToken.mint(address(this), amount); + + // // mint payment tokens + // uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); + // deal(address(paymentToken), address(this), expectedPaymentAmount); + + // // update oracle params + // // such that the TWAP window becomes (block.timestamp - ORACLE_LARGEST_SAFETY_WINDOW - ORACLE_SECS, block.timestamp - ORACLE_LARGEST_SAFETY_WINDOW] + // // which is outside of the largest safety window + // // vm.prank(owner); + // // oracle.setParams(ORACLE_SECS, ORACLE_LARGEST_SAFETY_WINDOW, ORACLE_MIN_PRICE); + + // // exercise options tokens which should fail + // DiscountExerciseParams memory params = + // DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: false}); + // vm.expectRevert(ThenaOracle.ThenaOracle__TWAPOracleNotReady.selector); + // optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); + // } + + // function test_exercisePastDeadline(uint256 amount, address recipient, uint256 deadline) public { + // amount = bound(amount, 0, MAX_SUPPLY); + // deadline = bound(deadline, 0, block.timestamp - 1); + + // // mint options tokens + // vm.prank(tokenAdmin); + // optionsToken.mint(address(this), amount); + + // // mint payment tokens + // uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); + // deal(address(paymentToken), address(this), expectedPaymentAmount); + + // // exercise options tokens + // DiscountExerciseParams memory params = + // DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: deadline, isInstantExit: false}); + // if (amount != 0) { + // vm.expectRevert(DiscountExercise.Exercise__PastDeadline.selector); + // } + // optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); + // } + + function test_modeExerciseNotOToken(uint256 amount, address recipient) public { + amount = bound(amount, 0, MAX_SUPPLY); + + // mint options tokens + vm.prank(tokenAdmin); + optionsToken.mint(address(this), amount); + + uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); + deal(address(paymentToken), address(this), expectedPaymentAmount); + + // exercise options tokens which should fail + DiscountExerciseParams memory params = + DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: false}); + vm.expectRevert(BaseExercise.Exercise__NotOToken.selector); + exerciser.exercise(address(this), amount, recipient, abi.encode(params)); + } + + function test_modeExerciseNotExerciseContract(uint256 amount, address recipient) public { + amount = bound(amount, 1, MAX_SUPPLY); + + // mint options tokens + vm.prank(tokenAdmin); + optionsToken.mint(address(this), amount); + + // set option inactive + vm.prank(owner); + optionsToken.setExerciseContract(address(exerciser), false); + + // mint payment tokens + uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); + deal(address(paymentToken), address(this), expectedPaymentAmount); + + // exercise options tokens which should fail + DiscountExerciseParams memory params = + DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: false}); + vm.expectRevert(OptionsToken.OptionsToken__NotExerciseContract.selector); + optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); + } +} diff --git a/test/ItOpOptionsToken.t copy.sol b/test/ItOpOptionsToken.t copy.sol new file mode 100644 index 0000000..3d93c04 --- /dev/null +++ b/test/ItOpOptionsToken.t copy.sol @@ -0,0 +1,413 @@ +// SPDX-License-Identifier: AGPL-3.0 +pragma solidity ^0.8.13; + +import "forge-std/Test.sol"; + +import {FixedPointMathLib} from "solmate/utils/FixedPointMathLib.sol"; +import {IERC20} from "oz/token/ERC20/IERC20.sol"; +import {ERC1967Proxy} from "oz/proxy/ERC1967/ERC1967Proxy.sol"; + +import {OptionsToken} from "../src/OptionsToken.sol"; +import {DiscountExerciseParams, DiscountExercise, BaseExercise} from "../src/exercise/DiscountExercise.sol"; +// import {SwapProps, ExchangeType} from "../src/helpers/SwapHelper.sol"; +import {TestERC20} from "./mocks/TestERC20.sol"; +import {ThenaOracle} from "../src/oracles/ThenaOracle.sol"; +import {MockBalancerTwapOracle} from "./mocks/MockBalancerTwapOracle.sol"; + +import {ReaperSwapper, MinAmountOutData, MinAmountOutKind, IVeloRouter, ISwapRouter, UniV3SwapData} from "vault-v2/ReaperSwapper.sol"; + +import "./Common.sol"; + +contract OpOptionsTokenTest is Test, Common { + using FixedPointMathLib for uint256; + + uint256 constant FORK_BLOCK = 121377470; + string MAINNET_URL = vm.envString("OPTIMISM_RPC_URL"); + + uint16 constant PRICE_MULTIPLIER = 5000; // 0.5 + uint56 constant ORACLE_SECS = 30 minutes; + uint56 constant ORACLE_AGO = 2 minutes; + uint128 constant ORACLE_MIN_PRICE = 1e17; + uint56 constant ORACLE_LARGEST_SAFETY_WINDOW = 24 hours; + uint256 constant ORACLE_INIT_TWAP_VALUE = 1e19; + uint128 constant ORACLE_MIN_PRICE_DENOM = 10000; + + uint256 constant MAX_SUPPLY = 1e27; // the max supply of the options token & the underlying token + uint256 constant INSTANT_EXIT_FEE = 500; + + address[] feeRecipients_; + uint256[] feeBPS_; + + ThenaOracle oracle; + MockBalancerTwapOracle balancerTwapOracle; + + // function fixture_getSwapProps(ExchangeType exchangeType, uint256 slippage) public view returns (SwapProps memory) { + // SwapProps memory swapProps; + + // if (exchangeType == ExchangeType.ThenaRam) { + // swapProps = SwapProps(address(reaperSwapper), BSC_THENA_ROUTER, ExchangeType.ThenaRam, slippage); + // } else if (exchangeType == ExchangeType.UniV3) { + // swapProps = SwapProps(address(reaperSwapper), BSC_UNIV3_ROUTERV2, ExchangeType.UniV3, slippage); + // } else { + // // revert + // } + // return swapProps; + // } + + // function fixture_updateSwapperPaths(ExchangeType exchangeType) public { + // address[2] memory paths = [address(underlyingToken), address(paymentToken)]; + + // if (exchangeType == ExchangeType.ThenaRam) { + // /* Configure thena ram like dexes */ + // IThenaRamRouter.route[] memory thenaPath = new IThenaRamRouter.route[](1); + // thenaPath[0] = IThenaRamRouter.route(paths[0], paths[1], false); + // reaperSwapper.updateThenaRamSwapPath(paths[0], paths[1], address(BSC_THENA_ROUTER), thenaPath); + // thenaPath[0] = IThenaRamRouter.route(paths[1], paths[0], false); + // reaperSwapper.updateThenaRamSwapPath(paths[1], paths[0], address(BSC_THENA_ROUTER), thenaPath); + // } else if (exchangeType == ExchangeType.UniV3) { + // /* Configure univ3 like dexes */ + // uint24[] memory univ3Fees = new uint24[](1); + // univ3Fees[0] = 500; + // address[] memory univ3Path = new address[](2); + + // univ3Path[0] = paths[0]; + // univ3Path[1] = paths[1]; + // UniV3SwapData memory swapPathAndFees = UniV3SwapData(univ3Path, univ3Fees); + // reaperSwapper.updateUniV3SwapPath(paths[0], paths[1], address(BSC_UNIV3_ROUTERV2), swapPathAndFees); + // } else { + // // revert + // } + // } + + function setUp() public { + /* Common assignments */ + ExchangeType exchangeType = ExchangeType.VeloSolid; + nativeToken = IERC20(OP_WETH); + paymentToken = nativeToken; + underlyingToken = IERC20(OP_OATHV2); + wantToken = IERC20(OP_OP); + paymentUnderlyingBpt = OP_OATHV2_ETH_BPT; + paymentWantBpt = OP_WETH_OP_USDC_BPT; + balancerVault = OP_BEETX_VAULT; + swapRouter = ISwapRouter(OP_BEETX_VAULT); + univ3Factory = IUniswapV3Factory(OP_UNIV3_FACTORY); + veloRouter = IVeloRouter(OP_VELO_ROUTER); + + /* Setup network */ + uint256 fork = vm.createFork(MAINNET_URL, FORK_BLOCK); + vm.selectFork(fork); + + // set up accounts + owner = makeAddr("owner"); + tokenAdmin = makeAddr("tokenAdmin"); + + feeRecipients_ = new address[](2); + feeRecipients_[0] = makeAddr("feeRecipient"); + feeRecipients_[1] = makeAddr("feeRecipient2"); + + feeBPS_ = new uint256[](2); + feeBPS_[0] = 1000; // 10% + feeBPS_[1] = 9000; // 90% + + address implementation = address(new OptionsToken()); + ERC1967Proxy proxy = new ERC1967Proxy(implementation, ""); + optionsToken = OptionsToken(address(proxy)); + optionsToken.initialize("TIT Call Option Token", "oTIT", tokenAdmin); + optionsToken.transferOwnership(owner); + + /* Reaper deployment and configuration */ + address[] memory strategists = new address[](1); + strategists[0] = makeAddr("strategist"); + reaperSwapper = new ReaperSwapper(); + ERC1967Proxy tmpProxy = new ERC1967Proxy(address(reaperSwapper), ""); + reaperSwapper = ReaperSwapper(address(tmpProxy)); + reaperSwapper.initialize(strategists, address(this), address(this)); + + fixture_updateSwapperPaths(ExchangeType.VeloSolid); + + SwapProps memory swapProps = fixture_getSwapProps(ExchangeType.VeloSolid, 200); + + address[] memory tokens = new address[](2); + tokens[0] = address(paymentToken); + tokens[1] = address(underlyingToken); + + balancerTwapOracle = new MockBalancerTwapOracle(tokens); + console.log(tokens[0], tokens[1]); + oracle = new ThenaOracle(IThenaPair(OP_VELO_OATHV2_ETH_PAIR), address(underlyingToken), owner, ORACLE_SECS, ORACLE_MIN_PRICE_DENOM); + exerciser = new DiscountExercise( + optionsToken, + owner, + IERC20(address(paymentToken)), + underlyingToken, + oracle, + PRICE_MULTIPLIER, + INSTANT_EXIT_FEE, + feeRecipients_, + feeBPS_, + swapProps + ); + deal(address(underlyingToken), address(exerciser), 1e20 ether); + + // add exerciser to the list of options + vm.startPrank(owner); + optionsToken.setExerciseContract(address(exerciser), true); + vm.stopPrank(); + + // set up contracts + balancerTwapOracle.setTwapValue(ORACLE_INIT_TWAP_VALUE); + paymentToken.approve(address(exerciser), type(uint256).max); + } + + function test_opRedeemPositiveScenario(uint256 amount, address recipient) public { + amount = bound(amount, 100, MAX_SUPPLY); + vm.assume(recipient != address(0)); + + // mint options tokens + vm.prank(tokenAdmin); + optionsToken.mint(address(this), amount); + + // mint payment tokens + uint256 expectedPaymentAmount = amount.mulWadUp(oracle.getPrice().mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); + deal(address(paymentToken), address(this), expectedPaymentAmount); + + // exercise options tokens + DiscountExerciseParams memory params = + DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: false}); + (uint256 paymentAmount,,,) = optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); + + // verify options tokens were transferred + assertEqDecimal(optionsToken.balanceOf(address(this)), 0, 18, "user still has options tokens"); + assertEqDecimal(optionsToken.totalSupply(), 0, 18, "option tokens not burned"); + + // verify payment tokens were transferred + assertEqDecimal(paymentToken.balanceOf(address(this)), 0, 18, "user still has payment tokens"); + uint256 paymentFee1 = expectedPaymentAmount.mulDivDown(feeBPS_[0], 10000); + uint256 paymentFee2 = expectedPaymentAmount - paymentFee1; + assertEqDecimal(paymentToken.balanceOf(feeRecipients_[0]), paymentFee1, 18, "fee recipient 1 didn't receive payment tokens"); + assertEqDecimal(paymentToken.balanceOf(feeRecipients_[1]), paymentFee2, 18, "fee recipient 2 didn't receive payment tokens"); + assertEqDecimal(expectedPaymentAmount, paymentAmount, 18, "exercise returned wrong value"); + } + + function test_opZapPositiveScenario(uint256 amount, address recipient) public { + amount = bound(amount, 1e10, 1e18 - 1); + vm.assume(recipient != address(0)); + + // mint options tokens + vm.prank(tokenAdmin); + optionsToken.mint(address(this), amount); + + // mint payment tokens + uint256 expectedPaymentAmount = amount.mulWadUp(oracle.getPrice().mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); + uint256 discountedUnderlying = amount.mulDivUp(PRICE_MULTIPLIER, 10_000); + uint256 expectedUnderlyingAmount = discountedUnderlying - discountedUnderlying.mulDivUp(INSTANT_EXIT_FEE, 10_000); + deal(address(paymentToken), address(this), expectedPaymentAmount); + + console.log("discountedUnderlying:", discountedUnderlying); + console.log("expectedUnderlyingAmount:", expectedUnderlyingAmount); + + // Calculate total fee from zapping + uint256 calcPaymentAmount = exerciser.getPaymentAmount(amount); + uint256 totalFee = calcPaymentAmount.mulDivUp(INSTANT_EXIT_FEE, 10_000); + + vm.prank(owner); + exerciser.setMinAmountToTriggerSwap(totalFee + 1); + + // exercise options tokens + DiscountExerciseParams memory params = + DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: true}); + (uint256 paymentAmount,,,) = optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); + console.log("Exercise 1"); + assertEqDecimal(optionsToken.balanceOf(address(this)), 0, 18, "user still has options tokens"); + assertEqDecimal(optionsToken.totalSupply(), 0, 18, "option tokens not burned"); + + // verify payment tokens were not transferred + assertEq(paymentToken.balanceOf(address(this)), expectedPaymentAmount, "user lost payment tokens during instant exit"); + //verify whether distributions not happened + assertEq(IERC20(paymentToken).balanceOf(feeRecipients_[0]), 0, "fee recipient 1 received payment tokens but shouldn't"); + assertEq(IERC20(paymentToken).balanceOf(feeRecipients_[1]), 0, "fee recipient 2 received payment tokens but shouldn't"); + assertEqDecimal(paymentAmount, 0, 18, "exercise returned wrong value"); + uint256 balanceAfterFirstExercise = underlyingToken.balanceOf(recipient); + assertApproxEqAbs(balanceAfterFirstExercise, expectedUnderlyingAmount, 1, "Recipient got wrong amount of underlying token"); + + /*---------- Second call -----------*/ + amount = bound(amount, 1e18, 1e24); + // mint options tokens + vm.prank(tokenAdmin); + optionsToken.mint(address(this), amount); + + // mint payment tokens + expectedPaymentAmount = amount.mulWadUp(oracle.getPrice().mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); + discountedUnderlying = amount.mulDivUp(PRICE_MULTIPLIER, 10_000); + expectedUnderlyingAmount = discountedUnderlying - discountedUnderlying.mulDivUp(INSTANT_EXIT_FEE, 10_000); + deal(address(paymentToken), address(this), expectedPaymentAmount); + + (paymentAmount,,,) = optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); + + // verify options tokens were transferred + console.log("Exercise 2"); + assertEqDecimal(optionsToken.balanceOf(address(this)), 0, 18, "user still has options tokens"); + assertEqDecimal(optionsToken.totalSupply(), 0, 18, "option tokens not burned"); + + // verify payment tokens were not transferred + assertEq(paymentToken.balanceOf(address(this)), expectedPaymentAmount, "user lost payment tokens during instant exit"); + + // verify fee is distributed + calcPaymentAmount = exerciser.getPaymentAmount(amount); + totalFee += calcPaymentAmount.mulDivUp(INSTANT_EXIT_FEE, 10_000); + uint256 fee1 = totalFee.mulDivDown(feeBPS_[0], 10_000); + uint256 fee2 = totalFee - fee1; + console.log("paymentFee1: ", fee1); + console.log("paymentFee2: ", fee2); + assertApproxEqRel(IERC20(paymentToken).balanceOf(feeRecipients_[0]), fee1, 5e16, "fee recipient 1 didn't receive payment tokens"); + assertApproxEqRel(IERC20(paymentToken).balanceOf(feeRecipients_[1]), fee2, 5e16, "fee recipient 2 didn't receive payment tokens"); + assertEqDecimal(paymentAmount, 0, 18, "exercise returned wrong value"); + assertApproxEqAbs( + underlyingToken.balanceOf(recipient) + balanceAfterFirstExercise, + expectedUnderlyingAmount, + 1, + "Recipient got wrong amount of underlying token" + ); + } + + function test_opExerciseMinPrice(uint256 amount, address recipient) public { + amount = bound(amount, 1, MAX_SUPPLY); + vm.assume(recipient != address(0)); + + // mint options tokens + vm.prank(tokenAdmin); + optionsToken.mint(address(this), amount); + + // set TWAP value such that the strike price is below the oracle's minPrice value + balancerTwapOracle.setTwapValue(ORACLE_MIN_PRICE - 1); + + // mint payment tokens + uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_MIN_PRICE); + deal(address(paymentToken), address(this), expectedPaymentAmount); + + // exercise options tokens + DiscountExerciseParams memory params = + DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: false}); + vm.expectRevert(bytes4(keccak256("ThenaOracle__BelowMinPrice()"))); + optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); + } + + // function test_priceMultiplier(uint256 amount, uint256 multiplier) public { + // amount = bound(amount, 1, MAX_SUPPLY / 2); + + // vm.prank(owner); + // exerciser.setMultiplier(10000); // full price + + // // mint options tokens + // vm.prank(tokenAdmin); + // optionsToken.mint(address(this), amount * 2); + + // // mint payment tokens + // uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_INIT_TWAP_VALUE); + // deal(address(paymentToken), address(this), expectedPaymentAmount); + + // // exercise options tokens + // DiscountExerciseParams memory params = + // DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: false}); + // (uint256 paidAmount,,,) = optionsToken.exercise(amount, address(this), address(exerciser), abi.encode(params)); + + // // update multiplier + // multiplier = bound(multiplier, 1000, 20000); + // vm.prank(owner); + // exerciser.setMultiplier(multiplier); + + // // exercise options tokens + // uint256 newPrice = oracle.getPrice().mulDivUp(multiplier, 10000); + // uint256 newExpectedPaymentAmount = amount.mulWadUp(newPrice); + // params.maxPaymentAmount = newExpectedPaymentAmount; + + // deal(address(paymentToken), address(this), newExpectedPaymentAmount); + // (uint256 newPaidAmount,,,) = optionsToken.exercise(amount, address(this), address(exerciser), abi.encode(params)); + // // verify payment tokens were transferred + // assertEqDecimal(paymentToken.balanceOf(address(this)), 0, 18, "user still has payment tokens"); + // assertEq(newPaidAmount, paidAmount.mulDivUp(multiplier, 10000), "incorrect discount"); + // } + + // function test_exerciseTwapOracleNotReady(uint256 amount, address recipient) public { + // amount = bound(amount, 1, MAX_SUPPLY); + + // // mint options tokens + // vm.prank(tokenAdmin); + // optionsToken.mint(address(this), amount); + + // // mint payment tokens + // uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); + // deal(address(paymentToken), address(this), expectedPaymentAmount); + + // // update oracle params + // // such that the TWAP window becomes (block.timestamp - ORACLE_LARGEST_SAFETY_WINDOW - ORACLE_SECS, block.timestamp - ORACLE_LARGEST_SAFETY_WINDOW] + // // which is outside of the largest safety window + // // vm.prank(owner); + // // oracle.setParams(ORACLE_SECS, ORACLE_LARGEST_SAFETY_WINDOW, ORACLE_MIN_PRICE); + + // // exercise options tokens which should fail + // DiscountExerciseParams memory params = + // DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: false}); + // vm.expectRevert(ThenaOracle.ThenaOracle__TWAPOracleNotReady.selector); + // optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); + // } + + // function test_exercisePastDeadline(uint256 amount, address recipient, uint256 deadline) public { + // amount = bound(amount, 0, MAX_SUPPLY); + // deadline = bound(deadline, 0, block.timestamp - 1); + + // // mint options tokens + // vm.prank(tokenAdmin); + // optionsToken.mint(address(this), amount); + + // // mint payment tokens + // uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); + // deal(address(paymentToken), address(this), expectedPaymentAmount); + + // // exercise options tokens + // DiscountExerciseParams memory params = + // DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: deadline, isInstantExit: false}); + // if (amount != 0) { + // vm.expectRevert(DiscountExercise.Exercise__PastDeadline.selector); + // } + // optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); + // } + + function test_exerciseNotOToken(uint256 amount, address recipient) public { + amount = bound(amount, 0, MAX_SUPPLY); + + // mint options tokens + vm.prank(tokenAdmin); + optionsToken.mint(address(this), amount); + + uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); + deal(address(paymentToken), address(this), expectedPaymentAmount); + + // exercise options tokens which should fail + DiscountExerciseParams memory params = + DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: false}); + vm.expectRevert(BaseExercise.Exercise__NotOToken.selector); + exerciser.exercise(address(this), amount, recipient, abi.encode(params)); + } + + function test_exerciseNotExerciseContract(uint256 amount, address recipient) public { + amount = bound(amount, 1, MAX_SUPPLY); + + // mint options tokens + vm.prank(tokenAdmin); + optionsToken.mint(address(this), amount); + + // set option inactive + vm.prank(owner); + optionsToken.setExerciseContract(address(exerciser), false); + + // mint payment tokens + uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); + deal(address(paymentToken), address(this), expectedPaymentAmount); + + // exercise options tokens which should fail + DiscountExerciseParams memory params = + DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: false}); + vm.expectRevert(OptionsToken.OptionsToken__NotExerciseContract.selector); + optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); + } +} diff --git a/test/OptionsToken.t.sol b/test/OptionsToken.t.sol index 76edb83..5f72a23 100644 --- a/test/OptionsToken.t.sol +++ b/test/OptionsToken.t.sol @@ -8,11 +8,14 @@ import {IERC20} from "oz/token/ERC20/IERC20.sol"; import {ERC1967Proxy} from "oz/proxy/ERC1967/ERC1967Proxy.sol"; import {OptionsToken} from "../src/OptionsToken.sol"; -import {DiscountExerciseParams, DiscountExercise, BaseExercise} from "../src/exercise/DiscountExercise.sol"; +import {DiscountExerciseParams, DiscountExercise, BaseExercise, SwapProps, ExchangeType} from "../src/exercise/DiscountExercise.sol"; import {TestERC20} from "./mocks/TestERC20.sol"; +import {IOracle} from "../src/interfaces/IOracle.sol"; import {BalancerOracle} from "../src/oracles/BalancerOracle.sol"; import {MockBalancerTwapOracle} from "./mocks/MockBalancerTwapOracle.sol"; +import {ReaperSwapperMock} from "./mocks/ReaperSwapperMock.sol"; + contract OptionsTokenTest is Test { using FixedPointMathLib for uint256; @@ -33,10 +36,11 @@ contract OptionsTokenTest is Test { OptionsToken optionsToken; DiscountExercise exerciser; - BalancerOracle oracle; + IOracle oracle; MockBalancerTwapOracle balancerTwapOracle; TestERC20 paymentToken; address underlyingToken; + ReaperSwapperMock reaperSwapper; function setUp() public { // set up accounts @@ -61,16 +65,37 @@ contract OptionsTokenTest is Test { optionsToken.initialize("TIT Call Option Token", "oTIT", tokenAdmin); optionsToken.transferOwnership(owner); + /* Reaper deployment and configuration */ + + uint256 slippage = 500; // 5% + address[] memory tokens = new address[](2); tokens[0] = address(paymentToken); tokens[1] = underlyingToken; balancerTwapOracle = new MockBalancerTwapOracle(tokens); console.log(tokens[0], tokens[1]); - oracle = new BalancerOracle(balancerTwapOracle, underlyingToken, owner, ORACLE_SECS, ORACLE_AGO, ORACLE_MIN_PRICE); - exerciser = - new DiscountExercise(optionsToken, owner, IERC20(address(paymentToken)), IERC20(underlyingToken), oracle, PRICE_MULTIPLIER, INSTANT_EXIT_FEE, feeRecipients_, feeBPS_); - TestERC20(underlyingToken).mint(address(exerciser), 1e20 ether); + oracle = IOracle(new BalancerOracle(balancerTwapOracle, underlyingToken, owner, ORACLE_SECS, ORACLE_AGO, ORACLE_MIN_PRICE)); + + reaperSwapper = new ReaperSwapperMock(oracle, address(underlyingToken), address(paymentToken)); + deal(underlyingToken, address(reaperSwapper), 1e27); + deal(address(paymentToken), address(reaperSwapper), 1e27); + + SwapProps memory swapProps = SwapProps(address(reaperSwapper), address(reaperSwapper), ExchangeType.Bal, slippage); + + exerciser = new DiscountExercise( + optionsToken, + owner, + IERC20(address(paymentToken)), + IERC20(underlyingToken), + oracle, + PRICE_MULTIPLIER, + INSTANT_EXIT_FEE, + feeRecipients_, + feeBPS_, + swapProps + ); + deal(underlyingToken, address(exerciser), 1e27); // add exerciser to the list of options vm.startPrank(owner); @@ -101,17 +126,19 @@ contract OptionsTokenTest is Test { function test_discountExerciseHappyPath(uint256 amount, address recipient) public { amount = bound(amount, 100, MAX_SUPPLY); + vm.assume(recipient != address(0)); // mint options tokens vm.prank(tokenAdmin); optionsToken.mint(address(this), amount); // mint payment tokens - uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); - paymentToken.mint(address(this), expectedPaymentAmount); + uint256 expectedPaymentAmount = amount.mulWadUp(oracle.getPrice().mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); + deal(address(paymentToken), address(this), expectedPaymentAmount); // exercise options tokens - DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: false}); + DiscountExerciseParams memory params = + DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: false}); (uint256 paymentAmount,,,) = optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); // verify options tokens were transferred @@ -124,11 +151,15 @@ contract OptionsTokenTest is Test { uint256 paymentFee2 = expectedPaymentAmount - paymentFee1; assertEqDecimal(paymentToken.balanceOf(feeRecipients_[0]), paymentFee1, 18, "fee recipient 1 didn't receive payment tokens"); assertEqDecimal(paymentToken.balanceOf(feeRecipients_[1]), paymentFee2, 18, "fee recipient 2 didn't receive payment tokens"); - assertEqDecimal(paymentAmount, expectedPaymentAmount, 18, "exercise returned wrong value"); + assertEqDecimal(expectedPaymentAmount, paymentAmount, 18, "exercise returned wrong value"); } function test_instantExitExerciseHappyPath(uint256 amount, address recipient) public { - amount = bound(amount, 10_000, MAX_SUPPLY); + amount = bound(amount, 1e16, 1e22); + vm.assume( + recipient != address(0) && recipient != feeRecipients_[0] && recipient != feeRecipients_[1] && recipient != address(this) + && recipient != address(optionsToken) && recipient != address(exerciser) + ); // mint options tokens vm.prank(tokenAdmin); @@ -137,13 +168,14 @@ contract OptionsTokenTest is Test { // mint payment tokens uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); uint256 discountedUnderlying = amount.mulDivUp(PRICE_MULTIPLIER, 10_000); - uint256 expectedUnderlyingAmount = discountedUnderlying - amount.mulDivUp(INSTANT_EXIT_FEE, 10_000); - paymentToken.mint(address(this), expectedPaymentAmount); + uint256 expectedUnderlyingAmount = discountedUnderlying - discountedUnderlying.mulDivUp(INSTANT_EXIT_FEE, 10_000); + deal(address(paymentToken), address(this), expectedPaymentAmount); console.log("discountedUnderlying:", discountedUnderlying); console.log("expectedUnderlyingAmount:", expectedUnderlyingAmount); - + // exercise options tokens - DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: true}); + DiscountExerciseParams memory params = + DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: true}); (uint256 paymentAmount,,,) = optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); // verify options tokens were transferred @@ -152,19 +184,21 @@ contract OptionsTokenTest is Test { // verify payment tokens were transferred assertEq(paymentToken.balanceOf(address(this)), expectedPaymentAmount, "user lost payment tokens during instant exit"); - uint256 totalFee = amount.mulDivUp(INSTANT_EXIT_FEE, 10_000); + uint256 calcPaymentAmount = exerciser.getPaymentAmount(amount); + uint256 totalFee = calcPaymentAmount.mulDivUp(INSTANT_EXIT_FEE, 10_000); uint256 fee1 = totalFee.mulDivDown(feeBPS_[0], 10_000); uint256 fee2 = totalFee - fee1; console.log("paymentFee1: ", fee1); console.log("paymentFee2: ", fee2); - assertEqDecimal(IERC20(underlyingToken).balanceOf(feeRecipients_[0]), fee1, 18, "fee recipient 1 didn't receive payment tokens"); - assertEqDecimal(IERC20(underlyingToken).balanceOf(feeRecipients_[1]), fee2, 18, "fee recipient 2 didn't receive payment tokens"); + assertApproxEqRel(paymentToken.balanceOf(feeRecipients_[0]), fee1, 10e16, "fee recipient 1 didn't receive payment tokens"); + assertApproxEqRel(paymentToken.balanceOf(feeRecipients_[1]), fee2, 10e16, "fee recipient 2 didn't receive payment tokens"); assertEqDecimal(paymentAmount, 0, 18, "exercise returned wrong value"); - // assertEq(expectedUnderlyingAmount, IERC20(underlyingToken).balanceOf(recipient), "Recipient got wrong amount of underlying token"); + assertApproxEqAbs(IERC20(underlyingToken).balanceOf(recipient), expectedUnderlyingAmount, 1, "Recipient got wrong amount of underlying token"); } function test_exerciseMinPrice(uint256 amount, address recipient) public { amount = bound(amount, 1, MAX_SUPPLY); + vm.assume(recipient != address(0)); // mint options tokens vm.prank(tokenAdmin); @@ -175,10 +209,11 @@ contract OptionsTokenTest is Test { // mint payment tokens uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_MIN_PRICE); - paymentToken.mint(address(this), expectedPaymentAmount); + deal(address(paymentToken), address(this), expectedPaymentAmount); // exercise options tokens - DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: false}); + DiscountExerciseParams memory params = + DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: false}); vm.expectRevert(bytes4(keccak256("BalancerOracle__BelowMinPrice()"))); optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); } @@ -195,10 +230,11 @@ contract OptionsTokenTest is Test { // mint payment tokens uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_INIT_TWAP_VALUE); - paymentToken.mint(address(this), expectedPaymentAmount); + deal(address(paymentToken), address(this), expectedPaymentAmount); // exercise options tokens - DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: false}); + DiscountExerciseParams memory params = + DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: false}); (uint256 paidAmount,,,) = optionsToken.exercise(amount, address(this), address(exerciser), abi.encode(params)); // update multiplier @@ -211,7 +247,7 @@ contract OptionsTokenTest is Test { uint256 newExpectedPaymentAmount = amount.mulWadUp(newPrice); params.maxPaymentAmount = newExpectedPaymentAmount; - paymentToken.mint(address(this), newExpectedPaymentAmount); + deal(address(paymentToken), address(this), newExpectedPaymentAmount); (uint256 newPaidAmount,,,) = optionsToken.exercise(amount, address(this), address(exerciser), abi.encode(params)); // verify payment tokens were transferred assertEqDecimal(paymentToken.balanceOf(address(this)), 0, 18, "user still has payment tokens"); @@ -220,6 +256,7 @@ contract OptionsTokenTest is Test { function test_exerciseHighSlippage(uint256 amount, address recipient) public { amount = bound(amount, 1, MAX_SUPPLY); + vm.assume(recipient != address(0)); // mint options tokens vm.prank(tokenAdmin); @@ -227,36 +264,38 @@ contract OptionsTokenTest is Test { // mint payment tokens uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); - paymentToken.mint(address(this), expectedPaymentAmount); + deal(address(paymentToken), address(this), expectedPaymentAmount); // exercise options tokens which should fail - DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount - 1, deadline: type(uint256).max, isInstantExit: false}); + DiscountExerciseParams memory params = + DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount - 1, deadline: type(uint256).max, isInstantExit: false}); vm.expectRevert(DiscountExercise.Exercise__SlippageTooHigh.selector); optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); } - function test_exerciseTwapOracleNotReady(uint256 amount, address recipient) public { - amount = bound(amount, 1, MAX_SUPPLY); + // function test_exerciseTwapOracleNotReady(uint256 amount, address recipient) public { + // amount = bound(amount, 1, MAX_SUPPLY); - // mint options tokens - vm.prank(tokenAdmin); - optionsToken.mint(address(this), amount); + // // mint options tokens + // vm.prank(tokenAdmin); + // optionsToken.mint(address(this), amount); - // mint payment tokens - uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); - paymentToken.mint(address(this), expectedPaymentAmount); + // // mint payment tokens + // uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); + // deal(address(paymentToken), address(this), expectedPaymentAmount); - // update oracle params - // such that the TWAP window becomes (block.timestamp - ORACLE_LARGEST_SAFETY_WINDOW - ORACLE_SECS, block.timestamp - ORACLE_LARGEST_SAFETY_WINDOW] - // which is outside of the largest safety window - vm.prank(owner); - oracle.setParams(ORACLE_SECS, ORACLE_LARGEST_SAFETY_WINDOW, ORACLE_MIN_PRICE); + // // update oracle params + // // such that the TWAP window becomes (block.timestamp - ORACLE_LARGEST_SAFETY_WINDOW - ORACLE_SECS, block.timestamp - ORACLE_LARGEST_SAFETY_WINDOW] + // // which is outside of the largest safety window + // // vm.prank(owner); + // // oracle.setParams(ORACLE_SECS, ORACLE_LARGEST_SAFETY_WINDOW, ORACLE_MIN_PRICE); - // exercise options tokens which should fail - DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: false}); - vm.expectRevert(BalancerOracle.BalancerOracle__TWAPOracleNotReady.selector); - optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); - } + // // exercise options tokens which should fail + // DiscountExerciseParams memory params = + // DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: false}); + // vm.expectRevert(ThenaOracle.ThenaOracle__TWAPOracleNotReady.selector); + // optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); + // } function test_exercisePastDeadline(uint256 amount, address recipient, uint256 deadline) public { amount = bound(amount, 0, MAX_SUPPLY); @@ -268,10 +307,11 @@ contract OptionsTokenTest is Test { // mint payment tokens uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); - paymentToken.mint(address(this), expectedPaymentAmount); + deal(address(paymentToken), address(this), expectedPaymentAmount); // exercise options tokens - DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: deadline, isInstantExit: false}); + DiscountExerciseParams memory params = + DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: deadline, isInstantExit: false}); if (amount != 0) { vm.expectRevert(DiscountExercise.Exercise__PastDeadline.selector); } @@ -286,10 +326,11 @@ contract OptionsTokenTest is Test { optionsToken.mint(address(this), amount); uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); - paymentToken.mint(address(this), expectedPaymentAmount); + deal(address(paymentToken), address(this), expectedPaymentAmount); // exercise options tokens which should fail - DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: false}); + DiscountExerciseParams memory params = + DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: false}); vm.expectRevert(BaseExercise.Exercise__NotOToken.selector); exerciser.exercise(address(this), amount, recipient, abi.encode(params)); } @@ -307,10 +348,11 @@ contract OptionsTokenTest is Test { // mint payment tokens uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); - paymentToken.mint(address(this), expectedPaymentAmount); + deal(address(paymentToken), address(this), expectedPaymentAmount); // exercise options tokens which should fail - DiscountExerciseParams memory params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: false}); + DiscountExerciseParams memory params = + DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: false}); vm.expectRevert(OptionsToken.OptionsToken__NotExerciseContract.selector); optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); } diff --git a/test/mocks/ReaperSwapperMock.sol b/test/mocks/ReaperSwapperMock.sol new file mode 100644 index 0000000..2afa2f7 --- /dev/null +++ b/test/mocks/ReaperSwapperMock.sol @@ -0,0 +1,71 @@ +//SPDX-License-Identifier: AGPL-3.0 +pragma solidity ^0.8.0; + +import {IOracle} from "../../src/interfaces/IOracle.sol"; + +import {ISwapperSwaps, MinAmountOutData, MinAmountOutKind} from "vault-v2/ReaperSwapper.sol"; +import {IERC20} from "oz/token/ERC20/IERC20.sol"; +import {FixedPointMathLib} from "solmate/utils/FixedPointMathLib.sol"; + +import "forge-std/console.sol"; + +contract ReaperSwapperMock { + using FixedPointMathLib for uint256; + + IOracle oracle; + address underlyingToken; + address paymentToken; + + constructor(IOracle _oracle, address _underlyingToken, address _paymentToken) { + oracle = _oracle; + underlyingToken = _underlyingToken; + paymentToken = _paymentToken; + } + + function swapUniV2(address tokenIn, address tokenOut, uint256 amount, MinAmountOutData memory minAmountOutData, address exchangeAddress) + public + returns (uint256) + { + console.log("Called Univ2"); + return _swap(tokenIn, tokenOut, amount, minAmountOutData, exchangeAddress); + } + + function swapBal(address tokenIn, address tokenOut, uint256 amount, MinAmountOutData memory minAmountOutData, address exchangeAddress) + public + returns (uint256) + { + console.log("Called Bal"); + return _swap(tokenIn, tokenOut, amount, minAmountOutData, exchangeAddress); + } + + function swapVelo(address tokenIn, address tokenOut, uint256 amount, MinAmountOutData memory minAmountOutData, address exchangeAddress) + public + returns (uint256) + { + console.log("Called Velo"); + return _swap(tokenIn, tokenOut, amount, minAmountOutData, exchangeAddress); + } + + function swapUniV3(address tokenIn, address tokenOut, uint256 amount, MinAmountOutData memory minAmountOutData, address exchangeAddress) + public + returns (uint256) + { + console.log("Called Univ3"); + return _swap(tokenIn, tokenOut, amount, minAmountOutData, exchangeAddress); + } + + function _swap(address tokenIn, address tokenOut, uint256 amount, MinAmountOutData memory minAmountOutData, address exchangeAddress) + private + returns (uint256) + { + (address oraclePaymentToken, address oracleUnderlyingToken) = oracle.getTokens(); + require(tokenIn == address(oracleUnderlyingToken) || tokenIn == address(oraclePaymentToken), "Not allowed token in"); + require(tokenOut == address(oracleUnderlyingToken) || tokenOut == address(oraclePaymentToken), "Not allowed token"); + IERC20(tokenIn).transferFrom(msg.sender, address(this), amount); + console.log("Price from oracle is: %e", oracle.getPrice()); + uint256 amountToSend = (oracleUnderlyingToken == tokenIn) ? amount.mulWadUp(oracle.getPrice()) : (amount * 1e18) / oracle.getPrice(); + console.log("Amount to send is : %e", amountToSend); + IERC20(tokenOut).transfer(msg.sender, amountToSend); + return amountToSend; + } +} From b7e5e4c5aa2c0b6edee727578ae7fe4348f4b9c5 Mon Sep 17 00:00:00 2001 From: xRave110 Date: Thu, 20 Jun 2024 06:20:09 +0200 Subject: [PATCH 49/64] Comments and refactor --- hardhat.config.ts | 40 ++++++++++++++++++++++++------- src/exercise/BaseExercise.sol | 4 ++-- src/exercise/DiscountExercise.sol | 26 ++++++++++++-------- 3 files changed, 49 insertions(+), 21 deletions(-) diff --git a/hardhat.config.ts b/hardhat.config.ts index b7c2f29..f5f1364 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -9,16 +9,22 @@ import { subtask } from "hardhat/config"; import { config as dotenvConfig } from "dotenv"; +// import "@nomiclabs/hardhat-ethers"; +import "@nomicfoundation/hardhat-verify"; + dotenvConfig(); const PRIVATE_KEY = process.env.PRIVATE_KEY || ""; const config: HardhatUserConfig = { solidity: { - version: "0.8.19", - settings: { - optimizer: { enabled: true, runs: 9999 } - } + version: "0.8.20", + // settings: { + // optimizer: { enabled: true, runs: 200 } + // } + }, + sourcify: { + enabled: true }, paths: { sources: "./src", @@ -35,12 +41,28 @@ const config: HardhatUserConfig = { chainId: 56, accounts: [`0x${PRIVATE_KEY}`], }, + mode: { + url: "https://mainnet.mode.network/", + chainId: 34443, + accounts: [`0x${PRIVATE_KEY}`], + }, }, - etherscan: { - apiKey: { - bsc: process.env.ETHERSCAN_KEY || "", - } - }, + // etherscan: { + // apiKey: { + // bsc: process.env.ETHERSCAN_KEY || "", + // }, + // customChains: [ + // { + // network: "mode", + // chainId: 34443, + // urls: { + // apiURL: "https://explorer.mode.network", + // browserURL: "https://explorer.mode.network" + // } + // } + // ] + // }, + }; subtask(TASK_COMPILE_SOLIDITY_GET_SOURCE_PATHS).setAction(async (_, hre, runSuper) => { diff --git a/src/exercise/BaseExercise.sol b/src/exercise/BaseExercise.sol index 959ff94..9de0cc6 100644 --- a/src/exercise/BaseExercise.sol +++ b/src/exercise/BaseExercise.sol @@ -72,7 +72,7 @@ abstract contract BaseExercise is IExercise, Owned { /// @dev Sends the residual amount to the last fee recipient to avoid rounding errors function distributeFeesFrom(uint256 totalAmount, IERC20 token, address from) internal virtual { uint256 remaining = totalAmount; - for (uint256 i = 0; i < feeRecipients.length; i++) { + for (uint256 i = 0; i < feeRecipients.length - 1; i++) { uint256 feeAmount = totalAmount * feeBPS[i] / FEE_DENOMINATOR; token.safeTransferFrom(from, feeRecipients[i], feeAmount); remaining -= feeAmount; @@ -85,7 +85,7 @@ abstract contract BaseExercise is IExercise, Owned { /// @dev Sends the residual amount to the last fee recipient to avoid rounding errors function distributeFees(uint256 totalAmount, IERC20 token) internal virtual { uint256 remaining = totalAmount; - for (uint256 i = 0; i < feeRecipients.length; i++) { + for (uint256 i = 0; i < feeRecipients.length - 1; i++) { uint256 feeAmount = totalAmount * feeBPS[i] / FEE_DENOMINATOR; token.safeTransfer(feeRecipients[i], feeAmount); remaining -= feeAmount; diff --git a/src/exercise/DiscountExercise.sol b/src/exercise/DiscountExercise.sol index 95d2f45..5417f45 100644 --- a/src/exercise/DiscountExercise.sol +++ b/src/exercise/DiscountExercise.sol @@ -3,6 +3,7 @@ pragma solidity ^0.8.13; import {Owned} from "solmate/auth/Owned.sol"; import {IERC20} from "oz/token/ERC20/IERC20.sol"; +import {Pausable} from "oz/security/Pausable.sol"; import {SafeERC20} from "oz/token/ERC20/utils/SafeERC20.sol"; import {FixedPointMathLib} from "solmate/utils/FixedPointMathLib.sol"; @@ -25,7 +26,7 @@ struct DiscountExerciseParams { /// @notice Contract that allows the holder of options tokens to exercise them, /// in this case, by purchasing the underlying token at a discount to the market price. /// @dev Assumes the underlying token and the payment token both use 18 decimals. -contract DiscountExercise is BaseExercise, SwapHelper { +contract DiscountExercise is BaseExercise, SwapHelper, Pausable { /// Library usage using SafeERC20 for IERC20; using FixedPointMathLib for uint256; @@ -69,9 +70,14 @@ contract DiscountExercise is BaseExercise, SwapHelper { /// Used when the contract does not have enough tokens to pay the user mapping(address => uint256) public credit; + /// @notice The fee amount gathered in the contract to be swapped and distributed uint256 private feeAmount; + + /// @notice Minimal trigger to swap, if the trigger is not reached then feeAmount counts the ammount to swap and distribute uint256 public minAmountToTriggerSwap; - uint256 public redeemBonus; + + /// @notice configurable parameter that determines what is the fee for zap (instant exit) feature + uint256 public instantExitFee; constructor( OptionsToken oToken_, @@ -80,7 +86,7 @@ contract DiscountExercise is BaseExercise, SwapHelper { IERC20 underlyingToken_, IOracle oracle_, uint256 multiplier_, - uint256 redeemBonus_, + uint256 instantExitFee_, address[] memory feeRecipients_, uint256[] memory feeBPS_, SwapProps memory swapProps_ @@ -90,7 +96,7 @@ contract DiscountExercise is BaseExercise, SwapHelper { _setOracle(oracle_); _setMultiplier(multiplier_); - _setRedeemBonus(redeemBonus_); + _setInstantExitFee(instantExitFee_); emit SetOracle(oracle_); } @@ -157,15 +163,15 @@ contract DiscountExercise is BaseExercise, SwapHelper { emit SetMultiplier(multiplier_); } - function setRedeemBonus(uint256 _redeemBonus) external onlyOwner { - _setRedeemBonus(_redeemBonus); + function setInstantExitFee(uint256 _instantExitFee) external onlyOwner { + _setInstantExitFee(_instantExitFee); } - function _setRedeemBonus(uint256 _redeemBonus) internal { - if (_redeemBonus > BPS_DENOM) { + function _setInstantExitFee(uint256 _instantExitFee) internal { + if (_instantExitFee > BPS_DENOM) { revert Exercise__FeeGreaterThanMax(); } - redeemBonus = _redeemBonus; + instantExitFee = _instantExitFee; } function setMinAmountToTriggerSwap(uint256 _minAmountToTriggerSwap) external onlyOwner { @@ -181,7 +187,7 @@ contract DiscountExercise is BaseExercise, SwapHelper { if (block.timestamp > params.deadline) revert Exercise__PastDeadline(); uint256 discountedUnderlying = amount.mulDivUp(multiplier, BPS_DENOM); - uint256 fee = discountedUnderlying.mulDivUp(redeemBonus, BPS_DENOM); + uint256 fee = discountedUnderlying.mulDivUp(instantExitFee, BPS_DENOM); uint256 underlyingAmount = discountedUnderlying - fee; console.log("Discounted: %e \t fee: %e", discountedUnderlying, fee); From a6abd70a7e8cf19e34a3e6b653c324622f5497eb Mon Sep 17 00:00:00 2001 From: xRave110 Date: Sun, 23 Jun 2024 19:44:19 +0200 Subject: [PATCH 50/64] InstantExit working on optimism --- output.json | 228363 +++++++++++++++ src/exercise/BaseExercise.sol | 4 + src/exercise/DiscountExercise.sol | 28 +- src/helpers/SwapHelper.sol | 3 - test/Common.sol | 6 +- test/ItModeOptionsToken.t.sol | 16 +- ...oken.t copy.sol => ItOpOptionsToken.t.sol} | 118 +- test/OptionsToken.t.sol | 33 + 8 files changed, 228444 insertions(+), 127 deletions(-) create mode 100644 output.json rename test/{ItOpOptionsToken.t copy.sol => ItOpOptionsToken.t.sol} (73%) diff --git a/output.json b/output.json new file mode 100644 index 0000000..5a04500 --- /dev/null +++ b/output.json @@ -0,0 +1,228363 @@ +{ + "success": true, + "error": null, + "results": { + "detectors": [ + { + "elements": [ + { + "type": "function", + "name": "distributeFeesFrom", + "source_mapping": { + "start": 3017, + "length": 554, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BaseExercise", + "source_mapping": { + "start": 432, + "length": 3936, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "distributeFeesFrom(uint256,IERC20,address)" + } + }, + { + "type": "node", + "name": "token.safeTransferFrom(from,feeRecipients[i],feeAmount)", + "source_mapping": { + "start": 3306, + "length": 57, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 79 + ], + "starting_column": 13, + "ending_column": 70 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "distributeFeesFrom", + "source_mapping": { + "start": 3017, + "length": 554, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BaseExercise", + "source_mapping": { + "start": 432, + "length": 3936, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "distributeFeesFrom(uint256,IERC20,address)" + } + } + } + } + ], + "description": "BaseExercise.distributeFeesFrom(uint256,IERC20,address) (src/exercise/BaseExercise.sol#75-84) uses arbitrary from in transferFrom: token.safeTransferFrom(from,feeRecipients[i],feeAmount) (src/exercise/BaseExercise.sol#79)\n", + "markdown": "[BaseExercise.distributeFeesFrom(uint256,IERC20,address)](src/exercise/BaseExercise.sol#L75-L84) uses arbitrary from in transferFrom: [token.safeTransferFrom(from,feeRecipients[i],feeAmount)](src/exercise/BaseExercise.sol#L79)\n", + "first_markdown_element": "src/exercise/BaseExercise.sol#L75-L84", + "id": "446a1cb33ebfad0d0a709c03c1c0cd849aceed537bd0183c5297524327e3aaf2", + "check": "arbitrary-send-erc20", + "impact": "High", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "distributeFeesFrom", + "source_mapping": { + "start": 3017, + "length": 554, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BaseExercise", + "source_mapping": { + "start": 432, + "length": 3936, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "distributeFeesFrom(uint256,IERC20,address)" + } + }, + { + "type": "node", + "name": "token.safeTransferFrom(from,feeRecipients[feeRecipients.length - 1],remaining)", + "source_mapping": { + "start": 3419, + "length": 80, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 82 + ], + "starting_column": 9, + "ending_column": 89 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "distributeFeesFrom", + "source_mapping": { + "start": 3017, + "length": 554, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BaseExercise", + "source_mapping": { + "start": 432, + "length": 3936, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "distributeFeesFrom(uint256,IERC20,address)" + } + } + } + } + ], + "description": "BaseExercise.distributeFeesFrom(uint256,IERC20,address) (src/exercise/BaseExercise.sol#75-84) uses arbitrary from in transferFrom: token.safeTransferFrom(from,feeRecipients[feeRecipients.length - 1],remaining) (src/exercise/BaseExercise.sol#82)\n", + "markdown": "[BaseExercise.distributeFeesFrom(uint256,IERC20,address)](src/exercise/BaseExercise.sol#L75-L84) uses arbitrary from in transferFrom: [token.safeTransferFrom(from,feeRecipients[feeRecipients.length - 1],remaining)](src/exercise/BaseExercise.sol#L82)\n", + "first_markdown_element": "src/exercise/BaseExercise.sol#L75-L84", + "id": "e527a176c279777711a8a43d5feac81d7390657a451efca4aa421633e06d9680", + "check": "arbitrary-send-erc20", + "impact": "High", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "_functionDelegateCall", + "source_mapping": { + "start": 6780, + "length": 455, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "is_dependency": true, + "lines": [ + 184, + 185, + 186, + 187, + 188, + 189, + 190 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ERC1967UpgradeUpgradeable", + "source_mapping": { + "start": 661, + "length": 6867, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "is_dependency": true, + "lines": [ + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_functionDelegateCall(address,bytes)" + } + }, + { + "type": "node", + "name": "(success,returndata) = target.delegatecall(data)", + "source_mapping": { + "start": 7045, + "length": 67, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "is_dependency": true, + "lines": [ + 188 + ], + "starting_column": 9, + "ending_column": 76 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_functionDelegateCall", + "source_mapping": { + "start": 6780, + "length": 455, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "is_dependency": true, + "lines": [ + 184, + 185, + 186, + 187, + 188, + 189, + 190 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ERC1967UpgradeUpgradeable", + "source_mapping": { + "start": 661, + "length": 6867, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "is_dependency": true, + "lines": [ + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_functionDelegateCall(address,bytes)" + } + } + } + } + ], + "description": "ERC1967UpgradeUpgradeable._functionDelegateCall(address,bytes) (lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#184-190) uses delegatecall to a input-controlled function id\n\t- (success,returndata) = target.delegatecall(data) (lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#188)\n", + "markdown": "[ERC1967UpgradeUpgradeable._functionDelegateCall(address,bytes)](lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#L184-L190) uses delegatecall to a input-controlled function id\n\t- [(success,returndata) = target.delegatecall(data)](lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#L188)\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#L184-L190", + "id": "674611239cacd3d3adbcbfab671c0ebaf9c020827cfd91cca0f58d74c0873e7d", + "check": "controlled-delegatecall", + "impact": "High", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 741, + "length": 4127, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FullMath", + "source_mapping": { + "start": 354, + "length": 5163, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + }, + { + "type": "node", + "name": "inv = (3 * denominator) ^ 2", + "source_mapping": { + "start": 3729, + "length": 35, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 88 + ], + "starting_column": 13, + "ending_column": 48 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 741, + "length": 4127, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FullMath", + "source_mapping": { + "start": 354, + "length": 5163, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + } + ], + "description": "FullMath.mulDiv(uint256,uint256,uint256) (lib/v3-core/contracts/libraries/FullMath.sol#14-108) has bitwise-xor operator ^ instead of the exponentiation operator **: \n\t - inv = (3 * denominator) ^ 2 (lib/v3-core/contracts/libraries/FullMath.sol#88)\n", + "markdown": "[FullMath.mulDiv(uint256,uint256,uint256)](lib/v3-core/contracts/libraries/FullMath.sol#L14-L108) has bitwise-xor operator ^ instead of the exponentiation operator **: \n\t - [inv = (3 * denominator) ^ 2](lib/v3-core/contracts/libraries/FullMath.sol#L88)\n", + "first_markdown_element": "lib/v3-core/contracts/libraries/FullMath.sol#L14-L108", + "id": "3ebcee10c38dd4a235616a4d9d6a9aaf00fe1db39529893efe57c283a4b73d3f", + "check": "incorrect-exp", + "impact": "High", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 1678, + "length": 3925, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "MathUpgradeable", + "source_mapping": { + "start": 202, + "length": 12313, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + }, + { + "type": "node", + "name": "inverse = (3 * denominator) ^ 2", + "source_mapping": { + "start": 4459, + "length": 39, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 117 + ], + "starting_column": 13, + "ending_column": 52 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 1678, + "length": 3925, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "MathUpgradeable", + "source_mapping": { + "start": 202, + "length": 12313, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + } + ], + "description": "MathUpgradeable.mulDiv(uint256,uint256,uint256) (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#55-135) has bitwise-xor operator ^ instead of the exponentiation operator **: \n\t - inverse = (3 * denominator) ^ 2 (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#117)\n", + "markdown": "[MathUpgradeable.mulDiv(uint256,uint256,uint256)](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L55-L135) has bitwise-xor operator ^ instead of the exponentiation operator **: \n\t - [inverse = (3 * denominator) ^ 2](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L117)\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L55-L135", + "id": "d5757e6727c1fd979b03f6138f32befb52a3a53c3f8e23a9970145a5973d779a", + "check": "incorrect-exp", + "impact": "High", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 1678, + "length": 3925, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "MathUpgradeable", + "source_mapping": { + "start": 202, + "length": 12313, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + }, + { + "type": "node", + "name": "denominator = denominator / twos", + "source_mapping": { + "start": 3757, + "length": 37, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 102 + ], + "starting_column": 17, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 1678, + "length": 3925, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "MathUpgradeable", + "source_mapping": { + "start": 202, + "length": 12313, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + }, + { + "type": "node", + "name": "inverse *= 2 - denominator * inverse", + "source_mapping": { + "start": 4715, + "length": 36, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 121 + ], + "starting_column": 13, + "ending_column": 49 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 1678, + "length": 3925, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "MathUpgradeable", + "source_mapping": { + "start": 202, + "length": 12313, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + } + ], + "description": "MathUpgradeable.mulDiv(uint256,uint256,uint256) (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#55-135) performs a multiplication on the result of a division:\n\t- denominator = denominator / twos (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#102)\n\t- inverse *= 2 - denominator * inverse (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#121)\n", + "markdown": "[MathUpgradeable.mulDiv(uint256,uint256,uint256)](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L55-L135) performs a multiplication on the result of a division:\n\t- [denominator = denominator / twos](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L102)\n\t- [inverse *= 2 - denominator * inverse](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L121)\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L55-L135", + "id": "00b65e3a8fb42b635c27a085eb3b8c89d7b14ad83a5429e7ccfde9497a23828c", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + }, + { + "type": "node", + "name": "ratio = (ratio * 0x48a170391f7dc42444e8fa2) >> 128", + "source_mapping": { + "start": 3617, + "length": 50, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 52 + ], + "starting_column": 41, + "ending_column": 91 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + } + } + }, + { + "type": "node", + "name": "ratio = type()(uint256).max / ratio", + "source_mapping": { + "start": 3696, + "length": 33, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 54 + ], + "starting_column": 27, + "ending_column": 60 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + } + } + } + ], + "description": "TickMath.getSqrtRatioAtTick(int24) (lib/v3-core/contracts/libraries/TickMath.sol#26-61) performs a multiplication on the result of a division:\n\t- ratio = (ratio * 0x48a170391f7dc42444e8fa2) >> 128 (lib/v3-core/contracts/libraries/TickMath.sol#52)\n\t- ratio = type()(uint256).max / ratio (lib/v3-core/contracts/libraries/TickMath.sol#54)\n", + "markdown": "[TickMath.getSqrtRatioAtTick(int24)](lib/v3-core/contracts/libraries/TickMath.sol#L26-L61) performs a multiplication on the result of a division:\n\t- [ratio = (ratio * 0x48a170391f7dc42444e8fa2) >> 128](lib/v3-core/contracts/libraries/TickMath.sol#L52)\n\t- [ratio = type()(uint256).max / ratio](lib/v3-core/contracts/libraries/TickMath.sol#L54)\n", + "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L26-L61", + "id": "049b0eee893d521c098e8106c37a596606789cb5437746aaf101d87bfb81347e", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 1678, + "length": 3925, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "MathUpgradeable", + "source_mapping": { + "start": 202, + "length": 12313, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + }, + { + "type": "node", + "name": "denominator = denominator / twos", + "source_mapping": { + "start": 3757, + "length": 37, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 102 + ], + "starting_column": 17, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 1678, + "length": 3925, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "MathUpgradeable", + "source_mapping": { + "start": 202, + "length": 12313, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + }, + { + "type": "node", + "name": "inverse *= 2 - denominator * inverse", + "source_mapping": { + "start": 4924, + "length": 36, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 124 + ], + "starting_column": 13, + "ending_column": 49 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 1678, + "length": 3925, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "MathUpgradeable", + "source_mapping": { + "start": 202, + "length": 12313, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + } + ], + "description": "MathUpgradeable.mulDiv(uint256,uint256,uint256) (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#55-135) performs a multiplication on the result of a division:\n\t- denominator = denominator / twos (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#102)\n\t- inverse *= 2 - denominator * inverse (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#124)\n", + "markdown": "[MathUpgradeable.mulDiv(uint256,uint256,uint256)](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L55-L135) performs a multiplication on the result of a division:\n\t- [denominator = denominator / twos](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L102)\n\t- [inverse *= 2 - denominator * inverse](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L124)\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L55-L135", + "id": "063a41726141c0824417315356cff50b71c19049fcd88cdabef685c7b2284446", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 741, + "length": 4127, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FullMath", + "source_mapping": { + "start": 354, + "length": 5163, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + }, + { + "type": "node", + "name": "prod0 = prod0 / twos", + "source_mapping": { + "start": 3023, + "length": 25, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 73 + ], + "starting_column": 17, + "ending_column": 42 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 741, + "length": 4127, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FullMath", + "source_mapping": { + "start": 354, + "length": 5163, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + }, + { + "type": "node", + "name": "result = prod0 * inv", + "source_mapping": { + "start": 4804, + "length": 20, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 105 + ], + "starting_column": 13, + "ending_column": 33 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 741, + "length": 4127, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FullMath", + "source_mapping": { + "start": 354, + "length": 5163, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + } + ], + "description": "FullMath.mulDiv(uint256,uint256,uint256) (lib/v3-core/contracts/libraries/FullMath.sol#14-108) performs a multiplication on the result of a division:\n\t- prod0 = prod0 / twos (lib/v3-core/contracts/libraries/FullMath.sol#73)\n\t- result = prod0 * inv (lib/v3-core/contracts/libraries/FullMath.sol#105)\n", + "markdown": "[FullMath.mulDiv(uint256,uint256,uint256)](lib/v3-core/contracts/libraries/FullMath.sol#L14-L108) performs a multiplication on the result of a division:\n\t- [prod0 = prod0 / twos](lib/v3-core/contracts/libraries/FullMath.sol#L73)\n\t- [result = prod0 * inv](lib/v3-core/contracts/libraries/FullMath.sol#L105)\n", + "first_markdown_element": "lib/v3-core/contracts/libraries/FullMath.sol#L14-L108", + "id": "0fc34c55fb2fcbf643d5ba90b5756e4d089643e6ad30eeea71f5c709781c9e32", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + }, + { + "type": "node", + "name": "ratio = (ratio * 0xa9f746462d870fdf8a65dc1f90e061e5) >> 128", + "source_mapping": { + "start": 3020, + "length": 59, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 46 + ], + "starting_column": 40, + "ending_column": 99 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + } + } + }, + { + "type": "node", + "name": "ratio = type()(uint256).max / ratio", + "source_mapping": { + "start": 3696, + "length": 33, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 54 + ], + "starting_column": 27, + "ending_column": 60 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + } + } + } + ], + "description": "TickMath.getSqrtRatioAtTick(int24) (lib/v3-core/contracts/libraries/TickMath.sol#26-61) performs a multiplication on the result of a division:\n\t- ratio = (ratio * 0xa9f746462d870fdf8a65dc1f90e061e5) >> 128 (lib/v3-core/contracts/libraries/TickMath.sol#46)\n\t- ratio = type()(uint256).max / ratio (lib/v3-core/contracts/libraries/TickMath.sol#54)\n", + "markdown": "[TickMath.getSqrtRatioAtTick(int24)](lib/v3-core/contracts/libraries/TickMath.sol#L26-L61) performs a multiplication on the result of a division:\n\t- [ratio = (ratio * 0xa9f746462d870fdf8a65dc1f90e061e5) >> 128](lib/v3-core/contracts/libraries/TickMath.sol#L46)\n\t- [ratio = type()(uint256).max / ratio](lib/v3-core/contracts/libraries/TickMath.sol#L54)\n", + "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L26-L61", + "id": "10d5f7f6961892bd6462b79f7f63ffdeb9ccdad321a21b8302ef6d4d68d57be6", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 741, + "length": 4127, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FullMath", + "source_mapping": { + "start": 354, + "length": 5163, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + }, + { + "type": "node", + "name": "denominator = denominator / twos", + "source_mapping": { + "start": 2873, + "length": 37, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 68 + ], + "starting_column": 17, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 741, + "length": 4127, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FullMath", + "source_mapping": { + "start": 354, + "length": 5163, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + }, + { + "type": "node", + "name": "inv *= 2 - denominator * inv", + "source_mapping": { + "start": 4310, + "length": 28, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 97 + ], + "starting_column": 13, + "ending_column": 41 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 741, + "length": 4127, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FullMath", + "source_mapping": { + "start": 354, + "length": 5163, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + } + ], + "description": "FullMath.mulDiv(uint256,uint256,uint256) (lib/v3-core/contracts/libraries/FullMath.sol#14-108) performs a multiplication on the result of a division:\n\t- denominator = denominator / twos (lib/v3-core/contracts/libraries/FullMath.sol#68)\n\t- inv *= 2 - denominator * inv (lib/v3-core/contracts/libraries/FullMath.sol#97)\n", + "markdown": "[FullMath.mulDiv(uint256,uint256,uint256)](lib/v3-core/contracts/libraries/FullMath.sol#L14-L108) performs a multiplication on the result of a division:\n\t- [denominator = denominator / twos](lib/v3-core/contracts/libraries/FullMath.sol#L68)\n\t- [inv *= 2 - denominator * inv](lib/v3-core/contracts/libraries/FullMath.sol#L97)\n", + "first_markdown_element": "lib/v3-core/contracts/libraries/FullMath.sol#L14-L108", + "id": "1ef88f8244a181a35e0f07c86dd3dbcd47a08f4e7344a3aa2246ce952b3c4782", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_calculateMinAmountOut", + "source_mapping": { + "start": 9735, + "length": 1525, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_calculateMinAmountOut(address,address,uint256,MinAmountOutData)" + } + }, + { + "type": "node", + "name": "toAmountUsdTargetDigits = (fromAmountUsdTargetDigits * _minAmountOutData.absoluteOrBPSValue) / PERCENT_DIVISOR", + "source_mapping": { + "start": 11000, + "length": 130, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 299, + 300 + ], + "starting_column": 9, + "ending_column": 97 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_calculateMinAmountOut", + "source_mapping": { + "start": 9735, + "length": 1525, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_calculateMinAmountOut(address,address,uint256,MinAmountOutData)" + } + } + } + }, + { + "type": "node", + "name": "minAmountOut = (toAmountUsdTargetDigits * 10 ** IERC20MetadataUpgradeable(_to).decimals()) / toPriceTargetDigits", + "source_mapping": { + "start": 11141, + "length": 112, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 302 + ], + "starting_column": 9, + "ending_column": 121 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_calculateMinAmountOut", + "source_mapping": { + "start": 9735, + "length": 1525, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_calculateMinAmountOut(address,address,uint256,MinAmountOutData)" + } + } + } + } + ], + "description": "ReaperSwapper._calculateMinAmountOut(address,address,uint256,MinAmountOutData) (lib/vault-v2/src/ReaperSwapper.sol#275-303) performs a multiplication on the result of a division:\n\t- toAmountUsdTargetDigits = (fromAmountUsdTargetDigits * _minAmountOutData.absoluteOrBPSValue) / PERCENT_DIVISOR (lib/vault-v2/src/ReaperSwapper.sol#299-300)\n\t- minAmountOut = (toAmountUsdTargetDigits * 10 ** IERC20MetadataUpgradeable(_to).decimals()) / toPriceTargetDigits (lib/vault-v2/src/ReaperSwapper.sol#302)\n", + "markdown": "[ReaperSwapper._calculateMinAmountOut(address,address,uint256,MinAmountOutData)](lib/vault-v2/src/ReaperSwapper.sol#L275-L303) performs a multiplication on the result of a division:\n\t- [toAmountUsdTargetDigits = (fromAmountUsdTargetDigits * _minAmountOutData.absoluteOrBPSValue) / PERCENT_DIVISOR](lib/vault-v2/src/ReaperSwapper.sol#L299-L300)\n\t- [minAmountOut = (toAmountUsdTargetDigits * 10 ** IERC20MetadataUpgradeable(_to).decimals()) / toPriceTargetDigits](lib/vault-v2/src/ReaperSwapper.sol#L302)\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L275-L303", + "id": "242b2c5d9da698fd1345e7823ad59a8dae0b459dab01039556e362d5ac2acd45", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_calculateMinAmountOut", + "source_mapping": { + "start": 9735, + "length": 1525, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_calculateMinAmountOut(address,address,uint256,MinAmountOutData)" + } + }, + { + "type": "node", + "name": "fromAmountUsdTargetDigits = (_amountIn * fromPriceTargetDigits) / 10 ** IERC20MetadataUpgradeable(_from).decimals()", + "source_mapping": { + "start": 10855, + "length": 135, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 297, + 298 + ], + "starting_column": 9, + "ending_column": 100 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_calculateMinAmountOut", + "source_mapping": { + "start": 9735, + "length": 1525, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_calculateMinAmountOut(address,address,uint256,MinAmountOutData)" + } + } + } + }, + { + "type": "node", + "name": "toAmountUsdTargetDigits = (fromAmountUsdTargetDigits * _minAmountOutData.absoluteOrBPSValue) / PERCENT_DIVISOR", + "source_mapping": { + "start": 11000, + "length": 130, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 299, + 300 + ], + "starting_column": 9, + "ending_column": 97 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_calculateMinAmountOut", + "source_mapping": { + "start": 9735, + "length": 1525, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_calculateMinAmountOut(address,address,uint256,MinAmountOutData)" + } + } + } + } + ], + "description": "ReaperSwapper._calculateMinAmountOut(address,address,uint256,MinAmountOutData) (lib/vault-v2/src/ReaperSwapper.sol#275-303) performs a multiplication on the result of a division:\n\t- fromAmountUsdTargetDigits = (_amountIn * fromPriceTargetDigits) / 10 ** IERC20MetadataUpgradeable(_from).decimals() (lib/vault-v2/src/ReaperSwapper.sol#297-298)\n\t- toAmountUsdTargetDigits = (fromAmountUsdTargetDigits * _minAmountOutData.absoluteOrBPSValue) / PERCENT_DIVISOR (lib/vault-v2/src/ReaperSwapper.sol#299-300)\n", + "markdown": "[ReaperSwapper._calculateMinAmountOut(address,address,uint256,MinAmountOutData)](lib/vault-v2/src/ReaperSwapper.sol#L275-L303) performs a multiplication on the result of a division:\n\t- [fromAmountUsdTargetDigits = (_amountIn * fromPriceTargetDigits) / 10 ** IERC20MetadataUpgradeable(_from).decimals()](lib/vault-v2/src/ReaperSwapper.sol#L297-L298)\n\t- [toAmountUsdTargetDigits = (fromAmountUsdTargetDigits * _minAmountOutData.absoluteOrBPSValue) / PERCENT_DIVISOR](lib/vault-v2/src/ReaperSwapper.sol#L299-L300)\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L275-L303", + "id": "2a964692a2c1e433645c4386705e83f412d01ced4ff15e6a7ed9f220abf91751", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 1678, + "length": 3925, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "MathUpgradeable", + "source_mapping": { + "start": 202, + "length": 12313, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + }, + { + "type": "node", + "name": "denominator = denominator / twos", + "source_mapping": { + "start": 3757, + "length": 37, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 102 + ], + "starting_column": 17, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 1678, + "length": 3925, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "MathUpgradeable", + "source_mapping": { + "start": 202, + "length": 12313, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + }, + { + "type": "node", + "name": "inverse *= 2 - denominator * inverse", + "source_mapping": { + "start": 4784, + "length": 36, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 122 + ], + "starting_column": 13, + "ending_column": 49 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 1678, + "length": 3925, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "MathUpgradeable", + "source_mapping": { + "start": 202, + "length": 12313, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + } + ], + "description": "MathUpgradeable.mulDiv(uint256,uint256,uint256) (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#55-135) performs a multiplication on the result of a division:\n\t- denominator = denominator / twos (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#102)\n\t- inverse *= 2 - denominator * inverse (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#122)\n", + "markdown": "[MathUpgradeable.mulDiv(uint256,uint256,uint256)](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L55-L135) performs a multiplication on the result of a division:\n\t- [denominator = denominator / twos](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L102)\n\t- [inverse *= 2 - denominator * inverse](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L122)\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L55-L135", + "id": "333a89f3a8f64c59b998db6ddea224f5e5b6a3e18adc1cc4fe33353a9161141a", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + }, + { + "type": "node", + "name": "ratio = (ratio * 0xff2ea16466c96a3843ec78b326b52861) >> 128", + "source_mapping": { + "start": 2326, + "length": 59, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 39 + ], + "starting_column": 38, + "ending_column": 97 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + } + } + }, + { + "type": "node", + "name": "ratio = type()(uint256).max / ratio", + "source_mapping": { + "start": 3696, + "length": 33, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 54 + ], + "starting_column": 27, + "ending_column": 60 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + } + } + } + ], + "description": "TickMath.getSqrtRatioAtTick(int24) (lib/v3-core/contracts/libraries/TickMath.sol#26-61) performs a multiplication on the result of a division:\n\t- ratio = (ratio * 0xff2ea16466c96a3843ec78b326b52861) >> 128 (lib/v3-core/contracts/libraries/TickMath.sol#39)\n\t- ratio = type()(uint256).max / ratio (lib/v3-core/contracts/libraries/TickMath.sol#54)\n", + "markdown": "[TickMath.getSqrtRatioAtTick(int24)](lib/v3-core/contracts/libraries/TickMath.sol#L26-L61) performs a multiplication on the result of a division:\n\t- [ratio = (ratio * 0xff2ea16466c96a3843ec78b326b52861) >> 128](lib/v3-core/contracts/libraries/TickMath.sol#L39)\n\t- [ratio = type()(uint256).max / ratio](lib/v3-core/contracts/libraries/TickMath.sol#L54)\n", + "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L26-L61", + "id": "38c735599b34bd5dd6042b2b9001323fbfb2770b8c54e5257f95d17e496b58bc", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + }, + { + "type": "node", + "name": "ratio = (ratio * 0xf987a7253ac413176f2b074cf7815e54) >> 128", + "source_mapping": { + "start": 2622, + "length": 59, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 42 + ], + "starting_column": 39, + "ending_column": 98 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + } + } + }, + { + "type": "node", + "name": "ratio = type()(uint256).max / ratio", + "source_mapping": { + "start": 3696, + "length": 33, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 54 + ], + "starting_column": 27, + "ending_column": 60 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + } + } + } + ], + "description": "TickMath.getSqrtRatioAtTick(int24) (lib/v3-core/contracts/libraries/TickMath.sol#26-61) performs a multiplication on the result of a division:\n\t- ratio = (ratio * 0xf987a7253ac413176f2b074cf7815e54) >> 128 (lib/v3-core/contracts/libraries/TickMath.sol#42)\n\t- ratio = type()(uint256).max / ratio (lib/v3-core/contracts/libraries/TickMath.sol#54)\n", + "markdown": "[TickMath.getSqrtRatioAtTick(int24)](lib/v3-core/contracts/libraries/TickMath.sol#L26-L61) performs a multiplication on the result of a division:\n\t- [ratio = (ratio * 0xf987a7253ac413176f2b074cf7815e54) >> 128](lib/v3-core/contracts/libraries/TickMath.sol#L42)\n\t- [ratio = type()(uint256).max / ratio](lib/v3-core/contracts/libraries/TickMath.sol#L54)\n", + "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L26-L61", + "id": "3b44809d05674d486bb9e43f2b5c6a6f1b3cfbf822a51d78672a6efcaaf27060", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_getSwapAmountUniV2", + "source_mapping": { + "start": 3579, + "length": 603, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "UniV2Mixin", + "source_mapping": { + "start": 234, + "length": 4634, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_getSwapAmountUniV2(uint256,uint256,uint256,address)" + } + }, + { + "type": "node", + "name": "halfInvestment = _investmentA / 2", + "source_mapping": { + "start": 3766, + "length": 41, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 96 + ], + "starting_column": 9, + "ending_column": 50 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_getSwapAmountUniV2", + "source_mapping": { + "start": 3579, + "length": 603, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "UniV2Mixin", + "source_mapping": { + "start": 234, + "length": 4634, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_getSwapAmountUniV2(uint256,uint256,uint256,address)" + } + } + } + }, + { + "type": "node", + "name": "swapAmount = _investmentA - (Babylonian.sqrt((halfInvestment * halfInvestment * nominator) / denominator))", + "source_mapping": { + "start": 4069, + "length": 106, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 100 + ], + "starting_column": 9, + "ending_column": 115 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_getSwapAmountUniV2", + "source_mapping": { + "start": 3579, + "length": 603, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "UniV2Mixin", + "source_mapping": { + "start": 234, + "length": 4634, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_getSwapAmountUniV2(uint256,uint256,uint256,address)" + } + } + } + } + ], + "description": "UniV2Mixin._getSwapAmountUniV2(uint256,uint256,uint256,address) (lib/vault-v2/src/mixins/UniV2Mixin.sol#91-101) performs a multiplication on the result of a division:\n\t- halfInvestment = _investmentA / 2 (lib/vault-v2/src/mixins/UniV2Mixin.sol#96)\n\t- swapAmount = _investmentA - (Babylonian.sqrt((halfInvestment * halfInvestment * nominator) / denominator)) (lib/vault-v2/src/mixins/UniV2Mixin.sol#100)\n", + "markdown": "[UniV2Mixin._getSwapAmountUniV2(uint256,uint256,uint256,address)](lib/vault-v2/src/mixins/UniV2Mixin.sol#L91-L101) performs a multiplication on the result of a division:\n\t- [halfInvestment = _investmentA / 2](lib/vault-v2/src/mixins/UniV2Mixin.sol#L96)\n\t- [swapAmount = _investmentA - (Babylonian.sqrt((halfInvestment * halfInvestment * nominator) / denominator))](lib/vault-v2/src/mixins/UniV2Mixin.sol#L100)\n", + "first_markdown_element": "lib/vault-v2/src/mixins/UniV2Mixin.sol#L91-L101", + "id": "3bdf8bff47fabfb38bc200b9841d43ccc92af4d55144953616bc8b804bbb4190", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + }, + { + "type": "node", + "name": "ratio = (ratio * 0xfe5dee046a99a2a811c461f1969c3053) >> 128", + "source_mapping": { + "start": 2424, + "length": 59, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 40 + ], + "starting_column": 38, + "ending_column": 97 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + } + } + }, + { + "type": "node", + "name": "ratio = type()(uint256).max / ratio", + "source_mapping": { + "start": 3696, + "length": 33, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 54 + ], + "starting_column": 27, + "ending_column": 60 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + } + } + } + ], + "description": "TickMath.getSqrtRatioAtTick(int24) (lib/v3-core/contracts/libraries/TickMath.sol#26-61) performs a multiplication on the result of a division:\n\t- ratio = (ratio * 0xfe5dee046a99a2a811c461f1969c3053) >> 128 (lib/v3-core/contracts/libraries/TickMath.sol#40)\n\t- ratio = type()(uint256).max / ratio (lib/v3-core/contracts/libraries/TickMath.sol#54)\n", + "markdown": "[TickMath.getSqrtRatioAtTick(int24)](lib/v3-core/contracts/libraries/TickMath.sol#L26-L61) performs a multiplication on the result of a division:\n\t- [ratio = (ratio * 0xfe5dee046a99a2a811c461f1969c3053) >> 128](lib/v3-core/contracts/libraries/TickMath.sol#L40)\n\t- [ratio = type()(uint256).max / ratio](lib/v3-core/contracts/libraries/TickMath.sol#L54)\n", + "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L26-L61", + "id": "3fe811ee3f7a15306c799d900ce83ea25b94a798fc2fbdbeff7c41a9d44104eb", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 1678, + "length": 3925, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "MathUpgradeable", + "source_mapping": { + "start": 202, + "length": 12313, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + }, + { + "type": "node", + "name": "denominator = denominator / twos", + "source_mapping": { + "start": 3757, + "length": 37, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 102 + ], + "starting_column": 17, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 1678, + "length": 3925, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "MathUpgradeable", + "source_mapping": { + "start": 202, + "length": 12313, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + }, + { + "type": "node", + "name": "inverse *= 2 - denominator * inverse", + "source_mapping": { + "start": 4854, + "length": 36, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 123 + ], + "starting_column": 13, + "ending_column": 49 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 1678, + "length": 3925, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "MathUpgradeable", + "source_mapping": { + "start": 202, + "length": 12313, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + } + ], + "description": "MathUpgradeable.mulDiv(uint256,uint256,uint256) (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#55-135) performs a multiplication on the result of a division:\n\t- denominator = denominator / twos (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#102)\n\t- inverse *= 2 - denominator * inverse (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#123)\n", + "markdown": "[MathUpgradeable.mulDiv(uint256,uint256,uint256)](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L55-L135) performs a multiplication on the result of a division:\n\t- [denominator = denominator / twos](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L102)\n\t- [inverse *= 2 - denominator * inverse](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L123)\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L55-L135", + "id": "4bd78131744a4ae01deecf9f70f7caa639f217aabb6958b7502762971ed7992c", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + }, + { + "type": "node", + "name": "ratio = (ratio * 0xfff2e50f5f656932ef12357cf3c7fdcc) >> 128", + "source_mapping": { + "start": 1935, + "length": 59, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 35 + ], + "starting_column": 37, + "ending_column": 96 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + } + } + }, + { + "type": "node", + "name": "ratio = type()(uint256).max / ratio", + "source_mapping": { + "start": 3696, + "length": 33, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 54 + ], + "starting_column": 27, + "ending_column": 60 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + } + } + } + ], + "description": "TickMath.getSqrtRatioAtTick(int24) (lib/v3-core/contracts/libraries/TickMath.sol#26-61) performs a multiplication on the result of a division:\n\t- ratio = (ratio * 0xfff2e50f5f656932ef12357cf3c7fdcc) >> 128 (lib/v3-core/contracts/libraries/TickMath.sol#35)\n\t- ratio = type()(uint256).max / ratio (lib/v3-core/contracts/libraries/TickMath.sol#54)\n", + "markdown": "[TickMath.getSqrtRatioAtTick(int24)](lib/v3-core/contracts/libraries/TickMath.sol#L26-L61) performs a multiplication on the result of a division:\n\t- [ratio = (ratio * 0xfff2e50f5f656932ef12357cf3c7fdcc) >> 128](lib/v3-core/contracts/libraries/TickMath.sol#L35)\n\t- [ratio = type()(uint256).max / ratio](lib/v3-core/contracts/libraries/TickMath.sol#L54)\n", + "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L26-L61", + "id": "4c4b17533f204364045c6f68db370e77b5ad7364eba97f64430b1d06a53fcec5", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + }, + { + "type": "node", + "name": "ratio = (ratio * 0xfff97272373d413259a46990580e213a) >> 128", + "source_mapping": { + "start": 1838, + "length": 59, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 34 + ], + "starting_column": 37, + "ending_column": 96 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + } + } + }, + { + "type": "node", + "name": "ratio = type()(uint256).max / ratio", + "source_mapping": { + "start": 3696, + "length": 33, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 54 + ], + "starting_column": 27, + "ending_column": 60 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + } + } + } + ], + "description": "TickMath.getSqrtRatioAtTick(int24) (lib/v3-core/contracts/libraries/TickMath.sol#26-61) performs a multiplication on the result of a division:\n\t- ratio = (ratio * 0xfff97272373d413259a46990580e213a) >> 128 (lib/v3-core/contracts/libraries/TickMath.sol#34)\n\t- ratio = type()(uint256).max / ratio (lib/v3-core/contracts/libraries/TickMath.sol#54)\n", + "markdown": "[TickMath.getSqrtRatioAtTick(int24)](lib/v3-core/contracts/libraries/TickMath.sol#L26-L61) performs a multiplication on the result of a division:\n\t- [ratio = (ratio * 0xfff97272373d413259a46990580e213a) >> 128](lib/v3-core/contracts/libraries/TickMath.sol#L34)\n\t- [ratio = type()(uint256).max / ratio](lib/v3-core/contracts/libraries/TickMath.sol#L54)\n", + "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L26-L61", + "id": "4fc11cac2f6896d1fd2ae2941701fcab0e310d7f0867ed97cc5b3e8c23efcba4", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_getSwapAmountVelo", + "source_mapping": { + "start": 2636, + "length": 541, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "VeloSolidMixin", + "source_mapping": { + "start": 313, + "length": 4635, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_getSwapAmountVelo(IVeloPair,uint256,uint256,uint256,address)" + } + }, + { + "type": "node", + "name": "halfInvestment = investmentA / 2", + "source_mapping": { + "start": 2834, + "length": 40, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 78 + ], + "starting_column": 9, + "ending_column": 49 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_getSwapAmountVelo", + "source_mapping": { + "start": 2636, + "length": 541, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "VeloSolidMixin", + "source_mapping": { + "start": 313, + "length": 4635, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_getSwapAmountVelo(IVeloPair,uint256,uint256,uint256,address)" + } + } + } + }, + { + "type": "node", + "name": "swapAmount = investmentA - Babylonian.sqrt((halfInvestment * halfInvestment * numerator) / denominator)", + "source_mapping": { + "start": 3067, + "length": 103, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 81 + ], + "starting_column": 9, + "ending_column": 112 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_getSwapAmountVelo", + "source_mapping": { + "start": 2636, + "length": 541, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "VeloSolidMixin", + "source_mapping": { + "start": 313, + "length": 4635, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_getSwapAmountVelo(IVeloPair,uint256,uint256,uint256,address)" + } + } + } + } + ], + "description": "VeloSolidMixin._getSwapAmountVelo(IVeloPair,uint256,uint256,uint256,address) (lib/vault-v2/src/mixins/VeloSolidMixin.sol#73-82) performs a multiplication on the result of a division:\n\t- halfInvestment = investmentA / 2 (lib/vault-v2/src/mixins/VeloSolidMixin.sol#78)\n\t- swapAmount = investmentA - Babylonian.sqrt((halfInvestment * halfInvestment * numerator) / denominator) (lib/vault-v2/src/mixins/VeloSolidMixin.sol#81)\n", + "markdown": "[VeloSolidMixin._getSwapAmountVelo(IVeloPair,uint256,uint256,uint256,address)](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L73-L82) performs a multiplication on the result of a division:\n\t- [halfInvestment = investmentA / 2](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L78)\n\t- [swapAmount = investmentA - Babylonian.sqrt((halfInvestment * halfInvestment * numerator) / denominator)](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L81)\n", + "first_markdown_element": "lib/vault-v2/src/mixins/VeloSolidMixin.sol#L73-L82", + "id": "634d14708bdcf209cb732dd2453064bc4232343cec20e4c4af1d0a5345cc9d11", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + }, + { + "type": "node", + "name": "ratio = (ratio * 0x31be135f97d08fd981231505542fcfa6) >> 128", + "source_mapping": { + "start": 3220, + "length": 59, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 48 + ], + "starting_column": 40, + "ending_column": 99 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + } + } + }, + { + "type": "node", + "name": "ratio = type()(uint256).max / ratio", + "source_mapping": { + "start": 3696, + "length": 33, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 54 + ], + "starting_column": 27, + "ending_column": 60 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + } + } + } + ], + "description": "TickMath.getSqrtRatioAtTick(int24) (lib/v3-core/contracts/libraries/TickMath.sol#26-61) performs a multiplication on the result of a division:\n\t- ratio = (ratio * 0x31be135f97d08fd981231505542fcfa6) >> 128 (lib/v3-core/contracts/libraries/TickMath.sol#48)\n\t- ratio = type()(uint256).max / ratio (lib/v3-core/contracts/libraries/TickMath.sol#54)\n", + "markdown": "[TickMath.getSqrtRatioAtTick(int24)](lib/v3-core/contracts/libraries/TickMath.sol#L26-L61) performs a multiplication on the result of a division:\n\t- [ratio = (ratio * 0x31be135f97d08fd981231505542fcfa6) >> 128](lib/v3-core/contracts/libraries/TickMath.sol#L48)\n\t- [ratio = type()(uint256).max / ratio](lib/v3-core/contracts/libraries/TickMath.sol#L54)\n", + "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L26-L61", + "id": "7236a33a1c38547e2d6016c50a0cff9ccffeabd09475c57376ecb4a0f0d579fa", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 1678, + "length": 3925, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "MathUpgradeable", + "source_mapping": { + "start": 202, + "length": 12313, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + }, + { + "type": "node", + "name": "denominator = denominator / twos", + "source_mapping": { + "start": 3757, + "length": 37, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 102 + ], + "starting_column": 17, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 1678, + "length": 3925, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "MathUpgradeable", + "source_mapping": { + "start": 202, + "length": 12313, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + }, + { + "type": "node", + "name": "inverse *= 2 - denominator * inverse", + "source_mapping": { + "start": 4994, + "length": 36, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 125 + ], + "starting_column": 13, + "ending_column": 49 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 1678, + "length": 3925, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "MathUpgradeable", + "source_mapping": { + "start": 202, + "length": 12313, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + } + ], + "description": "MathUpgradeable.mulDiv(uint256,uint256,uint256) (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#55-135) performs a multiplication on the result of a division:\n\t- denominator = denominator / twos (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#102)\n\t- inverse *= 2 - denominator * inverse (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#125)\n", + "markdown": "[MathUpgradeable.mulDiv(uint256,uint256,uint256)](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L55-L135) performs a multiplication on the result of a division:\n\t- [denominator = denominator / twos](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L102)\n\t- [inverse *= 2 - denominator * inverse](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L125)\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L55-L135", + "id": "8e550aa740cfcf771bd2bf114b325d4e59d89cb74eda337db615a02086ec0332", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + }, + { + "type": "node", + "name": "ratio = (ratio * 0x5d6af8dedb81196699c329225ee604) >> 128", + "source_mapping": { + "start": 3421, + "length": 57, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 50 + ], + "starting_column": 41, + "ending_column": 98 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + } + } + }, + { + "type": "node", + "name": "ratio = type()(uint256).max / ratio", + "source_mapping": { + "start": 3696, + "length": 33, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 54 + ], + "starting_column": 27, + "ending_column": 60 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + } + } + } + ], + "description": "TickMath.getSqrtRatioAtTick(int24) (lib/v3-core/contracts/libraries/TickMath.sol#26-61) performs a multiplication on the result of a division:\n\t- ratio = (ratio * 0x5d6af8dedb81196699c329225ee604) >> 128 (lib/v3-core/contracts/libraries/TickMath.sol#50)\n\t- ratio = type()(uint256).max / ratio (lib/v3-core/contracts/libraries/TickMath.sol#54)\n", + "markdown": "[TickMath.getSqrtRatioAtTick(int24)](lib/v3-core/contracts/libraries/TickMath.sol#L26-L61) performs a multiplication on the result of a division:\n\t- [ratio = (ratio * 0x5d6af8dedb81196699c329225ee604) >> 128](lib/v3-core/contracts/libraries/TickMath.sol#L50)\n\t- [ratio = type()(uint256).max / ratio](lib/v3-core/contracts/libraries/TickMath.sol#L54)\n", + "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L26-L61", + "id": "976e6f1a5489c4b684ba80b7f2991c4f073a52e0a02f101aff98abe7c966e58b", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 741, + "length": 4127, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FullMath", + "source_mapping": { + "start": 354, + "length": 5163, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + }, + { + "type": "node", + "name": "denominator = denominator / twos", + "source_mapping": { + "start": 2873, + "length": 37, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 68 + ], + "starting_column": 17, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 741, + "length": 4127, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FullMath", + "source_mapping": { + "start": 354, + "length": 5163, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + }, + { + "type": "node", + "name": "inv *= 2 - denominator * inv", + "source_mapping": { + "start": 4183, + "length": 28, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 95 + ], + "starting_column": 13, + "ending_column": 41 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 741, + "length": 4127, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FullMath", + "source_mapping": { + "start": 354, + "length": 5163, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + } + ], + "description": "FullMath.mulDiv(uint256,uint256,uint256) (lib/v3-core/contracts/libraries/FullMath.sol#14-108) performs a multiplication on the result of a division:\n\t- denominator = denominator / twos (lib/v3-core/contracts/libraries/FullMath.sol#68)\n\t- inv *= 2 - denominator * inv (lib/v3-core/contracts/libraries/FullMath.sol#95)\n", + "markdown": "[FullMath.mulDiv(uint256,uint256,uint256)](lib/v3-core/contracts/libraries/FullMath.sol#L14-L108) performs a multiplication on the result of a division:\n\t- [denominator = denominator / twos](lib/v3-core/contracts/libraries/FullMath.sol#L68)\n\t- [inv *= 2 - denominator * inv](lib/v3-core/contracts/libraries/FullMath.sol#L95)\n", + "first_markdown_element": "lib/v3-core/contracts/libraries/FullMath.sol#L14-L108", + "id": "9c4b77f30035cd07f16f5da3c7df4ce22186d431383be67fc63102f53f1778be", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + }, + { + "type": "node", + "name": "ratio = (ratio * 0xffe5caca7e10e4e61c3624eaa0941cd0) >> 128", + "source_mapping": { + "start": 2032, + "length": 59, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 36 + ], + "starting_column": 37, + "ending_column": 96 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + } + } + }, + { + "type": "node", + "name": "ratio = type()(uint256).max / ratio", + "source_mapping": { + "start": 3696, + "length": 33, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 54 + ], + "starting_column": 27, + "ending_column": 60 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + } + } + } + ], + "description": "TickMath.getSqrtRatioAtTick(int24) (lib/v3-core/contracts/libraries/TickMath.sol#26-61) performs a multiplication on the result of a division:\n\t- ratio = (ratio * 0xffe5caca7e10e4e61c3624eaa0941cd0) >> 128 (lib/v3-core/contracts/libraries/TickMath.sol#36)\n\t- ratio = type()(uint256).max / ratio (lib/v3-core/contracts/libraries/TickMath.sol#54)\n", + "markdown": "[TickMath.getSqrtRatioAtTick(int24)](lib/v3-core/contracts/libraries/TickMath.sol#L26-L61) performs a multiplication on the result of a division:\n\t- [ratio = (ratio * 0xffe5caca7e10e4e61c3624eaa0941cd0) >> 128](lib/v3-core/contracts/libraries/TickMath.sol#L36)\n\t- [ratio = type()(uint256).max / ratio](lib/v3-core/contracts/libraries/TickMath.sol#L54)\n", + "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L26-L61", + "id": "9d5a00343fb3299a12df278a7fcc4e8bba171415a0cddc32a3c8b1292da5e020", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "rpow", + "source_mapping": { + "start": 2774, + "length": 2778, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FixedPointMathLib", + "source_mapping": { + "start": 341, + "length": 9712, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "rpow(uint256,uint256,uint256)" + } + }, + { + "type": "node", + "name": "x = xxRound_rpow_asm_0 / scalar", + "source_mapping": { + "start": 4594, + "length": 25, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 129 + ], + "starting_column": 21, + "ending_column": 46 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "rpow", + "source_mapping": { + "start": 2774, + "length": 2778, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FixedPointMathLib", + "source_mapping": { + "start": 341, + "length": 9712, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "rpow(uint256,uint256,uint256)" + } + } + } + }, + { + "type": "node", + "name": "zx_rpow_asm_0 = z * x", + "source_mapping": { + "start": 4759, + "length": 19, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 134 + ], + "starting_column": 25, + "ending_column": 44 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "rpow", + "source_mapping": { + "start": 2774, + "length": 2778, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FixedPointMathLib", + "source_mapping": { + "start": 341, + "length": 9712, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "rpow(uint256,uint256,uint256)" + } + } + } + } + ], + "description": "FixedPointMathLib.rpow(uint256,uint256,uint256) (lib/solmate/src/utils/FixedPointMathLib.sol#71-158) performs a multiplication on the result of a division:\n\t- x = xxRound_rpow_asm_0 / scalar (lib/solmate/src/utils/FixedPointMathLib.sol#129)\n\t- zx_rpow_asm_0 = z * x (lib/solmate/src/utils/FixedPointMathLib.sol#134)\n", + "markdown": "[FixedPointMathLib.rpow(uint256,uint256,uint256)](lib/solmate/src/utils/FixedPointMathLib.sol#L71-L158) performs a multiplication on the result of a division:\n\t- [x = xxRound_rpow_asm_0 / scalar](lib/solmate/src/utils/FixedPointMathLib.sol#L129)\n\t- [zx_rpow_asm_0 = z * x](lib/solmate/src/utils/FixedPointMathLib.sol#L134)\n", + "first_markdown_element": "lib/solmate/src/utils/FixedPointMathLib.sol#L71-L158", + "id": "a6857f603efc155f5d59590b122e576c03098950016b0ca7391a75409969c72a", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + }, + { + "type": "node", + "name": "ratio = (ratio * 0xffcb9843d60f6159c9db58835c926644) >> 128", + "source_mapping": { + "start": 2130, + "length": 59, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 37 + ], + "starting_column": 38, + "ending_column": 97 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + } + } + }, + { + "type": "node", + "name": "ratio = type()(uint256).max / ratio", + "source_mapping": { + "start": 3696, + "length": 33, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 54 + ], + "starting_column": 27, + "ending_column": 60 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + } + } + } + ], + "description": "TickMath.getSqrtRatioAtTick(int24) (lib/v3-core/contracts/libraries/TickMath.sol#26-61) performs a multiplication on the result of a division:\n\t- ratio = (ratio * 0xffcb9843d60f6159c9db58835c926644) >> 128 (lib/v3-core/contracts/libraries/TickMath.sol#37)\n\t- ratio = type()(uint256).max / ratio (lib/v3-core/contracts/libraries/TickMath.sol#54)\n", + "markdown": "[TickMath.getSqrtRatioAtTick(int24)](lib/v3-core/contracts/libraries/TickMath.sol#L26-L61) performs a multiplication on the result of a division:\n\t- [ratio = (ratio * 0xffcb9843d60f6159c9db58835c926644) >> 128](lib/v3-core/contracts/libraries/TickMath.sol#L37)\n\t- [ratio = type()(uint256).max / ratio](lib/v3-core/contracts/libraries/TickMath.sol#L54)\n", + "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L26-L61", + "id": "a91bd7bdec9d229a2e8b7757852ccf6bfbb0c1b82e2f213c0e87ea7d1501339c", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 1678, + "length": 3925, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "MathUpgradeable", + "source_mapping": { + "start": 202, + "length": 12313, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + }, + { + "type": "node", + "name": "prod0 = prod0 / twos", + "source_mapping": { + "start": 3861, + "length": 25, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 105 + ], + "starting_column": 17, + "ending_column": 42 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 1678, + "length": 3925, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "MathUpgradeable", + "source_mapping": { + "start": 202, + "length": 12313, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + }, + { + "type": "node", + "name": "result = prod0 * inverse", + "source_mapping": { + "start": 5535, + "length": 24, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 132 + ], + "starting_column": 13, + "ending_column": 37 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 1678, + "length": 3925, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "MathUpgradeable", + "source_mapping": { + "start": 202, + "length": 12313, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + } + ], + "description": "MathUpgradeable.mulDiv(uint256,uint256,uint256) (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#55-135) performs a multiplication on the result of a division:\n\t- prod0 = prod0 / twos (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#105)\n\t- result = prod0 * inverse (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#132)\n", + "markdown": "[MathUpgradeable.mulDiv(uint256,uint256,uint256)](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L55-L135) performs a multiplication on the result of a division:\n\t- [prod0 = prod0 / twos](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L105)\n\t- [result = prod0 * inverse](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L132)\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L55-L135", + "id": "b87038aa85530f57d3c926dfb00303da9021db0b4df6e6e2a16775cb835b5245", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 741, + "length": 4127, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FullMath", + "source_mapping": { + "start": 354, + "length": 5163, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + }, + { + "type": "node", + "name": "denominator = denominator / twos", + "source_mapping": { + "start": 2873, + "length": 37, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 68 + ], + "starting_column": 17, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 741, + "length": 4127, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FullMath", + "source_mapping": { + "start": 354, + "length": 5163, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + }, + { + "type": "node", + "name": "inv *= 2 - denominator * inv", + "source_mapping": { + "start": 4120, + "length": 28, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 94 + ], + "starting_column": 13, + "ending_column": 41 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 741, + "length": 4127, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FullMath", + "source_mapping": { + "start": 354, + "length": 5163, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + } + ], + "description": "FullMath.mulDiv(uint256,uint256,uint256) (lib/v3-core/contracts/libraries/FullMath.sol#14-108) performs a multiplication on the result of a division:\n\t- denominator = denominator / twos (lib/v3-core/contracts/libraries/FullMath.sol#68)\n\t- inv *= 2 - denominator * inv (lib/v3-core/contracts/libraries/FullMath.sol#94)\n", + "markdown": "[FullMath.mulDiv(uint256,uint256,uint256)](lib/v3-core/contracts/libraries/FullMath.sol#L14-L108) performs a multiplication on the result of a division:\n\t- [denominator = denominator / twos](lib/v3-core/contracts/libraries/FullMath.sol#L68)\n\t- [inv *= 2 - denominator * inv](lib/v3-core/contracts/libraries/FullMath.sol#L94)\n", + "first_markdown_element": "lib/v3-core/contracts/libraries/FullMath.sol#L14-L108", + "id": "bab014d5399775b500e5a02bedb24be936428d7c221c43ea46172f1944c25875", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 741, + "length": 4127, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FullMath", + "source_mapping": { + "start": 354, + "length": 5163, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + }, + { + "type": "node", + "name": "denominator = denominator / twos", + "source_mapping": { + "start": 2873, + "length": 37, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 68 + ], + "starting_column": 17, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 741, + "length": 4127, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FullMath", + "source_mapping": { + "start": 354, + "length": 5163, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + }, + { + "type": "node", + "name": "inv = (3 * denominator) ^ 2", + "source_mapping": { + "start": 3729, + "length": 35, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 88 + ], + "starting_column": 13, + "ending_column": 48 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 741, + "length": 4127, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FullMath", + "source_mapping": { + "start": 354, + "length": 5163, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + } + ], + "description": "FullMath.mulDiv(uint256,uint256,uint256) (lib/v3-core/contracts/libraries/FullMath.sol#14-108) performs a multiplication on the result of a division:\n\t- denominator = denominator / twos (lib/v3-core/contracts/libraries/FullMath.sol#68)\n\t- inv = (3 * denominator) ^ 2 (lib/v3-core/contracts/libraries/FullMath.sol#88)\n", + "markdown": "[FullMath.mulDiv(uint256,uint256,uint256)](lib/v3-core/contracts/libraries/FullMath.sol#L14-L108) performs a multiplication on the result of a division:\n\t- [denominator = denominator / twos](lib/v3-core/contracts/libraries/FullMath.sol#L68)\n\t- [inv = (3 * denominator) ^ 2](lib/v3-core/contracts/libraries/FullMath.sol#L88)\n", + "first_markdown_element": "lib/v3-core/contracts/libraries/FullMath.sol#L14-L108", + "id": "bb1576372add81b6d335a9795a84d6f47581915cf81761e1130215f4fffec15f", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 741, + "length": 4127, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FullMath", + "source_mapping": { + "start": 354, + "length": 5163, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + }, + { + "type": "node", + "name": "denominator = denominator / twos", + "source_mapping": { + "start": 2873, + "length": 37, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 68 + ], + "starting_column": 17, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 741, + "length": 4127, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FullMath", + "source_mapping": { + "start": 354, + "length": 5163, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + }, + { + "type": "node", + "name": "inv *= 2 - denominator * inv", + "source_mapping": { + "start": 3995, + "length": 28, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 92 + ], + "starting_column": 13, + "ending_column": 41 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 741, + "length": 4127, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FullMath", + "source_mapping": { + "start": 354, + "length": 5163, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + } + ], + "description": "FullMath.mulDiv(uint256,uint256,uint256) (lib/v3-core/contracts/libraries/FullMath.sol#14-108) performs a multiplication on the result of a division:\n\t- denominator = denominator / twos (lib/v3-core/contracts/libraries/FullMath.sol#68)\n\t- inv *= 2 - denominator * inv (lib/v3-core/contracts/libraries/FullMath.sol#92)\n", + "markdown": "[FullMath.mulDiv(uint256,uint256,uint256)](lib/v3-core/contracts/libraries/FullMath.sol#L14-L108) performs a multiplication on the result of a division:\n\t- [denominator = denominator / twos](lib/v3-core/contracts/libraries/FullMath.sol#L68)\n\t- [inv *= 2 - denominator * inv](lib/v3-core/contracts/libraries/FullMath.sol#L92)\n", + "first_markdown_element": "lib/v3-core/contracts/libraries/FullMath.sol#L14-L108", + "id": "c0ce32fa53af66ddd6aa23871a339ee9773df422e6ee599a3a5394cf32887501", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + }, + { + "type": "node", + "name": "ratio = (ratio * 0xe7159475a2c29b7443b29c7fa6e889d9) >> 128", + "source_mapping": { + "start": 2820, + "length": 59, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 44 + ], + "starting_column": 39, + "ending_column": 98 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + } + } + }, + { + "type": "node", + "name": "ratio = type()(uint256).max / ratio", + "source_mapping": { + "start": 3696, + "length": 33, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 54 + ], + "starting_column": 27, + "ending_column": 60 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + } + } + } + ], + "description": "TickMath.getSqrtRatioAtTick(int24) (lib/v3-core/contracts/libraries/TickMath.sol#26-61) performs a multiplication on the result of a division:\n\t- ratio = (ratio * 0xe7159475a2c29b7443b29c7fa6e889d9) >> 128 (lib/v3-core/contracts/libraries/TickMath.sol#44)\n\t- ratio = type()(uint256).max / ratio (lib/v3-core/contracts/libraries/TickMath.sol#54)\n", + "markdown": "[TickMath.getSqrtRatioAtTick(int24)](lib/v3-core/contracts/libraries/TickMath.sol#L26-L61) performs a multiplication on the result of a division:\n\t- [ratio = (ratio * 0xe7159475a2c29b7443b29c7fa6e889d9) >> 128](lib/v3-core/contracts/libraries/TickMath.sol#L44)\n\t- [ratio = type()(uint256).max / ratio](lib/v3-core/contracts/libraries/TickMath.sol#L54)\n", + "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L26-L61", + "id": "c7038675fff7d70121645d78c43c65fcb0265d0211269a5f5d8cae28f85688e8", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + }, + { + "type": "node", + "name": "ratio = (ratio * 0xf3392b0822b70005940c7a398e4b70f3) >> 128", + "source_mapping": { + "start": 2721, + "length": 59, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 43 + ], + "starting_column": 39, + "ending_column": 98 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + } + } + }, + { + "type": "node", + "name": "ratio = type()(uint256).max / ratio", + "source_mapping": { + "start": 3696, + "length": 33, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 54 + ], + "starting_column": 27, + "ending_column": 60 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + } + } + } + ], + "description": "TickMath.getSqrtRatioAtTick(int24) (lib/v3-core/contracts/libraries/TickMath.sol#26-61) performs a multiplication on the result of a division:\n\t- ratio = (ratio * 0xf3392b0822b70005940c7a398e4b70f3) >> 128 (lib/v3-core/contracts/libraries/TickMath.sol#43)\n\t- ratio = type()(uint256).max / ratio (lib/v3-core/contracts/libraries/TickMath.sol#54)\n", + "markdown": "[TickMath.getSqrtRatioAtTick(int24)](lib/v3-core/contracts/libraries/TickMath.sol#L26-L61) performs a multiplication on the result of a division:\n\t- [ratio = (ratio * 0xf3392b0822b70005940c7a398e4b70f3) >> 128](lib/v3-core/contracts/libraries/TickMath.sol#L43)\n\t- [ratio = type()(uint256).max / ratio](lib/v3-core/contracts/libraries/TickMath.sol#L54)\n", + "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L26-L61", + "id": "cb6b982337b1749cacc0e54aa2a12b46da2952e9f90b918464706a96e177d317", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 741, + "length": 4127, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FullMath", + "source_mapping": { + "start": 354, + "length": 5163, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + }, + { + "type": "node", + "name": "denominator = denominator / twos", + "source_mapping": { + "start": 2873, + "length": 37, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 68 + ], + "starting_column": 17, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 741, + "length": 4127, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FullMath", + "source_mapping": { + "start": 354, + "length": 5163, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + }, + { + "type": "node", + "name": "inv *= 2 - denominator * inv", + "source_mapping": { + "start": 4246, + "length": 28, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 96 + ], + "starting_column": 13, + "ending_column": 41 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 741, + "length": 4127, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FullMath", + "source_mapping": { + "start": 354, + "length": 5163, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + } + ], + "description": "FullMath.mulDiv(uint256,uint256,uint256) (lib/v3-core/contracts/libraries/FullMath.sol#14-108) performs a multiplication on the result of a division:\n\t- denominator = denominator / twos (lib/v3-core/contracts/libraries/FullMath.sol#68)\n\t- inv *= 2 - denominator * inv (lib/v3-core/contracts/libraries/FullMath.sol#96)\n", + "markdown": "[FullMath.mulDiv(uint256,uint256,uint256)](lib/v3-core/contracts/libraries/FullMath.sol#L14-L108) performs a multiplication on the result of a division:\n\t- [denominator = denominator / twos](lib/v3-core/contracts/libraries/FullMath.sol#L68)\n\t- [inv *= 2 - denominator * inv](lib/v3-core/contracts/libraries/FullMath.sol#L96)\n", + "first_markdown_element": "lib/v3-core/contracts/libraries/FullMath.sol#L14-L108", + "id": "d1dea53850dd9403825e78e37c8a0b863bfe4a7587d2b6caa6f92988c30f6d65", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + }, + { + "type": "node", + "name": "ratio = (ratio * 0x2216e584f5fa1ea926041bedfe98) >> 128", + "source_mapping": { + "start": 3520, + "length": 55, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 51 + ], + "starting_column": 41, + "ending_column": 96 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + } + } + }, + { + "type": "node", + "name": "ratio = type()(uint256).max / ratio", + "source_mapping": { + "start": 3696, + "length": 33, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 54 + ], + "starting_column": 27, + "ending_column": 60 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + } + } + } + ], + "description": "TickMath.getSqrtRatioAtTick(int24) (lib/v3-core/contracts/libraries/TickMath.sol#26-61) performs a multiplication on the result of a division:\n\t- ratio = (ratio * 0x2216e584f5fa1ea926041bedfe98) >> 128 (lib/v3-core/contracts/libraries/TickMath.sol#51)\n\t- ratio = type()(uint256).max / ratio (lib/v3-core/contracts/libraries/TickMath.sol#54)\n", + "markdown": "[TickMath.getSqrtRatioAtTick(int24)](lib/v3-core/contracts/libraries/TickMath.sol#L26-L61) performs a multiplication on the result of a division:\n\t- [ratio = (ratio * 0x2216e584f5fa1ea926041bedfe98) >> 128](lib/v3-core/contracts/libraries/TickMath.sol#L51)\n\t- [ratio = type()(uint256).max / ratio](lib/v3-core/contracts/libraries/TickMath.sol#L54)\n", + "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L26-L61", + "id": "d2ed7da21b17178cd05780daf6db15d5eecc0d32e25943b91c66207f259ed6c1", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 1678, + "length": 3925, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "MathUpgradeable", + "source_mapping": { + "start": 202, + "length": 12313, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + }, + { + "type": "node", + "name": "denominator = denominator / twos", + "source_mapping": { + "start": 3757, + "length": 37, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 102 + ], + "starting_column": 17, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 1678, + "length": 3925, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "MathUpgradeable", + "source_mapping": { + "start": 202, + "length": 12313, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + }, + { + "type": "node", + "name": "inverse *= 2 - denominator * inverse", + "source_mapping": { + "start": 5065, + "length": 36, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 126 + ], + "starting_column": 13, + "ending_column": 49 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 1678, + "length": 3925, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "MathUpgradeable", + "source_mapping": { + "start": 202, + "length": 12313, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + } + ], + "description": "MathUpgradeable.mulDiv(uint256,uint256,uint256) (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#55-135) performs a multiplication on the result of a division:\n\t- denominator = denominator / twos (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#102)\n\t- inverse *= 2 - denominator * inverse (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#126)\n", + "markdown": "[MathUpgradeable.mulDiv(uint256,uint256,uint256)](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L55-L135) performs a multiplication on the result of a division:\n\t- [denominator = denominator / twos](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L102)\n\t- [inverse *= 2 - denominator * inverse](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L126)\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L55-L135", + "id": "d3e6e10c122886674b1e5fd2ce413eb882f00fdadbc0ea78e283dc622c1e9768", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + }, + { + "type": "node", + "name": "ratio = (ratio * 0x70d869a156d2a1b890bb3df62baf32f7) >> 128", + "source_mapping": { + "start": 3120, + "length": 59, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 47 + ], + "starting_column": 40, + "ending_column": 99 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + } + } + }, + { + "type": "node", + "name": "ratio = type()(uint256).max / ratio", + "source_mapping": { + "start": 3696, + "length": 33, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 54 + ], + "starting_column": 27, + "ending_column": 60 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + } + } + } + ], + "description": "TickMath.getSqrtRatioAtTick(int24) (lib/v3-core/contracts/libraries/TickMath.sol#26-61) performs a multiplication on the result of a division:\n\t- ratio = (ratio * 0x70d869a156d2a1b890bb3df62baf32f7) >> 128 (lib/v3-core/contracts/libraries/TickMath.sol#47)\n\t- ratio = type()(uint256).max / ratio (lib/v3-core/contracts/libraries/TickMath.sol#54)\n", + "markdown": "[TickMath.getSqrtRatioAtTick(int24)](lib/v3-core/contracts/libraries/TickMath.sol#L26-L61) performs a multiplication on the result of a division:\n\t- [ratio = (ratio * 0x70d869a156d2a1b890bb3df62baf32f7) >> 128](lib/v3-core/contracts/libraries/TickMath.sol#L47)\n\t- [ratio = type()(uint256).max / ratio](lib/v3-core/contracts/libraries/TickMath.sol#L54)\n", + "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L26-L61", + "id": "da6dbcc8d396a8ea28bf63c4bac1f6e08ad3a685e6fc8a653d02f87b541253e3", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 1678, + "length": 3925, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "MathUpgradeable", + "source_mapping": { + "start": 202, + "length": 12313, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + }, + { + "type": "node", + "name": "denominator = denominator / twos", + "source_mapping": { + "start": 3757, + "length": 37, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 102 + ], + "starting_column": 17, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 1678, + "length": 3925, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "MathUpgradeable", + "source_mapping": { + "start": 202, + "length": 12313, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + }, + { + "type": "node", + "name": "inverse = (3 * denominator) ^ 2", + "source_mapping": { + "start": 4459, + "length": 39, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 117 + ], + "starting_column": 13, + "ending_column": 52 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 1678, + "length": 3925, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "MathUpgradeable", + "source_mapping": { + "start": 202, + "length": 12313, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + } + ], + "description": "MathUpgradeable.mulDiv(uint256,uint256,uint256) (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#55-135) performs a multiplication on the result of a division:\n\t- denominator = denominator / twos (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#102)\n\t- inverse = (3 * denominator) ^ 2 (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#117)\n", + "markdown": "[MathUpgradeable.mulDiv(uint256,uint256,uint256)](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L55-L135) performs a multiplication on the result of a division:\n\t- [denominator = denominator / twos](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L102)\n\t- [inverse = (3 * denominator) ^ 2](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L117)\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L55-L135", + "id": "dafd46d4f8c4625c4f3a256e1ea93a0fee8d450f2b6dead5825ba39094f116c8", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + }, + { + "type": "node", + "name": "ratio = (ratio * 0xd097f3bdfd2022b8845ad8f792aa5825) >> 128", + "source_mapping": { + "start": 2920, + "length": 59, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 45 + ], + "starting_column": 40, + "ending_column": 99 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + } + } + }, + { + "type": "node", + "name": "ratio = type()(uint256).max / ratio", + "source_mapping": { + "start": 3696, + "length": 33, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 54 + ], + "starting_column": 27, + "ending_column": 60 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + } + } + } + ], + "description": "TickMath.getSqrtRatioAtTick(int24) (lib/v3-core/contracts/libraries/TickMath.sol#26-61) performs a multiplication on the result of a division:\n\t- ratio = (ratio * 0xd097f3bdfd2022b8845ad8f792aa5825) >> 128 (lib/v3-core/contracts/libraries/TickMath.sol#45)\n\t- ratio = type()(uint256).max / ratio (lib/v3-core/contracts/libraries/TickMath.sol#54)\n", + "markdown": "[TickMath.getSqrtRatioAtTick(int24)](lib/v3-core/contracts/libraries/TickMath.sol#L26-L61) performs a multiplication on the result of a division:\n\t- [ratio = (ratio * 0xd097f3bdfd2022b8845ad8f792aa5825) >> 128](lib/v3-core/contracts/libraries/TickMath.sol#L45)\n\t- [ratio = type()(uint256).max / ratio](lib/v3-core/contracts/libraries/TickMath.sol#L54)\n", + "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L26-L61", + "id": "e426a7f18a2489b8e0f9cfe771bcab135619bec93fef6dd0e19f27e2e7d1464f", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + }, + { + "type": "node", + "name": "ratio = (ratio * 0xfcbe86c7900a88aedcffc83b479aa3a4) >> 128", + "source_mapping": { + "start": 2523, + "length": 59, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 41 + ], + "starting_column": 39, + "ending_column": 98 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + } + } + }, + { + "type": "node", + "name": "ratio = type()(uint256).max / ratio", + "source_mapping": { + "start": 3696, + "length": 33, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 54 + ], + "starting_column": 27, + "ending_column": 60 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + } + } + } + ], + "description": "TickMath.getSqrtRatioAtTick(int24) (lib/v3-core/contracts/libraries/TickMath.sol#26-61) performs a multiplication on the result of a division:\n\t- ratio = (ratio * 0xfcbe86c7900a88aedcffc83b479aa3a4) >> 128 (lib/v3-core/contracts/libraries/TickMath.sol#41)\n\t- ratio = type()(uint256).max / ratio (lib/v3-core/contracts/libraries/TickMath.sol#54)\n", + "markdown": "[TickMath.getSqrtRatioAtTick(int24)](lib/v3-core/contracts/libraries/TickMath.sol#L26-L61) performs a multiplication on the result of a division:\n\t- [ratio = (ratio * 0xfcbe86c7900a88aedcffc83b479aa3a4) >> 128](lib/v3-core/contracts/libraries/TickMath.sol#L41)\n\t- [ratio = type()(uint256).max / ratio](lib/v3-core/contracts/libraries/TickMath.sol#L54)\n", + "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L26-L61", + "id": "e88cd4d371f5afbf49191d8304a8f6d8ad7f24d19ebcdcf46e6f324c2ffb1c7a", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + }, + { + "type": "node", + "name": "ratio = (ratio * 0x9aa508b5b7a84e1c677de54f3e99bc9) >> 128", + "source_mapping": { + "start": 3321, + "length": 58, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 49 + ], + "starting_column": 41, + "ending_column": 99 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + } + } + }, + { + "type": "node", + "name": "ratio = type()(uint256).max / ratio", + "source_mapping": { + "start": 3696, + "length": 33, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 54 + ], + "starting_column": 27, + "ending_column": 60 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + } + } + } + ], + "description": "TickMath.getSqrtRatioAtTick(int24) (lib/v3-core/contracts/libraries/TickMath.sol#26-61) performs a multiplication on the result of a division:\n\t- ratio = (ratio * 0x9aa508b5b7a84e1c677de54f3e99bc9) >> 128 (lib/v3-core/contracts/libraries/TickMath.sol#49)\n\t- ratio = type()(uint256).max / ratio (lib/v3-core/contracts/libraries/TickMath.sol#54)\n", + "markdown": "[TickMath.getSqrtRatioAtTick(int24)](lib/v3-core/contracts/libraries/TickMath.sol#L26-L61) performs a multiplication on the result of a division:\n\t- [ratio = (ratio * 0x9aa508b5b7a84e1c677de54f3e99bc9) >> 128](lib/v3-core/contracts/libraries/TickMath.sol#L49)\n\t- [ratio = type()(uint256).max / ratio](lib/v3-core/contracts/libraries/TickMath.sol#L54)\n", + "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L26-L61", + "id": "f64d093eb85f9a8f731041983d2bb0bf07289d63f153e7b794e434881e924193", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + }, + { + "type": "node", + "name": "ratio = (ratio * 0xff973b41fa98c081472e6896dfb254c0) >> 128", + "source_mapping": { + "start": 2228, + "length": 59, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 38 + ], + "starting_column": 38, + "ending_column": 97 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + } + } + }, + { + "type": "node", + "name": "ratio = type()(uint256).max / ratio", + "source_mapping": { + "start": 3696, + "length": 33, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 54 + ], + "starting_column": 27, + "ending_column": 60 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + } + } + } + ], + "description": "TickMath.getSqrtRatioAtTick(int24) (lib/v3-core/contracts/libraries/TickMath.sol#26-61) performs a multiplication on the result of a division:\n\t- ratio = (ratio * 0xff973b41fa98c081472e6896dfb254c0) >> 128 (lib/v3-core/contracts/libraries/TickMath.sol#38)\n\t- ratio = type()(uint256).max / ratio (lib/v3-core/contracts/libraries/TickMath.sol#54)\n", + "markdown": "[TickMath.getSqrtRatioAtTick(int24)](lib/v3-core/contracts/libraries/TickMath.sol#L26-L61) performs a multiplication on the result of a division:\n\t- [ratio = (ratio * 0xff973b41fa98c081472e6896dfb254c0) >> 128](lib/v3-core/contracts/libraries/TickMath.sol#L38)\n\t- [ratio = type()(uint256).max / ratio](lib/v3-core/contracts/libraries/TickMath.sol#L54)\n", + "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L26-L61", + "id": "f69dca7a8c89e196d377b110003ab7978a3e4c70f8beb0f4a5f5ab9b6e6e9253", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 741, + "length": 4127, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FullMath", + "source_mapping": { + "start": 354, + "length": 5163, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + }, + { + "type": "node", + "name": "denominator = denominator / twos", + "source_mapping": { + "start": 2873, + "length": 37, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 68 + ], + "starting_column": 17, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 741, + "length": 4127, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FullMath", + "source_mapping": { + "start": 354, + "length": 5163, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + }, + { + "type": "node", + "name": "inv *= 2 - denominator * inv", + "source_mapping": { + "start": 4057, + "length": 28, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 93 + ], + "starting_column": 13, + "ending_column": 41 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 741, + "length": 4127, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FullMath", + "source_mapping": { + "start": 354, + "length": 5163, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + } + ], + "description": "FullMath.mulDiv(uint256,uint256,uint256) (lib/v3-core/contracts/libraries/FullMath.sol#14-108) performs a multiplication on the result of a division:\n\t- denominator = denominator / twos (lib/v3-core/contracts/libraries/FullMath.sol#68)\n\t- inv *= 2 - denominator * inv (lib/v3-core/contracts/libraries/FullMath.sol#93)\n", + "markdown": "[FullMath.mulDiv(uint256,uint256,uint256)](lib/v3-core/contracts/libraries/FullMath.sol#L14-L108) performs a multiplication on the result of a division:\n\t- [denominator = denominator / twos](lib/v3-core/contracts/libraries/FullMath.sol#L68)\n\t- [inv *= 2 - denominator * inv](lib/v3-core/contracts/libraries/FullMath.sol#L93)\n", + "first_markdown_element": "lib/v3-core/contracts/libraries/FullMath.sol#L14-L108", + "id": "fc5782d775af920a34f30dc7ed31f6d5a4bbf29cb1109a6103908410aba5b1de", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_zap", + "source_mapping": { + "start": 6830, + "length": 2292, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_zap(address,uint256,address,DiscountExerciseParams)" + } + }, + { + "type": "node", + "name": "paymentToken.balanceOf(feeRecipients[0]) == 0 || paymentToken.balanceOf(feeRecipients[1]) == 0", + "source_mapping": { + "start": 8678, + "length": 94, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 221 + ], + "starting_column": 17, + "ending_column": 111 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_zap", + "source_mapping": { + "start": 6830, + "length": 2292, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_zap(address,uint256,address,DiscountExerciseParams)" + } + } + } + } + ], + "description": "DiscountExercise._zap(address,uint256,address,DiscountExerciseParams) (src/exercise/DiscountExercise.sol#192-231) uses a dangerous strict equality:\n\t- paymentToken.balanceOf(feeRecipients[0]) == 0 || paymentToken.balanceOf(feeRecipients[1]) == 0 (src/exercise/DiscountExercise.sol#221)\n", + "markdown": "[DiscountExercise._zap(address,uint256,address,DiscountExerciseParams)](src/exercise/DiscountExercise.sol#L192-L231) uses a dangerous strict equality:\n\t- [paymentToken.balanceOf(feeRecipients[0]) == 0 || paymentToken.balanceOf(feeRecipients[1]) == 0](src/exercise/DiscountExercise.sol#L221)\n", + "first_markdown_element": "src/exercise/DiscountExercise.sol#L192-L231", + "id": "5a880060efcc31cb1efa41190002e874acfb1476c6f4163acb1fb73776ec92a2", + "check": "incorrect-equality", + "impact": "Medium", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "_swapUniV3", + "source_mapping": { + "start": 1138, + "length": 1499, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "UniV3Mixin", + "source_mapping": { + "start": 269, + "length": 4771, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapUniV3(UniV3Mixin.Params__swapUniV3)" + } + }, + { + "type": "node", + "name": "_params.from == _params.to || _params.amount == 0", + "source_mapping": { + "start": 1243, + "length": 49, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 39 + ], + "starting_column": 13, + "ending_column": 62 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapUniV3", + "source_mapping": { + "start": 1138, + "length": 1499, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "UniV3Mixin", + "source_mapping": { + "start": 269, + "length": 4771, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapUniV3(UniV3Mixin.Params__swapUniV3)" + } + } + } + } + ], + "description": "UniV3Mixin._swapUniV3(UniV3Mixin.Params__swapUniV3) (lib/vault-v2/src/mixins/UniV3Mixin.sol#38-69) uses a dangerous strict equality:\n\t- _params.from == _params.to || _params.amount == 0 (lib/vault-v2/src/mixins/UniV3Mixin.sol#39)\n", + "markdown": "[UniV3Mixin._swapUniV3(UniV3Mixin.Params__swapUniV3)](lib/vault-v2/src/mixins/UniV3Mixin.sol#L38-L69) uses a dangerous strict equality:\n\t- [_params.from == _params.to || _params.amount == 0](lib/vault-v2/src/mixins/UniV3Mixin.sol#L39)\n", + "first_markdown_element": "lib/vault-v2/src/mixins/UniV3Mixin.sol#L38-L69", + "id": "fc396b078296f5d4c0c3927e14de36cf6a3ad91f938e9e10d2e8fa0e437962fc", + "check": "incorrect-equality", + "impact": "Medium", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "_zap", + "source_mapping": { + "start": 6830, + "length": 2292, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_zap(address,uint256,address,DiscountExerciseParams)" + } + }, + { + "type": "node", + "name": "underlyingToken.approve(swapProps.swapper,feeAmount)", + "source_mapping": { + "start": 8058, + "length": 53, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 213 + ], + "starting_column": 13, + "ending_column": 66 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_zap", + "source_mapping": { + "start": 6830, + "length": 2292, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_zap(address,uint256,address,DiscountExerciseParams)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "_generalSwap(swapProps.exchangeTypes,address(underlyingToken),address(paymentToken),feeAmount,minAmountOut,swapProps.exchangeAddress)", + "source_mapping": { + "start": 8277, + "length": 138, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 216 + ], + "starting_column": 13, + "ending_column": 151 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_zap", + "source_mapping": { + "start": 6830, + "length": 2292, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_zap(address,uint256,address,DiscountExerciseParams)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "_swapper.swapUniV2(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)", + "source_mapping": { + "start": 2488, + "length": 80, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 75 + ], + "starting_column": 13, + "ending_column": 93 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_generalSwap", + "source_mapping": { + "start": 2091, + "length": 1014, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "SwapHelper", + "source_mapping": { + "start": 514, + "length": 3269, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_generalSwap(ExchangeType,address,address,uint256,uint256,address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "_swapper.swapBal(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)", + "source_mapping": { + "start": 2631, + "length": 78, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 77 + ], + "starting_column": 13, + "ending_column": 91 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_generalSwap", + "source_mapping": { + "start": 2091, + "length": 1014, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "SwapHelper", + "source_mapping": { + "start": 514, + "length": 3269, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_generalSwap(ExchangeType,address,address,uint256,uint256,address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "_swapper.swapVelo(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)", + "source_mapping": { + "start": 2778, + "length": 79, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 79 + ], + "starting_column": 13, + "ending_column": 92 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_generalSwap", + "source_mapping": { + "start": 2091, + "length": 1014, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "SwapHelper", + "source_mapping": { + "start": 514, + "length": 3269, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_generalSwap(ExchangeType,address,address,uint256,uint256,address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "_swapper.swapUniV3(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)", + "source_mapping": { + "start": 2922, + "length": 80, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 81 + ], + "starting_column": 13, + "ending_column": 93 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_generalSwap", + "source_mapping": { + "start": 2091, + "length": 1014, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "SwapHelper", + "source_mapping": { + "start": 514, + "length": 3269, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_generalSwap(ExchangeType,address,address,uint256,uint256,address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "feeAmount = 0", + "source_mapping": { + "start": 8429, + "length": 13, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 217 + ], + "starting_column": 13, + "ending_column": 26 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_zap", + "source_mapping": { + "start": 6830, + "length": 2292, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_zap(address,uint256,address,DiscountExerciseParams)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "feeAmount" + } + } + ], + "description": "Reentrancy in DiscountExercise._zap(address,uint256,address,DiscountExerciseParams) (src/exercise/DiscountExercise.sol#192-231):\n\tExternal calls:\n\t- underlyingToken.approve(swapProps.swapper,feeAmount) (src/exercise/DiscountExercise.sol#213)\n\t- _generalSwap(swapProps.exchangeTypes,address(underlyingToken),address(paymentToken),feeAmount,minAmountOut,swapProps.exchangeAddress) (src/exercise/DiscountExercise.sol#216)\n\t\t- _swapper.swapUniV2(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress) (src/helpers/SwapHelper.sol#75)\n\t\t- _swapper.swapBal(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress) (src/helpers/SwapHelper.sol#77)\n\t\t- _swapper.swapVelo(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress) (src/helpers/SwapHelper.sol#79)\n\t\t- _swapper.swapUniV3(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress) (src/helpers/SwapHelper.sol#81)\n\tState variables written after the call(s):\n\t- feeAmount = 0 (src/exercise/DiscountExercise.sol#217)\n\tDiscountExercise.feeAmount (src/exercise/DiscountExercise.sol#75) can be used in cross function reentrancies:\n\t- DiscountExercise._zap(address,uint256,address,DiscountExerciseParams) (src/exercise/DiscountExercise.sol#192-231)\n", + "markdown": "Reentrancy in [DiscountExercise._zap(address,uint256,address,DiscountExerciseParams)](src/exercise/DiscountExercise.sol#L192-L231):\n\tExternal calls:\n\t- [underlyingToken.approve(swapProps.swapper,feeAmount)](src/exercise/DiscountExercise.sol#L213)\n\t- [_generalSwap(swapProps.exchangeTypes,address(underlyingToken),address(paymentToken),feeAmount,minAmountOut,swapProps.exchangeAddress)](src/exercise/DiscountExercise.sol#L216)\n\t\t- [_swapper.swapUniV2(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L75)\n\t\t- [_swapper.swapBal(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L77)\n\t\t- [_swapper.swapVelo(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L79)\n\t\t- [_swapper.swapUniV3(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L81)\n\tState variables written after the call(s):\n\t- [feeAmount = 0](src/exercise/DiscountExercise.sol#L217)\n\t[DiscountExercise.feeAmount](src/exercise/DiscountExercise.sol#L75) can be used in cross function reentrancies:\n\t- [DiscountExercise._zap(address,uint256,address,DiscountExerciseParams)](src/exercise/DiscountExercise.sol#L192-L231)\n", + "first_markdown_element": "src/exercise/DiscountExercise.sol#L192-L231", + "id": "a3da78c5bd6d087b6122e2bce93b85b2799e2ef18234c8a2ad47ba8fa7e94f24", + "check": "reentrancy-no-eth", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "variable", + "name": "price", + "source_mapping": { + "start": 17664, + "length": 13, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 438 + ], + "starting_column": 9, + "ending_column": 22 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_scaleChainlinkPriceByDigits", + "source_mapping": { + "start": 17460, + "length": 642, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_scaleChainlinkPriceByDigits(uint256,uint256)" + } + } + } + } + ], + "description": "ReaperSwapper._scaleChainlinkPriceByDigits(uint256,uint256).price (lib/vault-v2/src/ReaperSwapper.sol#438) is a local variable never initialized\n", + "markdown": "[ReaperSwapper._scaleChainlinkPriceByDigits(uint256,uint256).price](lib/vault-v2/src/ReaperSwapper.sol#L438) is a local variable never initialized\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L438", + "id": "27cbde03367f30635d8b77371e7fe0b61d5b5de3c5ad430c3fe3e8002aed8a7d", + "check": "uninitialized-local", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "variable", + "name": "tokenInFound", + "source_mapping": { + "start": 3290, + "length": 17, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 83 + ], + "starting_column": 9, + "ending_column": 26 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_updateBalSwapPoolID", + "source_mapping": { + "start": 2960, + "length": 817, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BalMixin", + "source_mapping": { + "start": 307, + "length": 3662, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_updateBalSwapPoolID(address,address,address,bytes32)" + } + } + } + } + ], + "description": "BalMixin._updateBalSwapPoolID(address,address,address,bytes32).tokenInFound (lib/vault-v2/src/mixins/BalMixin.sol#83) is a local variable never initialized\n", + "markdown": "[BalMixin._updateBalSwapPoolID(address,address,address,bytes32).tokenInFound](lib/vault-v2/src/mixins/BalMixin.sol#L83) is a local variable never initialized\n", + "first_markdown_element": "lib/vault-v2/src/mixins/BalMixin.sol#L83", + "id": "48805492cb64113a3a35ed5ba8c0a2076b664bcd2d067470ba0a3252ebba42b4", + "check": "uninitialized-local", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "variable", + "name": "funds", + "source_mapping": { + "start": 1661, + "length": 38, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 49 + ], + "starting_column": 9, + "ending_column": 47 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapBal", + "source_mapping": { + "start": 895, + "length": 1974, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BalMixin", + "source_mapping": { + "start": 307, + "length": 3662, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapBal(address,address,uint256,uint256,address,uint256,bool)" + } + } + } + } + ], + "description": "BalMixin._swapBal(address,address,uint256,uint256,address,uint256,bool).funds (lib/vault-v2/src/mixins/BalMixin.sol#49) is a local variable never initialized\n", + "markdown": "[BalMixin._swapBal(address,address,uint256,uint256,address,uint256,bool).funds](lib/vault-v2/src/mixins/BalMixin.sol#L49) is a local variable never initialized\n", + "first_markdown_element": "lib/vault-v2/src/mixins/BalMixin.sol#L49", + "id": "4c14c7b594bf15697ba30539c9ac4c614c10333e52070092d201336e75377b3e", + "check": "uninitialized-local", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "variable", + "name": "singleSwap", + "source_mapping": { + "start": 1350, + "length": 39, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 41 + ], + "starting_column": 9, + "ending_column": 48 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapBal", + "source_mapping": { + "start": 895, + "length": 1974, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BalMixin", + "source_mapping": { + "start": 307, + "length": 3662, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapBal(address,address,uint256,uint256,address,uint256,bool)" + } + } + } + } + ], + "description": "BalMixin._swapBal(address,address,uint256,uint256,address,uint256,bool).singleSwap (lib/vault-v2/src/mixins/BalMixin.sol#41) is a local variable never initialized\n", + "markdown": "[BalMixin._swapBal(address,address,uint256,uint256,address,uint256,bool).singleSwap](lib/vault-v2/src/mixins/BalMixin.sol#L41) is a local variable never initialized\n", + "first_markdown_element": "lib/vault-v2/src/mixins/BalMixin.sol#L41", + "id": "509fe1a6ba376f87af1d863abc8d6ee153c0a98eb4717a73f4e55d593f047ad6", + "check": "uninitialized-local", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "variable", + "name": "predictedOutput", + "source_mapping": { + "start": 1332, + "length": 23, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 39 + ], + "starting_column": 9, + "ending_column": 32 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapVelo", + "source_mapping": { + "start": 862, + "length": 1768, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "VeloSolidMixin", + "source_mapping": { + "start": 313, + "length": 4635, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapVelo(address,address,uint256,uint256,address,uint256,bool)" + } + } + } + } + ], + "description": "VeloSolidMixin._swapVelo(address,address,uint256,uint256,address,uint256,bool).predictedOutput (lib/vault-v2/src/mixins/VeloSolidMixin.sol#39) is a local variable never initialized\n", + "markdown": "[VeloSolidMixin._swapVelo(address,address,uint256,uint256,address,uint256,bool).predictedOutput](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L39) is a local variable never initialized\n", + "first_markdown_element": "lib/vault-v2/src/mixins/VeloSolidMixin.sol#L39", + "id": "938d047c5ec8d17161f658c71b9aa0d91ba330139bbace224c8a03181655b082", + "check": "uninitialized-local", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "variable", + "name": "tokenOutFound", + "source_mapping": { + "start": 3317, + "length": 18, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 84 + ], + "starting_column": 9, + "ending_column": 27 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_updateBalSwapPoolID", + "source_mapping": { + "start": 2960, + "length": 817, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BalMixin", + "source_mapping": { + "start": 307, + "length": 3662, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_updateBalSwapPoolID(address,address,address,bytes32)" + } + } + } + } + ], + "description": "BalMixin._updateBalSwapPoolID(address,address,address,bytes32).tokenOutFound (lib/vault-v2/src/mixins/BalMixin.sol#84) is a local variable never initialized\n", + "markdown": "[BalMixin._updateBalSwapPoolID(address,address,address,bytes32).tokenOutFound](lib/vault-v2/src/mixins/BalMixin.sol#L84) is a local variable never initialized\n", + "first_markdown_element": "lib/vault-v2/src/mixins/BalMixin.sol#L84", + "id": "c74cd6285af530132a8fd4c04509ac76724208d2ddf2f11af35efb8fcc996c55", + "check": "uninitialized-local", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_revokeRole", + "source_mapping": { + "start": 2572, + "length": 171, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "is_dependency": true, + "lines": [ + 66, + 67, + 68, + 69 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AccessControlEnumerableUpgradeable", + "source_mapping": { + "start": 431, + "length": 2605, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "is_dependency": true, + "lines": [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_revokeRole(bytes32,address)" + } + }, + { + "type": "node", + "name": "_roleMembers[role].remove(account)", + "source_mapping": { + "start": 2702, + "length": 34, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "is_dependency": true, + "lines": [ + 68 + ], + "starting_column": 9, + "ending_column": 43 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_revokeRole", + "source_mapping": { + "start": 2572, + "length": 171, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "is_dependency": true, + "lines": [ + 66, + 67, + 68, + 69 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AccessControlEnumerableUpgradeable", + "source_mapping": { + "start": 431, + "length": 2605, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "is_dependency": true, + "lines": [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_revokeRole(bytes32,address)" + } + } + } + } + ], + "description": "AccessControlEnumerableUpgradeable._revokeRole(bytes32,address) (lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#66-69) ignores return value by _roleMembers[role].remove(account) (lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#68)\n", + "markdown": "[AccessControlEnumerableUpgradeable._revokeRole(bytes32,address)](lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#L66-L69) ignores return value by [_roleMembers[role].remove(account)](lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#L68)\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#L66-L69", + "id": "076f76790b4c8e077be1617bcc82f2d4381a7a10e8cf41bc646d5208e1b6869d", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "getPrice", + "source_mapping": { + "start": 3653, + "length": 2015, + "filename_relative": "src/oracles/UniswapV3Oracle.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/UniswapV3Oracle.sol", + "filename_short": "src/oracles/UniswapV3Oracle.sol", + "is_dependency": false, + "lines": [ + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "UniswapV3Oracle", + "source_mapping": { + "start": 729, + "length": 6210, + "filename_relative": "src/oracles/UniswapV3Oracle.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/UniswapV3Oracle.sol", + "filename_short": "src/oracles/UniswapV3Oracle.sol", + "is_dependency": false, + "lines": [ + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getPrice()" + } + }, + { + "type": "node", + "name": "(tickCumulatives,None) = uniswapPool.observe(secondsAgo)", + "source_mapping": { + "start": 4489, + "length": 67, + "filename_relative": "src/oracles/UniswapV3Oracle.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/UniswapV3Oracle.sol", + "filename_short": "src/oracles/UniswapV3Oracle.sol", + "is_dependency": false, + "lines": [ + 107 + ], + "starting_column": 13, + "ending_column": 80 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getPrice", + "source_mapping": { + "start": 3653, + "length": 2015, + "filename_relative": "src/oracles/UniswapV3Oracle.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/UniswapV3Oracle.sol", + "filename_short": "src/oracles/UniswapV3Oracle.sol", + "is_dependency": false, + "lines": [ + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "UniswapV3Oracle", + "source_mapping": { + "start": 729, + "length": 6210, + "filename_relative": "src/oracles/UniswapV3Oracle.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/UniswapV3Oracle.sol", + "filename_short": "src/oracles/UniswapV3Oracle.sol", + "is_dependency": false, + "lines": [ + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getPrice()" + } + } + } + } + ], + "description": "UniswapV3Oracle.getPrice() (src/oracles/UniswapV3Oracle.sol#88-127) ignores return value by (tickCumulatives,None) = uniswapPool.observe(secondsAgo) (src/oracles/UniswapV3Oracle.sol#107)\n", + "markdown": "[UniswapV3Oracle.getPrice()](src/oracles/UniswapV3Oracle.sol#L88-L127) ignores return value by [(tickCumulatives,None) = uniswapPool.observe(secondsAgo)](src/oracles/UniswapV3Oracle.sol#L107)\n", + "first_markdown_element": "src/oracles/UniswapV3Oracle.sol#L88-L127", + "id": "15eb9ed8c87b71a5d2ecedd3aa7b4a47cffcd9c5e79ee7bd0e04e3b4eaa86f54", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_updateBalSwapPoolID", + "source_mapping": { + "start": 2960, + "length": 817, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BalMixin", + "source_mapping": { + "start": 307, + "length": 3662, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_updateBalSwapPoolID(address,address,address,bytes32)" + } + }, + { + "type": "node", + "name": "(poolTokens,None,None) = IBeetVault(_vault).getPoolTokens(_poolID)", + "source_mapping": { + "start": 3222, + "length": 58, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 82 + ], + "starting_column": 9, + "ending_column": 67 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_updateBalSwapPoolID", + "source_mapping": { + "start": 2960, + "length": 817, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BalMixin", + "source_mapping": { + "start": 307, + "length": 3662, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_updateBalSwapPoolID(address,address,address,bytes32)" + } + } + } + } + ], + "description": "BalMixin._updateBalSwapPoolID(address,address,address,bytes32) (lib/vault-v2/src/mixins/BalMixin.sol#79-94) ignores return value by (poolTokens,None,None) = IBeetVault(_vault).getPoolTokens(_poolID) (lib/vault-v2/src/mixins/BalMixin.sol#82)\n", + "markdown": "[BalMixin._updateBalSwapPoolID(address,address,address,bytes32)](lib/vault-v2/src/mixins/BalMixin.sol#L79-L94) ignores return value by [(poolTokens,None,None) = IBeetVault(_vault).getPoolTokens(_poolID)](lib/vault-v2/src/mixins/BalMixin.sol#L82)\n", + "first_markdown_element": "lib/vault-v2/src/mixins/BalMixin.sol#L79-L94", + "id": "22489e462e2576b06930c1d8cbfbae2e2b553f01d03f9ecb4dda6fe8f67db3c9", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_getCurrentChainlinkResponse", + "source_mapping": { + "start": 13273, + "length": 1334, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_getCurrentChainlinkResponse(address)" + } + }, + { + "type": "node", + "name": "(roundId,answer,timestamp) = aggregatorData[_token].aggregator.latestRoundData()", + "source_mapping": { + "start": 13924, + "length": 677, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372 + ], + "starting_column": 9, + "ending_column": 10 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_getCurrentChainlinkResponse", + "source_mapping": { + "start": 13273, + "length": 1334, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_getCurrentChainlinkResponse(address)" + } + } + } + } + ], + "description": "ReaperSwapper._getCurrentChainlinkResponse(address) (lib/vault-v2/src/ReaperSwapper.sol#345-373) ignores return value by (roundId,answer,timestamp) = aggregatorData[_token].aggregator.latestRoundData() (lib/vault-v2/src/ReaperSwapper.sol#360-372)\n", + "markdown": "[ReaperSwapper._getCurrentChainlinkResponse(address)](lib/vault-v2/src/ReaperSwapper.sol#L345-L373) ignores return value by [(roundId,answer,timestamp) = aggregatorData[_token].aggregator.latestRoundData()](lib/vault-v2/src/ReaperSwapper.sol#L360-L372)\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L345-L373", + "id": "30b0452c36c12660b86348533df68749bf1fea5021fb22dbd899a99575905585", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_getPrevChainlinkResponse", + "source_mapping": { + "start": 14613, + "length": 1317, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_getPrevChainlinkResponse(address,uint80,uint8)" + } + }, + { + "type": "node", + "name": "(roundId,answer,timestamp) = aggregatorData[_token].aggregator.getRoundData(_currentRoundId - 1)", + "source_mapping": { + "start": 15144, + "length": 780, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399 + ], + "starting_column": 9, + "ending_column": 10 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_getPrevChainlinkResponse", + "source_mapping": { + "start": 14613, + "length": 1317, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_getPrevChainlinkResponse(address,uint80,uint8)" + } + } + } + } + ], + "description": "ReaperSwapper._getPrevChainlinkResponse(address,uint80,uint8) (lib/vault-v2/src/ReaperSwapper.sol#375-400) ignores return value by (roundId,answer,timestamp) = aggregatorData[_token].aggregator.getRoundData(_currentRoundId - 1) (lib/vault-v2/src/ReaperSwapper.sol#386-399)\n", + "markdown": "[ReaperSwapper._getPrevChainlinkResponse(address,uint80,uint8)](lib/vault-v2/src/ReaperSwapper.sol#L375-L400) ignores return value by [(roundId,answer,timestamp) = aggregatorData[_token].aggregator.getRoundData(_currentRoundId - 1)](lib/vault-v2/src/ReaperSwapper.sol#L386-L399)\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L375-L400", + "id": "3fb1d4622d7ea931b3c26311ca8702c2ec8cb0af6eb5ecafd74d274ba139f513", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_grantRole", + "source_mapping": { + "start": 2317, + "length": 166, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "is_dependency": true, + "lines": [ + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AccessControlEnumerableUpgradeable", + "source_mapping": { + "start": 431, + "length": 2605, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "is_dependency": true, + "lines": [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_grantRole(bytes32,address)" + } + }, + { + "type": "node", + "name": "_roleMembers[role].add(account)", + "source_mapping": { + "start": 2445, + "length": 31, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "is_dependency": true, + "lines": [ + 60 + ], + "starting_column": 9, + "ending_column": 40 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_grantRole", + "source_mapping": { + "start": 2317, + "length": 166, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "is_dependency": true, + "lines": [ + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AccessControlEnumerableUpgradeable", + "source_mapping": { + "start": 431, + "length": 2605, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "is_dependency": true, + "lines": [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_grantRole(bytes32,address)" + } + } + } + } + ], + "description": "AccessControlEnumerableUpgradeable._grantRole(bytes32,address) (lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#58-61) ignores return value by _roleMembers[role].add(account) (lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#60)\n", + "markdown": "[AccessControlEnumerableUpgradeable._grantRole(bytes32,address)](lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#L58-L61) ignores return value by [_roleMembers[role].add(account)](lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#L60)\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#L58-L61", + "id": "620dfa605cb7ea36269a8d3b9fa9056080aa44ef8b103b528893398de697d7d3", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_zap", + "source_mapping": { + "start": 6830, + "length": 2292, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_zap(address,uint256,address,DiscountExerciseParams)" + } + }, + { + "type": "node", + "name": "underlyingToken.approve(swapProps.swapper,feeAmount)", + "source_mapping": { + "start": 8058, + "length": 53, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 213 + ], + "starting_column": 13, + "ending_column": 66 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_zap", + "source_mapping": { + "start": 6830, + "length": 2292, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_zap(address,uint256,address,DiscountExerciseParams)" + } + } + } + } + ], + "description": "DiscountExercise._zap(address,uint256,address,DiscountExerciseParams) (src/exercise/DiscountExercise.sol#192-231) ignores return value by underlyingToken.approve(swapProps.swapper,feeAmount) (src/exercise/DiscountExercise.sol#213)\n", + "markdown": "[DiscountExercise._zap(address,uint256,address,DiscountExerciseParams)](src/exercise/DiscountExercise.sol#L192-L231) ignores return value by [underlyingToken.approve(swapProps.swapper,feeAmount)](src/exercise/DiscountExercise.sol#L213)\n", + "first_markdown_element": "src/exercise/DiscountExercise.sol#L192-L231", + "id": "684b7ed11ac84490d20969fb21d74aa2d08d45cf6922ba41e4132debc88f1a3e", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "constructor", + "source_mapping": { + "start": 3156, + "length": 831, + "filename_relative": "src/oracles/BalancerOracle.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/BalancerOracle.sol", + "filename_short": "src/oracles/BalancerOracle.sol", + "is_dependency": false, + "lines": [ + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BalancerOracle", + "source_mapping": { + "start": 892, + "length": 6454, + "filename_relative": "src/oracles/BalancerOracle.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/BalancerOracle.sol", + "filename_short": "src/oracles/BalancerOracle.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "constructor(IBalancerTwapOracle,address,address,uint56,uint56,uint128)" + } + }, + { + "type": "node", + "name": "(poolTokens,None,None) = vault.getPoolTokens(balancerTwapOracle_.getPoolId())", + "source_mapping": { + "start": 3415, + "length": 86, + "filename_relative": "src/oracles/BalancerOracle.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/BalancerOracle.sol", + "filename_short": "src/oracles/BalancerOracle.sol", + "is_dependency": false, + "lines": [ + 78 + ], + "starting_column": 9, + "ending_column": 95 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "constructor", + "source_mapping": { + "start": 3156, + "length": 831, + "filename_relative": "src/oracles/BalancerOracle.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/BalancerOracle.sol", + "filename_short": "src/oracles/BalancerOracle.sol", + "is_dependency": false, + "lines": [ + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BalancerOracle", + "source_mapping": { + "start": 892, + "length": 6454, + "filename_relative": "src/oracles/BalancerOracle.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/BalancerOracle.sol", + "filename_short": "src/oracles/BalancerOracle.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "constructor(IBalancerTwapOracle,address,address,uint56,uint56,uint128)" + } + } + } + } + ], + "description": "BalancerOracle.constructor(IBalancerTwapOracle,address,address,uint56,uint56,uint128) (src/oracles/BalancerOracle.sol#74-91) ignores return value by (poolTokens,None,None) = vault.getPoolTokens(balancerTwapOracle_.getPoolId()) (src/oracles/BalancerOracle.sol#78)\n", + "markdown": "[BalancerOracle.constructor(IBalancerTwapOracle,address,address,uint56,uint56,uint128)](src/oracles/BalancerOracle.sol#L74-L91) ignores return value by [(poolTokens,None,None) = vault.getPoolTokens(balancerTwapOracle_.getPoolId())](src/oracles/BalancerOracle.sol#L78)\n", + "first_markdown_element": "src/oracles/BalancerOracle.sol#L74-L91", + "id": "7fd9ee00c28427211778cf2546b458bdf9a14aa5bafb1c4e696c75da94161789", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_generalSwap", + "source_mapping": { + "start": 2091, + "length": 1014, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "SwapHelper", + "source_mapping": { + "start": 514, + "length": 3269, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_generalSwap(ExchangeType,address,address,uint256,uint256,address)" + } + }, + { + "type": "node", + "name": "_swapper.swapVelo(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)", + "source_mapping": { + "start": 2778, + "length": 79, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 79 + ], + "starting_column": 13, + "ending_column": 92 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_generalSwap", + "source_mapping": { + "start": 2091, + "length": 1014, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "SwapHelper", + "source_mapping": { + "start": 514, + "length": 3269, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_generalSwap(ExchangeType,address,address,uint256,uint256,address)" + } + } + } + } + ], + "description": "SwapHelper._generalSwap(ExchangeType,address,address,uint256,uint256,address) (src/helpers/SwapHelper.sol#69-85) ignores return value by _swapper.swapVelo(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress) (src/helpers/SwapHelper.sol#79)\n", + "markdown": "[SwapHelper._generalSwap(ExchangeType,address,address,uint256,uint256,address)](src/helpers/SwapHelper.sol#L69-L85) ignores return value by [_swapper.swapVelo(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L79)\n", + "first_markdown_element": "src/helpers/SwapHelper.sol#L69-L85", + "id": "905ebf5e0a77bb5ce6a9956a5a938b3fb57ccd447db79e52f28c190ad2b098fc", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_generalSwap", + "source_mapping": { + "start": 2091, + "length": 1014, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "SwapHelper", + "source_mapping": { + "start": 514, + "length": 3269, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_generalSwap(ExchangeType,address,address,uint256,uint256,address)" + } + }, + { + "type": "node", + "name": "_swapper.swapUniV2(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)", + "source_mapping": { + "start": 2488, + "length": 80, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 75 + ], + "starting_column": 13, + "ending_column": 93 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_generalSwap", + "source_mapping": { + "start": 2091, + "length": 1014, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "SwapHelper", + "source_mapping": { + "start": 514, + "length": 3269, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_generalSwap(ExchangeType,address,address,uint256,uint256,address)" + } + } + } + } + ], + "description": "SwapHelper._generalSwap(ExchangeType,address,address,uint256,uint256,address) (src/helpers/SwapHelper.sol#69-85) ignores return value by _swapper.swapUniV2(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress) (src/helpers/SwapHelper.sol#75)\n", + "markdown": "[SwapHelper._generalSwap(ExchangeType,address,address,uint256,uint256,address)](src/helpers/SwapHelper.sol#L69-L85) ignores return value by [_swapper.swapUniV2(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L75)\n", + "first_markdown_element": "src/helpers/SwapHelper.sol#L69-L85", + "id": "94dc018090e15555f5a24f270bc2a4e251aa4fd683d1ad6da53e29b9ce36dfc0", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_generalSwap", + "source_mapping": { + "start": 2091, + "length": 1014, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "SwapHelper", + "source_mapping": { + "start": 514, + "length": 3269, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_generalSwap(ExchangeType,address,address,uint256,uint256,address)" + } + }, + { + "type": "node", + "name": "_swapper.swapBal(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)", + "source_mapping": { + "start": 2631, + "length": 78, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 77 + ], + "starting_column": 13, + "ending_column": 91 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_generalSwap", + "source_mapping": { + "start": 2091, + "length": 1014, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "SwapHelper", + "source_mapping": { + "start": 514, + "length": 3269, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_generalSwap(ExchangeType,address,address,uint256,uint256,address)" + } + } + } + } + ], + "description": "SwapHelper._generalSwap(ExchangeType,address,address,uint256,uint256,address) (src/helpers/SwapHelper.sol#69-85) ignores return value by _swapper.swapBal(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress) (src/helpers/SwapHelper.sol#77)\n", + "markdown": "[SwapHelper._generalSwap(ExchangeType,address,address,uint256,uint256,address)](src/helpers/SwapHelper.sol#L69-L85) ignores return value by [_swapper.swapBal(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L77)\n", + "first_markdown_element": "src/helpers/SwapHelper.sol#L69-L85", + "id": "a1f5da77f45788e0404eeff5cf6f3e525a4c1f9dfd972ea1146ab141aae64f48", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_addLiquidityUniV2", + "source_mapping": { + "start": 2970, + "length": 603, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "UniV2Mixin", + "source_mapping": { + "start": 234, + "length": 4634, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_addLiquidityUniV2(address,address,address,uint256)" + } + }, + { + "type": "node", + "name": "IUniswapV2Router02(_router).addLiquidity(_lpToken0,_lpToken1,lp0Bal,lp1Bal,0,0,address(this),_deadline)", + "source_mapping": { + "start": 3416, + "length": 140, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 85, + 86, + 87 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_addLiquidityUniV2", + "source_mapping": { + "start": 2970, + "length": 603, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "UniV2Mixin", + "source_mapping": { + "start": 234, + "length": 4634, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_addLiquidityUniV2(address,address,address,uint256)" + } + } + } + } + ], + "description": "UniV2Mixin._addLiquidityUniV2(address,address,address,uint256) (lib/vault-v2/src/mixins/UniV2Mixin.sol#78-89) ignores return value by IUniswapV2Router02(_router).addLiquidity(_lpToken0,_lpToken1,lp0Bal,lp1Bal,0,0,address(this),_deadline) (lib/vault-v2/src/mixins/UniV2Mixin.sol#85-87)\n", + "markdown": "[UniV2Mixin._addLiquidityUniV2(address,address,address,uint256)](lib/vault-v2/src/mixins/UniV2Mixin.sol#L78-L89) ignores return value by [IUniswapV2Router02(_router).addLiquidity(_lpToken0,_lpToken1,lp0Bal,lp1Bal,0,0,address(this),_deadline)](lib/vault-v2/src/mixins/UniV2Mixin.sol#L85-L87)\n", + "first_markdown_element": "lib/vault-v2/src/mixins/UniV2Mixin.sol#L78-L89", + "id": "b6d4c23ffa7d93ea78b806ecab3d05e76b1b931c562033f0be3f688a2bf5138c", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_generalSwap", + "source_mapping": { + "start": 2091, + "length": 1014, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "SwapHelper", + "source_mapping": { + "start": 514, + "length": 3269, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_generalSwap(ExchangeType,address,address,uint256,uint256,address)" + } + }, + { + "type": "node", + "name": "_swapper.swapUniV3(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)", + "source_mapping": { + "start": 2922, + "length": 80, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 81 + ], + "starting_column": 13, + "ending_column": 93 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_generalSwap", + "source_mapping": { + "start": 2091, + "length": 1014, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "SwapHelper", + "source_mapping": { + "start": 514, + "length": 3269, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_generalSwap(ExchangeType,address,address,uint256,uint256,address)" + } + } + } + } + ], + "description": "SwapHelper._generalSwap(ExchangeType,address,address,uint256,uint256,address) (src/helpers/SwapHelper.sol#69-85) ignores return value by _swapper.swapUniV3(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress) (src/helpers/SwapHelper.sol#81)\n", + "markdown": "[SwapHelper._generalSwap(ExchangeType,address,address,uint256,uint256,address)](src/helpers/SwapHelper.sol#L69-L85) ignores return value by [_swapper.swapUniV3(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L81)\n", + "first_markdown_element": "src/helpers/SwapHelper.sol#L69-L85", + "id": "ba75e8f4ffb4c65ddb6f1b12480fd59208ad29a142771fab28ee7f7006c98513", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "getTokens", + "source_mapping": { + "start": 5915, + "length": 481, + "filename_relative": "src/oracles/BalancerOracle.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/BalancerOracle.sol", + "filename_short": "src/oracles/BalancerOracle.sol", + "is_dependency": false, + "lines": [ + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BalancerOracle", + "source_mapping": { + "start": 892, + "length": 6454, + "filename_relative": "src/oracles/BalancerOracle.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/BalancerOracle.sol", + "filename_short": "src/oracles/BalancerOracle.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getTokens()" + } + }, + { + "type": "node", + "name": "(poolTokens,None,None) = vault.getPoolTokens(balancerTwapOracle.getPoolId())", + "source_mapping": { + "start": 6079, + "length": 85, + "filename_relative": "src/oracles/BalancerOracle.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/BalancerOracle.sol", + "filename_short": "src/oracles/BalancerOracle.sol", + "is_dependency": false, + "lines": [ + 140 + ], + "starting_column": 9, + "ending_column": 94 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getTokens", + "source_mapping": { + "start": 5915, + "length": 481, + "filename_relative": "src/oracles/BalancerOracle.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/BalancerOracle.sol", + "filename_short": "src/oracles/BalancerOracle.sol", + "is_dependency": false, + "lines": [ + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BalancerOracle", + "source_mapping": { + "start": 892, + "length": 6454, + "filename_relative": "src/oracles/BalancerOracle.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/BalancerOracle.sol", + "filename_short": "src/oracles/BalancerOracle.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getTokens()" + } + } + } + } + ], + "description": "BalancerOracle.getTokens() (src/oracles/BalancerOracle.sol#138-148) ignores return value by (poolTokens,None,None) = vault.getPoolTokens(balancerTwapOracle.getPoolId()) (src/oracles/BalancerOracle.sol#140)\n", + "markdown": "[BalancerOracle.getTokens()](src/oracles/BalancerOracle.sol#L138-L148) ignores return value by [(poolTokens,None,None) = vault.getPoolTokens(balancerTwapOracle.getPoolId())](src/oracles/BalancerOracle.sol#L140)\n", + "first_markdown_element": "src/oracles/BalancerOracle.sol#L138-L148", + "id": "d1f99ec9ea9af88978409bc1c5b1676b709fd00041f617d279f7f6efb7773e9a", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "variable", + "name": "liquidity", + "source_mapping": { + "start": 5469, + "length": 17, + "filename_relative": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", + "filename_short": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", + "is_dependency": true, + "lines": [ + 93 + ], + "starting_column": 13, + "ending_column": 30 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "positions", + "source_mapping": { + "start": 5377, + "length": 278, + "filename_relative": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", + "filename_short": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", + "is_dependency": true, + "lines": [ + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98 + ], + "starting_column": 5, + "ending_column": 11 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "IUniswapV3PoolState", + "source_mapping": { + "start": 240, + "length": 6425, + "filename_relative": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", + "filename_short": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "positions(bytes32)" + } + } + } + }, + { + "type": "function", + "name": "liquidity", + "source_mapping": { + "start": 2725, + "length": 53, + "filename_relative": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", + "filename_short": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", + "is_dependency": true, + "lines": [ + 49 + ], + "starting_column": 5, + "ending_column": 58 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "IUniswapV3PoolState", + "source_mapping": { + "start": 240, + "length": 6425, + "filename_relative": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", + "filename_short": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "liquidity()" + } + } + ], + "description": "IUniswapV3PoolState.positions(bytes32).liquidity (lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol#93) shadows:\n\t- IUniswapV3PoolState.liquidity() (lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol#49) (function)\n", + "markdown": "[IUniswapV3PoolState.positions(bytes32).liquidity](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol#L93) shadows:\n\t- [IUniswapV3PoolState.liquidity()](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol#L49) (function)\n", + "first_markdown_element": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol#L93", + "id": "5e13c1a5ae4fc039231766295753ab663fafa45e8223c9c0d6c847752e70753f", + "check": "shadowing-local", + "impact": "Low", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "setMinAmountToTriggerSwap", + "source_mapping": { + "start": 6507, + "length": 152, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 179, + 180, + 181 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "setMinAmountToTriggerSwap(uint256)" + } + }, + { + "type": "node", + "name": "minAmountToTriggerSwap = _minAmountToTriggerSwap", + "source_mapping": { + "start": 6604, + "length": 48, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 180 + ], + "starting_column": 9, + "ending_column": 57 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setMinAmountToTriggerSwap", + "source_mapping": { + "start": 6507, + "length": 152, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 179, + 180, + 181 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "setMinAmountToTriggerSwap(uint256)" + } + } + } + } + ], + "description": "DiscountExercise.setMinAmountToTriggerSwap(uint256) (src/exercise/DiscountExercise.sol#179-181) should emit an event for: \n\t- minAmountToTriggerSwap = _minAmountToTriggerSwap (src/exercise/DiscountExercise.sol#180) \n", + "markdown": "[DiscountExercise.setMinAmountToTriggerSwap(uint256)](src/exercise/DiscountExercise.sol#L179-L181) should emit an event for: \n\t- [minAmountToTriggerSwap = _minAmountToTriggerSwap](src/exercise/DiscountExercise.sol#L180) \n", + "first_markdown_element": "src/exercise/DiscountExercise.sol#L179-L181", + "id": "99c71da5f770edb1feb1845717d2ccb74eb2dfef272d225e93ebde0b29ec024c", + "check": "events-maths", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "variable", + "name": "newOwner", + "source_mapping": { + "start": 1339, + "length": 16, + "filename_relative": "lib/solmate/src/auth/Owned.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/auth/Owned.sol", + "filename_short": "lib/solmate/src/auth/Owned.sol", + "is_dependency": true, + "lines": [ + 39 + ], + "starting_column": 32, + "ending_column": 48 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "transferOwnership", + "source_mapping": { + "start": 1312, + "length": 161, + "filename_relative": "lib/solmate/src/auth/Owned.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/auth/Owned.sol", + "filename_short": "lib/solmate/src/auth/Owned.sol", + "is_dependency": true, + "lines": [ + 39, + 40, + 41, + 42, + 43 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Owned", + "source_mapping": { + "start": 215, + "length": 1260, + "filename_relative": "lib/solmate/src/auth/Owned.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/auth/Owned.sol", + "filename_short": "lib/solmate/src/auth/Owned.sol", + "is_dependency": true, + "lines": [ + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "transferOwnership(address)" + } + } + } + }, + { + "type": "node", + "name": "owner = newOwner", + "source_mapping": { + "start": 1392, + "length": 16, + "filename_relative": "lib/solmate/src/auth/Owned.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/auth/Owned.sol", + "filename_short": "lib/solmate/src/auth/Owned.sol", + "is_dependency": true, + "lines": [ + 40 + ], + "starting_column": 9, + "ending_column": 25 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "transferOwnership", + "source_mapping": { + "start": 1312, + "length": 161, + "filename_relative": "lib/solmate/src/auth/Owned.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/auth/Owned.sol", + "filename_short": "lib/solmate/src/auth/Owned.sol", + "is_dependency": true, + "lines": [ + 39, + 40, + 41, + 42, + 43 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Owned", + "source_mapping": { + "start": 215, + "length": 1260, + "filename_relative": "lib/solmate/src/auth/Owned.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/auth/Owned.sol", + "filename_short": "lib/solmate/src/auth/Owned.sol", + "is_dependency": true, + "lines": [ + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "transferOwnership(address)" + } + } + } + } + ], + "description": "Owned.transferOwnership(address).newOwner (lib/solmate/src/auth/Owned.sol#39) lacks a zero-check on :\n\t\t- owner = newOwner (lib/solmate/src/auth/Owned.sol#40)\n", + "markdown": "[Owned.transferOwnership(address).newOwner](lib/solmate/src/auth/Owned.sol#L39) lacks a zero-check on :\n\t\t- [owner = newOwner](lib/solmate/src/auth/Owned.sol#L40)\n", + "first_markdown_element": "lib/solmate/src/auth/Owned.sol#L39", + "id": "42c5c3a31d57316a6a42a25af3d5437866fe31ad7d20faa9c9e90a828458a168", + "check": "missing-zero-check", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "variable", + "name": "tokenAdmin_", + "source_mapping": { + "start": 2629, + "length": 19, + "filename_relative": "src/OptionsToken.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", + "filename_short": "src/OptionsToken.sol", + "is_dependency": false, + "lines": [ + 60 + ], + "starting_column": 69, + "ending_column": 88 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "initialize", + "source_mapping": { + "start": 2565, + "length": 279, + "filename_relative": "src/OptionsToken.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", + "filename_short": "src/OptionsToken.sol", + "is_dependency": false, + "lines": [ + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OptionsToken", + "source_mapping": { + "start": 691, + "length": 7138, + "filename_relative": "src/OptionsToken.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", + "filename_short": "src/OptionsToken.sol", + "is_dependency": false, + "lines": [ + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "initialize(string,string,address)" + } + } + } + }, + { + "type": "node", + "name": "tokenAdmin = tokenAdmin_", + "source_mapping": { + "start": 2779, + "length": 24, + "filename_relative": "src/OptionsToken.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", + "filename_short": "src/OptionsToken.sol", + "is_dependency": false, + "lines": [ + 64 + ], + "starting_column": 9, + "ending_column": 33 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "initialize", + "source_mapping": { + "start": 2565, + "length": 279, + "filename_relative": "src/OptionsToken.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", + "filename_short": "src/OptionsToken.sol", + "is_dependency": false, + "lines": [ + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OptionsToken", + "source_mapping": { + "start": 691, + "length": 7138, + "filename_relative": "src/OptionsToken.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", + "filename_short": "src/OptionsToken.sol", + "is_dependency": false, + "lines": [ + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "initialize(string,string,address)" + } + } + } + } + ], + "description": "OptionsToken.initialize(string,string,address).tokenAdmin_ (src/OptionsToken.sol#60) lacks a zero-check on :\n\t\t- tokenAdmin = tokenAdmin_ (src/OptionsToken.sol#64)\n", + "markdown": "[OptionsToken.initialize(string,string,address).tokenAdmin_](src/OptionsToken.sol#L60) lacks a zero-check on :\n\t\t- [tokenAdmin = tokenAdmin_](src/OptionsToken.sol#L64)\n", + "first_markdown_element": "src/OptionsToken.sol#L60", + "id": "4786a41866df4f4d6e9a53f76306dff86aa5c64f249a5507c66f1281e3a75404", + "check": "missing-zero-check", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "variable", + "name": "_nextImplementation", + "source_mapping": { + "start": 6725, + "length": 27, + "filename_relative": "src/OptionsToken.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", + "filename_short": "src/OptionsToken.sol", + "is_dependency": false, + "lines": [ + 162 + ], + "starting_column": 38, + "ending_column": 65 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "initiateUpgradeCooldown", + "source_mapping": { + "start": 6692, + "length": 185, + "filename_relative": "src/OptionsToken.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", + "filename_short": "src/OptionsToken.sol", + "is_dependency": false, + "lines": [ + 162, + 163, + 164, + 165 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OptionsToken", + "source_mapping": { + "start": 691, + "length": 7138, + "filename_relative": "src/OptionsToken.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", + "filename_short": "src/OptionsToken.sol", + "is_dependency": false, + "lines": [ + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "initiateUpgradeCooldown(address)" + } + } + } + }, + { + "type": "node", + "name": "nextImplementation = _nextImplementation", + "source_mapping": { + "start": 6830, + "length": 40, + "filename_relative": "src/OptionsToken.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", + "filename_short": "src/OptionsToken.sol", + "is_dependency": false, + "lines": [ + 164 + ], + "starting_column": 9, + "ending_column": 49 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "initiateUpgradeCooldown", + "source_mapping": { + "start": 6692, + "length": 185, + "filename_relative": "src/OptionsToken.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", + "filename_short": "src/OptionsToken.sol", + "is_dependency": false, + "lines": [ + 162, + 163, + 164, + 165 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OptionsToken", + "source_mapping": { + "start": 691, + "length": 7138, + "filename_relative": "src/OptionsToken.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", + "filename_short": "src/OptionsToken.sol", + "is_dependency": false, + "lines": [ + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "initiateUpgradeCooldown(address)" + } + } + } + } + ], + "description": "OptionsToken.initiateUpgradeCooldown(address)._nextImplementation (src/OptionsToken.sol#162) lacks a zero-check on :\n\t\t- nextImplementation = _nextImplementation (src/OptionsToken.sol#164)\n", + "markdown": "[OptionsToken.initiateUpgradeCooldown(address)._nextImplementation](src/OptionsToken.sol#L162) lacks a zero-check on :\n\t\t- [nextImplementation = _nextImplementation](src/OptionsToken.sol#L164)\n", + "first_markdown_element": "src/OptionsToken.sol#L162", + "id": "752bb74930b6ee11a2722c36161d6ff0d00b9bc921cae3c938a9df7a3d0a692e", + "check": "missing-zero-check", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_pay", + "source_mapping": { + "start": 9913, + "length": 415, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_pay(address,uint256)" + } + }, + { + "type": "node", + "name": "underlyingToken.safeTransfer(to,balance)", + "source_mapping": { + "start": 10112, + "length": 41, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 256 + ], + "starting_column": 13, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_pay", + "source_mapping": { + "start": 9913, + "length": 415, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_pay(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "underlyingToken.safeTransfer(to,amount)", + "source_mapping": { + "start": 10232, + "length": 40, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 259 + ], + "starting_column": 13, + "ending_column": 53 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_pay", + "source_mapping": { + "start": 9913, + "length": 415, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_pay(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "underlyingToken.safeTransfer(to,balance)", + "source_mapping": { + "start": 10112, + "length": 41, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 256 + ], + "starting_column": 13, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_pay", + "source_mapping": { + "start": 9913, + "length": 415, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_pay(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "underlyingToken.safeTransfer(to,amount)", + "source_mapping": { + "start": 10232, + "length": 40, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 259 + ], + "starting_column": 13, + "ending_column": 53 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_pay", + "source_mapping": { + "start": 9913, + "length": 415, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_pay(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "credit[to] += remainingAmount", + "source_mapping": { + "start": 10292, + "length": 29, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 261 + ], + "starting_column": 9, + "ending_column": 38 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_pay", + "source_mapping": { + "start": 9913, + "length": 415, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_pay(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "credit" + } + } + ], + "description": "Reentrancy in DiscountExercise._pay(address,uint256) (src/exercise/DiscountExercise.sol#253-262):\n\tExternal calls:\n\t- underlyingToken.safeTransfer(to,balance) (src/exercise/DiscountExercise.sol#256)\n\t- underlyingToken.safeTransfer(to,amount) (src/exercise/DiscountExercise.sol#259)\n\tState variables written after the call(s):\n\t- credit[to] += remainingAmount (src/exercise/DiscountExercise.sol#261)\n", + "markdown": "Reentrancy in [DiscountExercise._pay(address,uint256)](src/exercise/DiscountExercise.sol#L253-L262):\n\tExternal calls:\n\t- [underlyingToken.safeTransfer(to,balance)](src/exercise/DiscountExercise.sol#L256)\n\t- [underlyingToken.safeTransfer(to,amount)](src/exercise/DiscountExercise.sol#L259)\n\tState variables written after the call(s):\n\t- [credit[to] += remainingAmount](src/exercise/DiscountExercise.sol#L261)\n", + "first_markdown_element": "src/exercise/DiscountExercise.sol#L253-L262", + "id": "90b417a7fb4fc819e0ffafdfc6e3850abd2a28d5ee88b307754c749fcc5ac59a", + "check": "reentrancy-benign", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "swapUniV2", + "source_mapping": { + "start": 5108, + "length": 515, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + }, + { + "type": "node", + "name": "_swapUniV2(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive)", + "source_mapping": { + "start": 5527, + "length": 89, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 149 + ], + "starting_column": 9, + "ending_column": 98 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV2", + "source_mapping": { + "start": 5108, + "length": 515, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "returndata = address(token).functionCall(data,SafeERC20: low-level call failed)", + "source_mapping": { + "start": 4166, + "length": 95, + "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "is_dependency": true, + "lines": [ + 110 + ], + "starting_column": 9, + "ending_column": 104 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_callOptionalReturn", + "source_mapping": { + "start": 3747, + "length": 706, + "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "is_dependency": true, + "lines": [ + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "SafeERC20", + "source_mapping": { + "start": 707, + "length": 3748, + "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_callOptionalReturn(IERC20,bytes)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "(success,returndata) = target.call{value: value}(data)", + "source_mapping": { + "start": 5240, + "length": 73, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 135 + ], + "starting_column": 9, + "ending_column": 82 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "functionCallWithValue", + "source_mapping": { + "start": 4960, + "length": 446, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Address", + "source_mapping": { + "start": 194, + "length": 8964, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "functionCallWithValue(address,bytes,uint256,string)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "IERC20(_from).safeIncreaseAllowance(_router,_amount)", + "source_mapping": { + "start": 1488, + "length": 53, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 42 + ], + "starting_column": 9, + "ending_column": 62 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapUniV2", + "source_mapping": { + "start": 748, + "length": 1626, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "UniV2Mixin", + "source_mapping": { + "start": 234, + "length": 4634, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapUniV2(address,address,uint256,uint256,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "IUniswapV2Router02(_router).swapExactTokensForTokensSupportingFeeOnTransferTokens(_amount,_minAmountOut,path,address(this),_deadline)", + "source_mapping": { + "start": 1662, + "length": 422, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapUniV2", + "source_mapping": { + "start": 748, + "length": 1626, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "UniV2Mixin", + "source_mapping": { + "start": 234, + "length": 4634, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapUniV2(address,address,uint256,uint256,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "IERC20(_from).safeApprove(_router,0)", + "source_mapping": { + "start": 1954, + "length": 37, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 51 + ], + "starting_column": 17, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapUniV2", + "source_mapping": { + "start": 748, + "length": 1626, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "UniV2Mixin", + "source_mapping": { + "start": 234, + "length": 4634, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapUniV2(address,address,uint256,uint256,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "IUniswapV2Router02(_router).swapExactTokensForTokensSupportingFeeOnTransferTokens(_amount,_minAmountOut,path,address(this),_deadline)", + "source_mapping": { + "start": 2114, + "length": 167, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 55, + 56, + 57 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapUniV2", + "source_mapping": { + "start": 748, + "length": 1626, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "UniV2Mixin", + "source_mapping": { + "start": 234, + "length": 4634, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapUniV2(address,address,uint256,uint256,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "pullFromBefore(_from,_amount)", + "source_mapping": { + "start": 5342, + "length": 30, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 147 + ], + "starting_column": 14, + "ending_column": 44 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV2", + "source_mapping": { + "start": 5108, + "length": 515, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "returndata = address(token).functionCall(data,SafeERC20: low-level call failed)", + "source_mapping": { + "start": 4298, + "length": 95, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "is_dependency": true, + "lines": [ + 110 + ], + "starting_column": 9, + "ending_column": 104 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_callOptionalReturn", + "source_mapping": { + "start": 3868, + "length": 717, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "is_dependency": true, + "lines": [ + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "SafeERC20Upgradeable", + "source_mapping": { + "start": 740, + "length": 3847, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_callOptionalReturn(IERC20Upgradeable,bytes)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "IERC20MetadataUpgradeable(_from).safeTransferFrom(msg.sender,address(this),_amount)", + "source_mapping": { + "start": 19490, + "length": 85, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 485 + ], + "starting_column": 9, + "ending_column": 94 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "pullFromBefore", + "source_mapping": { + "start": 19424, + "length": 169, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 484, + 485, + 486, + 487 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "pullFromBefore(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "(success,returndata) = target.call{value: value}(data)", + "source_mapping": { + "start": 5251, + "length": 73, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 135 + ], + "starting_column": 9, + "ending_column": 82 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "functionCallWithValue", + "source_mapping": { + "start": 4971, + "length": 446, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AddressUpgradeable", + "source_mapping": { + "start": 194, + "length": 8087, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "functionCallWithValue(address,bytes,uint256,string)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "pushFromAndToAfter(_from,_to)", + "source_mapping": { + "start": 5373, + "length": 30, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 147 + ], + "starting_column": 45, + "ending_column": 75 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV2", + "source_mapping": { + "start": 5108, + "length": 515, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "returndata = address(token).functionCall(data,SafeERC20: low-level call failed)", + "source_mapping": { + "start": 4298, + "length": 95, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "is_dependency": true, + "lines": [ + 110 + ], + "starting_column": 9, + "ending_column": 104 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_callOptionalReturn", + "source_mapping": { + "start": 3868, + "length": 717, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "is_dependency": true, + "lines": [ + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "SafeERC20Upgradeable", + "source_mapping": { + "start": 740, + "length": 3847, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_callOptionalReturn(IERC20Upgradeable,bytes)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "IERC20MetadataUpgradeable(_from).safeTransfer(msg.sender,fromBal)", + "source_mapping": { + "start": 19793, + "length": 66, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 493 + ], + "starting_column": 13, + "ending_column": 79 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "pushFromAndToAfter", + "source_mapping": { + "start": 19599, + "length": 470, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "pushFromAndToAfter(address,address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "(success,returndata) = target.call{value: value}(data)", + "source_mapping": { + "start": 5251, + "length": 73, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 135 + ], + "starting_column": 9, + "ending_column": 82 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "functionCallWithValue", + "source_mapping": { + "start": 4971, + "length": 446, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AddressUpgradeable", + "source_mapping": { + "start": 194, + "length": 8087, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "functionCallWithValue(address,bytes,uint256,string)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "IERC20MetadataUpgradeable(_to).safeTransfer(msg.sender,toBal)", + "source_mapping": { + "start": 19990, + "length": 62, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 497 + ], + "starting_column": 13, + "ending_column": 75 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "pushFromAndToAfter", + "source_mapping": { + "start": 19599, + "length": 470, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "pushFromAndToAfter(address,address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "_swapUniV2(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive)", + "source_mapping": { + "start": 5527, + "length": 89, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 149 + ], + "starting_column": 9, + "ending_column": 98 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV2", + "source_mapping": { + "start": 5108, + "length": 515, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "(success,returndata) = target.call{value: value}(data)", + "source_mapping": { + "start": 5240, + "length": 73, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 135 + ], + "starting_column": 9, + "ending_column": 82 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "functionCallWithValue", + "source_mapping": { + "start": 4960, + "length": 446, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Address", + "source_mapping": { + "start": 194, + "length": 8964, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "functionCallWithValue(address,bytes,uint256,string)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "pullFromBefore(_from,_amount)", + "source_mapping": { + "start": 5342, + "length": 30, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 147 + ], + "starting_column": 14, + "ending_column": 44 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV2", + "source_mapping": { + "start": 5108, + "length": 515, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "(success,returndata) = target.call{value: value}(data)", + "source_mapping": { + "start": 5251, + "length": 73, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 135 + ], + "starting_column": 9, + "ending_column": 82 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "functionCallWithValue", + "source_mapping": { + "start": 4971, + "length": 446, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AddressUpgradeable", + "source_mapping": { + "start": 194, + "length": 8087, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "functionCallWithValue(address,bytes,uint256,string)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "pushFromAndToAfter(_from,_to)", + "source_mapping": { + "start": 5373, + "length": 30, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 147 + ], + "starting_column": 45, + "ending_column": 75 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV2", + "source_mapping": { + "start": 5108, + "length": 515, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "(success,returndata) = target.call{value: value}(data)", + "source_mapping": { + "start": 5251, + "length": 73, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 135 + ], + "starting_column": 9, + "ending_column": 82 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "functionCallWithValue", + "source_mapping": { + "start": 4971, + "length": 446, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AddressUpgradeable", + "source_mapping": { + "start": 194, + "length": 8087, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "functionCallWithValue(address,bytes,uint256,string)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "GetAmountsOutFailed(_router,_amount,_from,_to)", + "source_mapping": { + "start": 1323, + "length": 54, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 37 + ], + "starting_column": 13, + "ending_column": 67 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapUniV2", + "source_mapping": { + "start": 748, + "length": 1626, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "UniV2Mixin", + "source_mapping": { + "start": 234, + "length": 4634, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapUniV2(address,address,uint256,uint256,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } + }, + { + "type": "node", + "name": "_swapUniV2(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive)", + "source_mapping": { + "start": 5527, + "length": 89, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 149 + ], + "starting_column": 9, + "ending_column": 98 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV2", + "source_mapping": { + "start": 5108, + "length": 515, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } + }, + { + "type": "node", + "name": "SwapFailed(_router,_amount,_minAmountOut,_from,_to)", + "source_mapping": { + "start": 2009, + "length": 60, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 52 + ], + "starting_column": 17, + "ending_column": 77 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapUniV2", + "source_mapping": { + "start": 748, + "length": 1626, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "UniV2Mixin", + "source_mapping": { + "start": 234, + "length": 4634, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapUniV2(address,address,uint256,uint256,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } + }, + { + "type": "node", + "name": "_swapUniV2(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive)", + "source_mapping": { + "start": 5527, + "length": 89, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 149 + ], + "starting_column": 9, + "ending_column": 98 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV2", + "source_mapping": { + "start": 5108, + "length": 515, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } + } + ], + "description": "Reentrancy in ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool) (lib/vault-v2/src/ReaperSwapper.sol#139-150):\n\tExternal calls:\n\t- _swapUniV2(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive) (lib/vault-v2/src/ReaperSwapper.sol#149)\n\t\t- returndata = address(token).functionCall(data,SafeERC20: low-level call failed) (lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#110)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts/contracts/utils/Address.sol#135)\n\t\t- IERC20(_from).safeIncreaseAllowance(_router,_amount) (lib/vault-v2/src/mixins/UniV2Mixin.sol#42)\n\t\t- IUniswapV2Router02(_router).swapExactTokensForTokensSupportingFeeOnTransferTokens(_amount,_minAmountOut,path,address(this),_deadline) (lib/vault-v2/src/mixins/UniV2Mixin.sol#46-53)\n\t\t- IERC20(_from).safeApprove(_router,0) (lib/vault-v2/src/mixins/UniV2Mixin.sol#51)\n\t\t- IUniswapV2Router02(_router).swapExactTokensForTokensSupportingFeeOnTransferTokens(_amount,_minAmountOut,path,address(this),_deadline) (lib/vault-v2/src/mixins/UniV2Mixin.sol#55-57)\n\t- pullFromBefore(_from,_amount) (lib/vault-v2/src/ReaperSwapper.sol#147)\n\t\t- returndata = address(token).functionCall(data,SafeERC20: low-level call failed) (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#110)\n\t\t- IERC20MetadataUpgradeable(_from).safeTransferFrom(msg.sender,address(this),_amount) (lib/vault-v2/src/ReaperSwapper.sol#485)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#135)\n\t- pushFromAndToAfter(_from,_to) (lib/vault-v2/src/ReaperSwapper.sol#147)\n\t\t- returndata = address(token).functionCall(data,SafeERC20: low-level call failed) (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#110)\n\t\t- IERC20MetadataUpgradeable(_from).safeTransfer(msg.sender,fromBal) (lib/vault-v2/src/ReaperSwapper.sol#493)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#135)\n\t\t- IERC20MetadataUpgradeable(_to).safeTransfer(msg.sender,toBal) (lib/vault-v2/src/ReaperSwapper.sol#497)\n\tExternal calls sending eth:\n\t- _swapUniV2(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive) (lib/vault-v2/src/ReaperSwapper.sol#149)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts/contracts/utils/Address.sol#135)\n\t- pullFromBefore(_from,_amount) (lib/vault-v2/src/ReaperSwapper.sol#147)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#135)\n\t- pushFromAndToAfter(_from,_to) (lib/vault-v2/src/ReaperSwapper.sol#147)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#135)\n\tEvent emitted after the call(s):\n\t- GetAmountsOutFailed(_router,_amount,_from,_to) (lib/vault-v2/src/mixins/UniV2Mixin.sol#37)\n\t\t- _swapUniV2(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive) (lib/vault-v2/src/ReaperSwapper.sol#149)\n\t- SwapFailed(_router,_amount,_minAmountOut,_from,_to) (lib/vault-v2/src/mixins/UniV2Mixin.sol#52)\n\t\t- _swapUniV2(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive) (lib/vault-v2/src/ReaperSwapper.sol#149)\n", + "markdown": "Reentrancy in [ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)](lib/vault-v2/src/ReaperSwapper.sol#L139-L150):\n\tExternal calls:\n\t- [_swapUniV2(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive)](lib/vault-v2/src/ReaperSwapper.sol#L149)\n\t\t- [returndata = address(token).functionCall(data,SafeERC20: low-level call failed)](lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#L110)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135)\n\t\t- [IERC20(_from).safeIncreaseAllowance(_router,_amount)](lib/vault-v2/src/mixins/UniV2Mixin.sol#L42)\n\t\t- [IUniswapV2Router02(_router).swapExactTokensForTokensSupportingFeeOnTransferTokens(_amount,_minAmountOut,path,address(this),_deadline)](lib/vault-v2/src/mixins/UniV2Mixin.sol#L46-L53)\n\t\t- [IERC20(_from).safeApprove(_router,0)](lib/vault-v2/src/mixins/UniV2Mixin.sol#L51)\n\t\t- [IUniswapV2Router02(_router).swapExactTokensForTokensSupportingFeeOnTransferTokens(_amount,_minAmountOut,path,address(this),_deadline)](lib/vault-v2/src/mixins/UniV2Mixin.sol#L55-L57)\n\t- [pullFromBefore(_from,_amount)](lib/vault-v2/src/ReaperSwapper.sol#L147)\n\t\t- [returndata = address(token).functionCall(data,SafeERC20: low-level call failed)](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#L110)\n\t\t- [IERC20MetadataUpgradeable(_from).safeTransferFrom(msg.sender,address(this),_amount)](lib/vault-v2/src/ReaperSwapper.sol#L485)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L135)\n\t- [pushFromAndToAfter(_from,_to)](lib/vault-v2/src/ReaperSwapper.sol#L147)\n\t\t- [returndata = address(token).functionCall(data,SafeERC20: low-level call failed)](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#L110)\n\t\t- [IERC20MetadataUpgradeable(_from).safeTransfer(msg.sender,fromBal)](lib/vault-v2/src/ReaperSwapper.sol#L493)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L135)\n\t\t- [IERC20MetadataUpgradeable(_to).safeTransfer(msg.sender,toBal)](lib/vault-v2/src/ReaperSwapper.sol#L497)\n\tExternal calls sending eth:\n\t- [_swapUniV2(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive)](lib/vault-v2/src/ReaperSwapper.sol#L149)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135)\n\t- [pullFromBefore(_from,_amount)](lib/vault-v2/src/ReaperSwapper.sol#L147)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L135)\n\t- [pushFromAndToAfter(_from,_to)](lib/vault-v2/src/ReaperSwapper.sol#L147)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L135)\n\tEvent emitted after the call(s):\n\t- [GetAmountsOutFailed(_router,_amount,_from,_to)](lib/vault-v2/src/mixins/UniV2Mixin.sol#L37)\n\t\t- [_swapUniV2(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive)](lib/vault-v2/src/ReaperSwapper.sol#L149)\n\t- [SwapFailed(_router,_amount,_minAmountOut,_from,_to)](lib/vault-v2/src/mixins/UniV2Mixin.sol#L52)\n\t\t- [_swapUniV2(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive)](lib/vault-v2/src/ReaperSwapper.sol#L149)\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L139-L150", + "id": "10ddb26acba74e372c85b3164933929baee8d00e79dab8d38b7fdeed4f18d3a0", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "swapVelo", + "source_mapping": { + "start": 7406, + "length": 513, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + }, + { + "type": "node", + "name": "_swapVelo(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive)", + "source_mapping": { + "start": 7824, + "length": 88, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 217 + ], + "starting_column": 9, + "ending_column": 97 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapVelo", + "source_mapping": { + "start": 7406, + "length": 513, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "returndata = address(token).functionCall(data,SafeERC20: low-level call failed)", + "source_mapping": { + "start": 4166, + "length": 95, + "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "is_dependency": true, + "lines": [ + 110 + ], + "starting_column": 9, + "ending_column": 104 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_callOptionalReturn", + "source_mapping": { + "start": 3747, + "length": 706, + "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "is_dependency": true, + "lines": [ + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "SafeERC20", + "source_mapping": { + "start": 707, + "length": 3748, + "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_callOptionalReturn(IERC20,bytes)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "(success,returndata) = target.call{value: value}(data)", + "source_mapping": { + "start": 5240, + "length": 73, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 135 + ], + "starting_column": 9, + "ending_column": 82 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "functionCallWithValue", + "source_mapping": { + "start": 4960, + "length": 446, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Address", + "source_mapping": { + "start": 194, + "length": 8964, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "functionCallWithValue(address,bytes,uint256,string)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "IERC20(_from).safeIncreaseAllowance(_router,_amount)", + "source_mapping": { + "start": 1784, + "length": 53, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 50 + ], + "starting_column": 9, + "ending_column": 62 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapVelo", + "source_mapping": { + "start": 862, + "length": 1768, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "VeloSolidMixin", + "source_mapping": { + "start": 313, + "length": 4635, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapVelo(address,address,uint256,uint256,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "router.swapExactTokensForTokensSupportingFeeOnTransferTokens(_amount,_minAmountOut,path,address(this),_deadline)", + "source_mapping": { + "start": 1889, + "length": 401, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapVelo", + "source_mapping": { + "start": 862, + "length": 1768, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "VeloSolidMixin", + "source_mapping": { + "start": 313, + "length": 4635, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapVelo(address,address,uint256,uint256,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "IERC20(_from).safeApprove(_router,0)", + "source_mapping": { + "start": 2160, + "length": 37, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 57 + ], + "starting_column": 17, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapVelo", + "source_mapping": { + "start": 862, + "length": 1768, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "VeloSolidMixin", + "source_mapping": { + "start": 313, + "length": 4635, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapVelo(address,address,uint256,uint256,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "router.swapExactTokensForTokensSupportingFeeOnTransferTokens(_amount,_minAmountOut,path,address(this),_deadline)", + "source_mapping": { + "start": 2327, + "length": 210, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 62, + 63, + 64, + 65, + 66, + 67, + 68 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapVelo", + "source_mapping": { + "start": 862, + "length": 1768, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "VeloSolidMixin", + "source_mapping": { + "start": 313, + "length": 4635, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapVelo(address,address,uint256,uint256,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "pullFromBefore(_from,_amount)", + "source_mapping": { + "start": 7639, + "length": 30, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 215 + ], + "starting_column": 14, + "ending_column": 44 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapVelo", + "source_mapping": { + "start": 7406, + "length": 513, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "returndata = address(token).functionCall(data,SafeERC20: low-level call failed)", + "source_mapping": { + "start": 4298, + "length": 95, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "is_dependency": true, + "lines": [ + 110 + ], + "starting_column": 9, + "ending_column": 104 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_callOptionalReturn", + "source_mapping": { + "start": 3868, + "length": 717, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "is_dependency": true, + "lines": [ + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "SafeERC20Upgradeable", + "source_mapping": { + "start": 740, + "length": 3847, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_callOptionalReturn(IERC20Upgradeable,bytes)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "IERC20MetadataUpgradeable(_from).safeTransferFrom(msg.sender,address(this),_amount)", + "source_mapping": { + "start": 19490, + "length": 85, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 485 + ], + "starting_column": 9, + "ending_column": 94 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "pullFromBefore", + "source_mapping": { + "start": 19424, + "length": 169, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 484, + 485, + 486, + 487 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "pullFromBefore(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "(success,returndata) = target.call{value: value}(data)", + "source_mapping": { + "start": 5251, + "length": 73, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 135 + ], + "starting_column": 9, + "ending_column": 82 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "functionCallWithValue", + "source_mapping": { + "start": 4971, + "length": 446, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AddressUpgradeable", + "source_mapping": { + "start": 194, + "length": 8087, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "functionCallWithValue(address,bytes,uint256,string)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "pushFromAndToAfter(_from,_to)", + "source_mapping": { + "start": 7670, + "length": 30, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 215 + ], + "starting_column": 45, + "ending_column": 75 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapVelo", + "source_mapping": { + "start": 7406, + "length": 513, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "returndata = address(token).functionCall(data,SafeERC20: low-level call failed)", + "source_mapping": { + "start": 4298, + "length": 95, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "is_dependency": true, + "lines": [ + 110 + ], + "starting_column": 9, + "ending_column": 104 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_callOptionalReturn", + "source_mapping": { + "start": 3868, + "length": 717, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "is_dependency": true, + "lines": [ + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "SafeERC20Upgradeable", + "source_mapping": { + "start": 740, + "length": 3847, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_callOptionalReturn(IERC20Upgradeable,bytes)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "IERC20MetadataUpgradeable(_from).safeTransfer(msg.sender,fromBal)", + "source_mapping": { + "start": 19793, + "length": 66, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 493 + ], + "starting_column": 13, + "ending_column": 79 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "pushFromAndToAfter", + "source_mapping": { + "start": 19599, + "length": 470, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "pushFromAndToAfter(address,address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "(success,returndata) = target.call{value: value}(data)", + "source_mapping": { + "start": 5251, + "length": 73, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 135 + ], + "starting_column": 9, + "ending_column": 82 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "functionCallWithValue", + "source_mapping": { + "start": 4971, + "length": 446, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AddressUpgradeable", + "source_mapping": { + "start": 194, + "length": 8087, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "functionCallWithValue(address,bytes,uint256,string)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "IERC20MetadataUpgradeable(_to).safeTransfer(msg.sender,toBal)", + "source_mapping": { + "start": 19990, + "length": 62, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 497 + ], + "starting_column": 13, + "ending_column": 75 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "pushFromAndToAfter", + "source_mapping": { + "start": 19599, + "length": 470, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "pushFromAndToAfter(address,address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "_swapVelo(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive)", + "source_mapping": { + "start": 7824, + "length": 88, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 217 + ], + "starting_column": 9, + "ending_column": 97 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapVelo", + "source_mapping": { + "start": 7406, + "length": 513, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "(success,returndata) = target.call{value: value}(data)", + "source_mapping": { + "start": 5240, + "length": 73, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 135 + ], + "starting_column": 9, + "ending_column": 82 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "functionCallWithValue", + "source_mapping": { + "start": 4960, + "length": 446, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Address", + "source_mapping": { + "start": 194, + "length": 8964, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "functionCallWithValue(address,bytes,uint256,string)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "pullFromBefore(_from,_amount)", + "source_mapping": { + "start": 7639, + "length": 30, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 215 + ], + "starting_column": 14, + "ending_column": 44 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapVelo", + "source_mapping": { + "start": 7406, + "length": 513, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "(success,returndata) = target.call{value: value}(data)", + "source_mapping": { + "start": 5251, + "length": 73, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 135 + ], + "starting_column": 9, + "ending_column": 82 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "functionCallWithValue", + "source_mapping": { + "start": 4971, + "length": 446, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AddressUpgradeable", + "source_mapping": { + "start": 194, + "length": 8087, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "functionCallWithValue(address,bytes,uint256,string)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "pushFromAndToAfter(_from,_to)", + "source_mapping": { + "start": 7670, + "length": 30, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 215 + ], + "starting_column": 45, + "ending_column": 75 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapVelo", + "source_mapping": { + "start": 7406, + "length": 513, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "(success,returndata) = target.call{value: value}(data)", + "source_mapping": { + "start": 5251, + "length": 73, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 135 + ], + "starting_column": 9, + "ending_column": 82 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "functionCallWithValue", + "source_mapping": { + "start": 4971, + "length": 446, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AddressUpgradeable", + "source_mapping": { + "start": 194, + "length": 8087, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "functionCallWithValue(address,bytes,uint256,string)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "GetAmountsOutFailed(_router,_amount,_from,_to)", + "source_mapping": { + "start": 1619, + "length": 54, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 45 + ], + "starting_column": 13, + "ending_column": 67 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapVelo", + "source_mapping": { + "start": 862, + "length": 1768, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "VeloSolidMixin", + "source_mapping": { + "start": 313, + "length": 4635, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapVelo(address,address,uint256,uint256,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } + }, + { + "type": "node", + "name": "_swapVelo(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive)", + "source_mapping": { + "start": 7824, + "length": 88, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 217 + ], + "starting_column": 9, + "ending_column": 97 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapVelo", + "source_mapping": { + "start": 7406, + "length": 513, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } + }, + { + "type": "node", + "name": "SwapFailed(_router,_amount,_minAmountOut,_from,_to)", + "source_mapping": { + "start": 2215, + "length": 60, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 58 + ], + "starting_column": 17, + "ending_column": 77 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapVelo", + "source_mapping": { + "start": 862, + "length": 1768, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "VeloSolidMixin", + "source_mapping": { + "start": 313, + "length": 4635, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapVelo(address,address,uint256,uint256,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } + }, + { + "type": "node", + "name": "_swapVelo(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive)", + "source_mapping": { + "start": 7824, + "length": 88, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 217 + ], + "starting_column": 9, + "ending_column": 97 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapVelo", + "source_mapping": { + "start": 7406, + "length": 513, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } + } + ], + "description": "Reentrancy in ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool) (lib/vault-v2/src/ReaperSwapper.sol#207-218):\n\tExternal calls:\n\t- _swapVelo(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive) (lib/vault-v2/src/ReaperSwapper.sol#217)\n\t\t- returndata = address(token).functionCall(data,SafeERC20: low-level call failed) (lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#110)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts/contracts/utils/Address.sol#135)\n\t\t- IERC20(_from).safeIncreaseAllowance(_router,_amount) (lib/vault-v2/src/mixins/VeloSolidMixin.sol#50)\n\t\t- router.swapExactTokensForTokensSupportingFeeOnTransferTokens(_amount,_minAmountOut,path,address(this),_deadline) (lib/vault-v2/src/mixins/VeloSolidMixin.sol#52-59)\n\t\t- IERC20(_from).safeApprove(_router,0) (lib/vault-v2/src/mixins/VeloSolidMixin.sol#57)\n\t\t- router.swapExactTokensForTokensSupportingFeeOnTransferTokens(_amount,_minAmountOut,path,address(this),_deadline) (lib/vault-v2/src/mixins/VeloSolidMixin.sol#62-68)\n\t- pullFromBefore(_from,_amount) (lib/vault-v2/src/ReaperSwapper.sol#215)\n\t\t- returndata = address(token).functionCall(data,SafeERC20: low-level call failed) (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#110)\n\t\t- IERC20MetadataUpgradeable(_from).safeTransferFrom(msg.sender,address(this),_amount) (lib/vault-v2/src/ReaperSwapper.sol#485)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#135)\n\t- pushFromAndToAfter(_from,_to) (lib/vault-v2/src/ReaperSwapper.sol#215)\n\t\t- returndata = address(token).functionCall(data,SafeERC20: low-level call failed) (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#110)\n\t\t- IERC20MetadataUpgradeable(_from).safeTransfer(msg.sender,fromBal) (lib/vault-v2/src/ReaperSwapper.sol#493)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#135)\n\t\t- IERC20MetadataUpgradeable(_to).safeTransfer(msg.sender,toBal) (lib/vault-v2/src/ReaperSwapper.sol#497)\n\tExternal calls sending eth:\n\t- _swapVelo(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive) (lib/vault-v2/src/ReaperSwapper.sol#217)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts/contracts/utils/Address.sol#135)\n\t- pullFromBefore(_from,_amount) (lib/vault-v2/src/ReaperSwapper.sol#215)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#135)\n\t- pushFromAndToAfter(_from,_to) (lib/vault-v2/src/ReaperSwapper.sol#215)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#135)\n\tEvent emitted after the call(s):\n\t- GetAmountsOutFailed(_router,_amount,_from,_to) (lib/vault-v2/src/mixins/VeloSolidMixin.sol#45)\n\t\t- _swapVelo(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive) (lib/vault-v2/src/ReaperSwapper.sol#217)\n\t- SwapFailed(_router,_amount,_minAmountOut,_from,_to) (lib/vault-v2/src/mixins/VeloSolidMixin.sol#58)\n\t\t- _swapVelo(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive) (lib/vault-v2/src/ReaperSwapper.sol#217)\n", + "markdown": "Reentrancy in [ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)](lib/vault-v2/src/ReaperSwapper.sol#L207-L218):\n\tExternal calls:\n\t- [_swapVelo(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive)](lib/vault-v2/src/ReaperSwapper.sol#L217)\n\t\t- [returndata = address(token).functionCall(data,SafeERC20: low-level call failed)](lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#L110)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135)\n\t\t- [IERC20(_from).safeIncreaseAllowance(_router,_amount)](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L50)\n\t\t- [router.swapExactTokensForTokensSupportingFeeOnTransferTokens(_amount,_minAmountOut,path,address(this),_deadline)](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L52-L59)\n\t\t- [IERC20(_from).safeApprove(_router,0)](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L57)\n\t\t- [router.swapExactTokensForTokensSupportingFeeOnTransferTokens(_amount,_minAmountOut,path,address(this),_deadline)](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L62-L68)\n\t- [pullFromBefore(_from,_amount)](lib/vault-v2/src/ReaperSwapper.sol#L215)\n\t\t- [returndata = address(token).functionCall(data,SafeERC20: low-level call failed)](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#L110)\n\t\t- [IERC20MetadataUpgradeable(_from).safeTransferFrom(msg.sender,address(this),_amount)](lib/vault-v2/src/ReaperSwapper.sol#L485)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L135)\n\t- [pushFromAndToAfter(_from,_to)](lib/vault-v2/src/ReaperSwapper.sol#L215)\n\t\t- [returndata = address(token).functionCall(data,SafeERC20: low-level call failed)](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#L110)\n\t\t- [IERC20MetadataUpgradeable(_from).safeTransfer(msg.sender,fromBal)](lib/vault-v2/src/ReaperSwapper.sol#L493)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L135)\n\t\t- [IERC20MetadataUpgradeable(_to).safeTransfer(msg.sender,toBal)](lib/vault-v2/src/ReaperSwapper.sol#L497)\n\tExternal calls sending eth:\n\t- [_swapVelo(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive)](lib/vault-v2/src/ReaperSwapper.sol#L217)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135)\n\t- [pullFromBefore(_from,_amount)](lib/vault-v2/src/ReaperSwapper.sol#L215)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L135)\n\t- [pushFromAndToAfter(_from,_to)](lib/vault-v2/src/ReaperSwapper.sol#L215)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L135)\n\tEvent emitted after the call(s):\n\t- [GetAmountsOutFailed(_router,_amount,_from,_to)](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L45)\n\t\t- [_swapVelo(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive)](lib/vault-v2/src/ReaperSwapper.sol#L217)\n\t- [SwapFailed(_router,_amount,_minAmountOut,_from,_to)](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L58)\n\t\t- [_swapVelo(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive)](lib/vault-v2/src/ReaperSwapper.sol#L217)\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L207-L218", + "id": "19acbcb4d6835840db936ed70e0dddd5b1f9569d32cc2f3bbd64ec8e55f0a367", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_redeem", + "source_mapping": { + "start": 9155, + "length": 752, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_redeem(address,uint256,address,DiscountExerciseParams)" + } + }, + { + "type": "node", + "name": "distributeFeesFrom(paymentAmount,paymentToken,from)", + "source_mapping": { + "start": 9698, + "length": 53, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 246 + ], + "starting_column": 9, + "ending_column": 62 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_redeem", + "source_mapping": { + "start": 9155, + "length": 752, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_redeem(address,uint256,address,DiscountExerciseParams)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "returndata = address(token).functionCall(data,SafeERC20: low-level call failed)", + "source_mapping": { + "start": 4166, + "length": 95, + "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "is_dependency": true, + "lines": [ + 110 + ], + "starting_column": 9, + "ending_column": 104 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_callOptionalReturn", + "source_mapping": { + "start": 3747, + "length": 706, + "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "is_dependency": true, + "lines": [ + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "SafeERC20", + "source_mapping": { + "start": 707, + "length": 3748, + "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_callOptionalReturn(IERC20,bytes)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "(success,returndata) = target.call{value: value}(data)", + "source_mapping": { + "start": 5240, + "length": 73, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 135 + ], + "starting_column": 9, + "ending_column": 82 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "functionCallWithValue", + "source_mapping": { + "start": 4960, + "length": 446, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Address", + "source_mapping": { + "start": 194, + "length": 8964, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "functionCallWithValue(address,bytes,uint256,string)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "token.safeTransferFrom(from,feeRecipients[i],feeAmount)", + "source_mapping": { + "start": 3306, + "length": 57, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 79 + ], + "starting_column": 13, + "ending_column": 70 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "distributeFeesFrom", + "source_mapping": { + "start": 3017, + "length": 554, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BaseExercise", + "source_mapping": { + "start": 432, + "length": 3936, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "distributeFeesFrom(uint256,IERC20,address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "token.safeTransferFrom(from,feeRecipients[feeRecipients.length - 1],remaining)", + "source_mapping": { + "start": 3419, + "length": 80, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 82 + ], + "starting_column": 9, + "ending_column": 89 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "distributeFeesFrom", + "source_mapping": { + "start": 3017, + "length": 554, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BaseExercise", + "source_mapping": { + "start": 432, + "length": 3936, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "distributeFeesFrom(uint256,IERC20,address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "_pay(recipient,amount)", + "source_mapping": { + "start": 9812, + "length": 23, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 248 + ], + "starting_column": 9, + "ending_column": 32 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_redeem", + "source_mapping": { + "start": 9155, + "length": 752, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_redeem(address,uint256,address,DiscountExerciseParams)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "returndata = address(token).functionCall(data,SafeERC20: low-level call failed)", + "source_mapping": { + "start": 4166, + "length": 95, + "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "is_dependency": true, + "lines": [ + 110 + ], + "starting_column": 9, + "ending_column": 104 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_callOptionalReturn", + "source_mapping": { + "start": 3747, + "length": 706, + "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "is_dependency": true, + "lines": [ + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "SafeERC20", + "source_mapping": { + "start": 707, + "length": 3748, + "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_callOptionalReturn(IERC20,bytes)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "underlyingToken.safeTransfer(to,balance)", + "source_mapping": { + "start": 10112, + "length": 41, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 256 + ], + "starting_column": 13, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_pay", + "source_mapping": { + "start": 9913, + "length": 415, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_pay(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "(success,returndata) = target.call{value: value}(data)", + "source_mapping": { + "start": 5240, + "length": 73, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 135 + ], + "starting_column": 9, + "ending_column": 82 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "functionCallWithValue", + "source_mapping": { + "start": 4960, + "length": 446, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Address", + "source_mapping": { + "start": 194, + "length": 8964, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "functionCallWithValue(address,bytes,uint256,string)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "underlyingToken.safeTransfer(to,amount)", + "source_mapping": { + "start": 10232, + "length": 40, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 259 + ], + "starting_column": 13, + "ending_column": 53 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_pay", + "source_mapping": { + "start": 9913, + "length": 415, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_pay(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "distributeFeesFrom(paymentAmount,paymentToken,from)", + "source_mapping": { + "start": 9698, + "length": 53, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 246 + ], + "starting_column": 9, + "ending_column": 62 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_redeem", + "source_mapping": { + "start": 9155, + "length": 752, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_redeem(address,uint256,address,DiscountExerciseParams)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "(success,returndata) = target.call{value: value}(data)", + "source_mapping": { + "start": 5240, + "length": 73, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 135 + ], + "starting_column": 9, + "ending_column": 82 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "functionCallWithValue", + "source_mapping": { + "start": 4960, + "length": 446, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Address", + "source_mapping": { + "start": 194, + "length": 8964, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "functionCallWithValue(address,bytes,uint256,string)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "_pay(recipient,amount)", + "source_mapping": { + "start": 9812, + "length": 23, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 248 + ], + "starting_column": 9, + "ending_column": 32 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_redeem", + "source_mapping": { + "start": 9155, + "length": 752, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_redeem(address,uint256,address,DiscountExerciseParams)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "(success,returndata) = target.call{value: value}(data)", + "source_mapping": { + "start": 5240, + "length": 73, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 135 + ], + "starting_column": 9, + "ending_column": 82 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "functionCallWithValue", + "source_mapping": { + "start": 4960, + "length": 446, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Address", + "source_mapping": { + "start": 194, + "length": 8964, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "functionCallWithValue(address,bytes,uint256,string)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "Exercised(from,recipient,amount,paymentAmount)", + "source_mapping": { + "start": 9846, + "length": 54, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 250 + ], + "starting_column": 9, + "ending_column": 63 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_redeem", + "source_mapping": { + "start": 9155, + "length": 752, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_redeem(address,uint256,address,DiscountExerciseParams)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } + } + ], + "description": "Reentrancy in DiscountExercise._redeem(address,uint256,address,DiscountExerciseParams) (src/exercise/DiscountExercise.sol#234-251):\n\tExternal calls:\n\t- distributeFeesFrom(paymentAmount,paymentToken,from) (src/exercise/DiscountExercise.sol#246)\n\t\t- returndata = address(token).functionCall(data,SafeERC20: low-level call failed) (lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#110)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts/contracts/utils/Address.sol#135)\n\t\t- token.safeTransferFrom(from,feeRecipients[i],feeAmount) (src/exercise/BaseExercise.sol#79)\n\t\t- token.safeTransferFrom(from,feeRecipients[feeRecipients.length - 1],remaining) (src/exercise/BaseExercise.sol#82)\n\t- _pay(recipient,amount) (src/exercise/DiscountExercise.sol#248)\n\t\t- returndata = address(token).functionCall(data,SafeERC20: low-level call failed) (lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#110)\n\t\t- underlyingToken.safeTransfer(to,balance) (src/exercise/DiscountExercise.sol#256)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts/contracts/utils/Address.sol#135)\n\t\t- underlyingToken.safeTransfer(to,amount) (src/exercise/DiscountExercise.sol#259)\n\tExternal calls sending eth:\n\t- distributeFeesFrom(paymentAmount,paymentToken,from) (src/exercise/DiscountExercise.sol#246)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts/contracts/utils/Address.sol#135)\n\t- _pay(recipient,amount) (src/exercise/DiscountExercise.sol#248)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts/contracts/utils/Address.sol#135)\n\tEvent emitted after the call(s):\n\t- Exercised(from,recipient,amount,paymentAmount) (src/exercise/DiscountExercise.sol#250)\n", + "markdown": "Reentrancy in [DiscountExercise._redeem(address,uint256,address,DiscountExerciseParams)](src/exercise/DiscountExercise.sol#L234-L251):\n\tExternal calls:\n\t- [distributeFeesFrom(paymentAmount,paymentToken,from)](src/exercise/DiscountExercise.sol#L246)\n\t\t- [returndata = address(token).functionCall(data,SafeERC20: low-level call failed)](lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#L110)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135)\n\t\t- [token.safeTransferFrom(from,feeRecipients[i],feeAmount)](src/exercise/BaseExercise.sol#L79)\n\t\t- [token.safeTransferFrom(from,feeRecipients[feeRecipients.length - 1],remaining)](src/exercise/BaseExercise.sol#L82)\n\t- [_pay(recipient,amount)](src/exercise/DiscountExercise.sol#L248)\n\t\t- [returndata = address(token).functionCall(data,SafeERC20: low-level call failed)](lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#L110)\n\t\t- [underlyingToken.safeTransfer(to,balance)](src/exercise/DiscountExercise.sol#L256)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135)\n\t\t- [underlyingToken.safeTransfer(to,amount)](src/exercise/DiscountExercise.sol#L259)\n\tExternal calls sending eth:\n\t- [distributeFeesFrom(paymentAmount,paymentToken,from)](src/exercise/DiscountExercise.sol#L246)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135)\n\t- [_pay(recipient,amount)](src/exercise/DiscountExercise.sol#L248)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135)\n\tEvent emitted after the call(s):\n\t- [Exercised(from,recipient,amount,paymentAmount)](src/exercise/DiscountExercise.sol#L250)\n", + "first_markdown_element": "src/exercise/DiscountExercise.sol#L234-L251", + "id": "26caaa03d129daf1e06f63fba1f271327eb635ddffdba1b035775a48b226290d", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_swapVelo", + "source_mapping": { + "start": 862, + "length": 1768, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "VeloSolidMixin", + "source_mapping": { + "start": 313, + "length": 4635, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapVelo(address,address,uint256,uint256,address,uint256,bool)" + } + }, + { + "type": "node", + "name": "IERC20(_from).safeIncreaseAllowance(_router,_amount)", + "source_mapping": { + "start": 1784, + "length": 53, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 50 + ], + "starting_column": 9, + "ending_column": 62 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapVelo", + "source_mapping": { + "start": 862, + "length": 1768, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "VeloSolidMixin", + "source_mapping": { + "start": 313, + "length": 4635, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapVelo(address,address,uint256,uint256,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "router.swapExactTokensForTokensSupportingFeeOnTransferTokens(_amount,_minAmountOut,path,address(this),_deadline)", + "source_mapping": { + "start": 1889, + "length": 401, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapVelo", + "source_mapping": { + "start": 862, + "length": 1768, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "VeloSolidMixin", + "source_mapping": { + "start": 313, + "length": 4635, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapVelo(address,address,uint256,uint256,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "IERC20(_from).safeApprove(_router,0)", + "source_mapping": { + "start": 2160, + "length": 37, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 57 + ], + "starting_column": 17, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapVelo", + "source_mapping": { + "start": 862, + "length": 1768, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "VeloSolidMixin", + "source_mapping": { + "start": 313, + "length": 4635, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapVelo(address,address,uint256,uint256,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "SwapFailed(_router,_amount,_minAmountOut,_from,_to)", + "source_mapping": { + "start": 2215, + "length": 60, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 58 + ], + "starting_column": 17, + "ending_column": 77 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapVelo", + "source_mapping": { + "start": 862, + "length": 1768, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "VeloSolidMixin", + "source_mapping": { + "start": 313, + "length": 4635, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapVelo(address,address,uint256,uint256,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } + } + ], + "description": "Reentrancy in VeloSolidMixin._swapVelo(address,address,uint256,uint256,address,uint256,bool) (lib/vault-v2/src/mixins/VeloSolidMixin.sol#24-71):\n\tExternal calls:\n\t- IERC20(_from).safeIncreaseAllowance(_router,_amount) (lib/vault-v2/src/mixins/VeloSolidMixin.sol#50)\n\t- router.swapExactTokensForTokensSupportingFeeOnTransferTokens(_amount,_minAmountOut,path,address(this),_deadline) (lib/vault-v2/src/mixins/VeloSolidMixin.sol#52-59)\n\t- IERC20(_from).safeApprove(_router,0) (lib/vault-v2/src/mixins/VeloSolidMixin.sol#57)\n\tEvent emitted after the call(s):\n\t- SwapFailed(_router,_amount,_minAmountOut,_from,_to) (lib/vault-v2/src/mixins/VeloSolidMixin.sol#58)\n", + "markdown": "Reentrancy in [VeloSolidMixin._swapVelo(address,address,uint256,uint256,address,uint256,bool)](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L24-L71):\n\tExternal calls:\n\t- [IERC20(_from).safeIncreaseAllowance(_router,_amount)](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L50)\n\t- [router.swapExactTokensForTokensSupportingFeeOnTransferTokens(_amount,_minAmountOut,path,address(this),_deadline)](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L52-L59)\n\t- [IERC20(_from).safeApprove(_router,0)](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L57)\n\tEvent emitted after the call(s):\n\t- [SwapFailed(_router,_amount,_minAmountOut,_from,_to)](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L58)\n", + "first_markdown_element": "lib/vault-v2/src/mixins/VeloSolidMixin.sol#L24-L71", + "id": "64eb188174f60b500640995e6c3c45d0308f915abcaa5e5dfe2a2d61bb334e63", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "swapBal", + "source_mapping": { + "start": 6266, + "length": 509, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + }, + { + "type": "node", + "name": "_swapBal(_from,_to,_amount,minAmountOut,_vault,_deadline,_tryCatchActive)", + "source_mapping": { + "start": 6682, + "length": 86, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 183 + ], + "starting_column": 9, + "ending_column": 95 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapBal", + "source_mapping": { + "start": 6266, + "length": 509, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "returndata = address(token).functionCall(data,SafeERC20: low-level call failed)", + "source_mapping": { + "start": 4166, + "length": 95, + "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "is_dependency": true, + "lines": [ + 110 + ], + "starting_column": 9, + "ending_column": 104 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_callOptionalReturn", + "source_mapping": { + "start": 3747, + "length": 706, + "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "is_dependency": true, + "lines": [ + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "SafeERC20", + "source_mapping": { + "start": 707, + "length": 3748, + "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_callOptionalReturn(IERC20,bytes)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "(success,returndata) = target.call{value: value}(data)", + "source_mapping": { + "start": 5240, + "length": 73, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 135 + ], + "starting_column": 9, + "ending_column": 82 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "functionCallWithValue", + "source_mapping": { + "start": 4960, + "length": 446, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Address", + "source_mapping": { + "start": 194, + "length": 8964, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "functionCallWithValue(address,bytes,uint256,string)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "IERC20(_from).safeIncreaseAllowance(_vault,_amount - currentAllowance)", + "source_mapping": { + "start": 2092, + "length": 71, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 59 + ], + "starting_column": 13, + "ending_column": 84 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapBal", + "source_mapping": { + "start": 895, + "length": 1974, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BalMixin", + "source_mapping": { + "start": 307, + "length": 3662, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapBal(address,address,uint256,uint256,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "tmpAmountOut = IBeetVault(_vault).swap(singleSwap,funds,_minAmountOut,_deadline)", + "source_mapping": { + "start": 2294, + "length": 448, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapBal", + "source_mapping": { + "start": 895, + "length": 1974, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BalMixin", + "source_mapping": { + "start": 307, + "length": 3662, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapBal(address,address,uint256,uint256,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "IERC20(_from).safeApprove(_vault,0)", + "source_mapping": { + "start": 2596, + "length": 36, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 69 + ], + "starting_column": 21, + "ending_column": 57 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapBal", + "source_mapping": { + "start": 895, + "length": 1974, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BalMixin", + "source_mapping": { + "start": 307, + "length": 3662, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapBal(address,address,uint256,uint256,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "amountOut = IBeetVault(_vault).swap(singleSwap,funds,_minAmountOut,_deadline)", + "source_mapping": { + "start": 2772, + "length": 80, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 74 + ], + "starting_column": 13, + "ending_column": 93 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapBal", + "source_mapping": { + "start": 895, + "length": 1974, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BalMixin", + "source_mapping": { + "start": 307, + "length": 3662, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapBal(address,address,uint256,uint256,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "pullFromBefore(_from,_amount)", + "source_mapping": { + "start": 6497, + "length": 30, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 181 + ], + "starting_column": 14, + "ending_column": 44 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapBal", + "source_mapping": { + "start": 6266, + "length": 509, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "returndata = address(token).functionCall(data,SafeERC20: low-level call failed)", + "source_mapping": { + "start": 4298, + "length": 95, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "is_dependency": true, + "lines": [ + 110 + ], + "starting_column": 9, + "ending_column": 104 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_callOptionalReturn", + "source_mapping": { + "start": 3868, + "length": 717, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "is_dependency": true, + "lines": [ + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "SafeERC20Upgradeable", + "source_mapping": { + "start": 740, + "length": 3847, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_callOptionalReturn(IERC20Upgradeable,bytes)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "IERC20MetadataUpgradeable(_from).safeTransferFrom(msg.sender,address(this),_amount)", + "source_mapping": { + "start": 19490, + "length": 85, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 485 + ], + "starting_column": 9, + "ending_column": 94 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "pullFromBefore", + "source_mapping": { + "start": 19424, + "length": 169, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 484, + 485, + 486, + 487 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "pullFromBefore(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "(success,returndata) = target.call{value: value}(data)", + "source_mapping": { + "start": 5251, + "length": 73, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 135 + ], + "starting_column": 9, + "ending_column": 82 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "functionCallWithValue", + "source_mapping": { + "start": 4971, + "length": 446, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AddressUpgradeable", + "source_mapping": { + "start": 194, + "length": 8087, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "functionCallWithValue(address,bytes,uint256,string)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "pushFromAndToAfter(_from,_to)", + "source_mapping": { + "start": 6528, + "length": 30, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 181 + ], + "starting_column": 45, + "ending_column": 75 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapBal", + "source_mapping": { + "start": 6266, + "length": 509, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "returndata = address(token).functionCall(data,SafeERC20: low-level call failed)", + "source_mapping": { + "start": 4298, + "length": 95, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "is_dependency": true, + "lines": [ + 110 + ], + "starting_column": 9, + "ending_column": 104 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_callOptionalReturn", + "source_mapping": { + "start": 3868, + "length": 717, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "is_dependency": true, + "lines": [ + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "SafeERC20Upgradeable", + "source_mapping": { + "start": 740, + "length": 3847, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_callOptionalReturn(IERC20Upgradeable,bytes)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "IERC20MetadataUpgradeable(_from).safeTransfer(msg.sender,fromBal)", + "source_mapping": { + "start": 19793, + "length": 66, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 493 + ], + "starting_column": 13, + "ending_column": 79 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "pushFromAndToAfter", + "source_mapping": { + "start": 19599, + "length": 470, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "pushFromAndToAfter(address,address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "(success,returndata) = target.call{value: value}(data)", + "source_mapping": { + "start": 5251, + "length": 73, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 135 + ], + "starting_column": 9, + "ending_column": 82 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "functionCallWithValue", + "source_mapping": { + "start": 4971, + "length": 446, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AddressUpgradeable", + "source_mapping": { + "start": 194, + "length": 8087, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "functionCallWithValue(address,bytes,uint256,string)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "IERC20MetadataUpgradeable(_to).safeTransfer(msg.sender,toBal)", + "source_mapping": { + "start": 19990, + "length": 62, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 497 + ], + "starting_column": 13, + "ending_column": 75 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "pushFromAndToAfter", + "source_mapping": { + "start": 19599, + "length": 470, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "pushFromAndToAfter(address,address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "_swapBal(_from,_to,_amount,minAmountOut,_vault,_deadline,_tryCatchActive)", + "source_mapping": { + "start": 6682, + "length": 86, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 183 + ], + "starting_column": 9, + "ending_column": 95 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapBal", + "source_mapping": { + "start": 6266, + "length": 509, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "(success,returndata) = target.call{value: value}(data)", + "source_mapping": { + "start": 5240, + "length": 73, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 135 + ], + "starting_column": 9, + "ending_column": 82 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "functionCallWithValue", + "source_mapping": { + "start": 4960, + "length": 446, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Address", + "source_mapping": { + "start": 194, + "length": 8964, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "functionCallWithValue(address,bytes,uint256,string)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "pullFromBefore(_from,_amount)", + "source_mapping": { + "start": 6497, + "length": 30, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 181 + ], + "starting_column": 14, + "ending_column": 44 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapBal", + "source_mapping": { + "start": 6266, + "length": 509, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "(success,returndata) = target.call{value: value}(data)", + "source_mapping": { + "start": 5251, + "length": 73, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 135 + ], + "starting_column": 9, + "ending_column": 82 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "functionCallWithValue", + "source_mapping": { + "start": 4971, + "length": 446, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AddressUpgradeable", + "source_mapping": { + "start": 194, + "length": 8087, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "functionCallWithValue(address,bytes,uint256,string)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "pushFromAndToAfter(_from,_to)", + "source_mapping": { + "start": 6528, + "length": 30, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 181 + ], + "starting_column": 45, + "ending_column": 75 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapBal", + "source_mapping": { + "start": 6266, + "length": 509, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "(success,returndata) = target.call{value: value}(data)", + "source_mapping": { + "start": 5251, + "length": 73, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 135 + ], + "starting_column": 9, + "ending_column": 82 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "functionCallWithValue", + "source_mapping": { + "start": 4971, + "length": 446, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AddressUpgradeable", + "source_mapping": { + "start": 194, + "length": 8087, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "functionCallWithValue(address,bytes,uint256,string)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "SwapFailed(_vault,_amount,_minAmountOut,_from,_to)", + "source_mapping": { + "start": 2668, + "length": 59, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 71 + ], + "starting_column": 17, + "ending_column": 76 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapBal", + "source_mapping": { + "start": 895, + "length": 1974, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BalMixin", + "source_mapping": { + "start": 307, + "length": 3662, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapBal(address,address,uint256,uint256,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } + }, + { + "type": "node", + "name": "_swapBal(_from,_to,_amount,minAmountOut,_vault,_deadline,_tryCatchActive)", + "source_mapping": { + "start": 6682, + "length": 86, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 183 + ], + "starting_column": 9, + "ending_column": 95 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapBal", + "source_mapping": { + "start": 6266, + "length": 509, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } + } + ], + "description": "Reentrancy in ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool) (lib/vault-v2/src/ReaperSwapper.sol#173-184):\n\tExternal calls:\n\t- _swapBal(_from,_to,_amount,minAmountOut,_vault,_deadline,_tryCatchActive) (lib/vault-v2/src/ReaperSwapper.sol#183)\n\t\t- returndata = address(token).functionCall(data,SafeERC20: low-level call failed) (lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#110)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts/contracts/utils/Address.sol#135)\n\t\t- IERC20(_from).safeIncreaseAllowance(_vault,_amount - currentAllowance) (lib/vault-v2/src/mixins/BalMixin.sol#59)\n\t\t- tmpAmountOut = IBeetVault(_vault).swap(singleSwap,funds,_minAmountOut,_deadline) (lib/vault-v2/src/mixins/BalMixin.sol#64-72)\n\t\t- IERC20(_from).safeApprove(_vault,0) (lib/vault-v2/src/mixins/BalMixin.sol#69)\n\t\t- amountOut = IBeetVault(_vault).swap(singleSwap,funds,_minAmountOut,_deadline) (lib/vault-v2/src/mixins/BalMixin.sol#74)\n\t- pullFromBefore(_from,_amount) (lib/vault-v2/src/ReaperSwapper.sol#181)\n\t\t- returndata = address(token).functionCall(data,SafeERC20: low-level call failed) (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#110)\n\t\t- IERC20MetadataUpgradeable(_from).safeTransferFrom(msg.sender,address(this),_amount) (lib/vault-v2/src/ReaperSwapper.sol#485)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#135)\n\t- pushFromAndToAfter(_from,_to) (lib/vault-v2/src/ReaperSwapper.sol#181)\n\t\t- returndata = address(token).functionCall(data,SafeERC20: low-level call failed) (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#110)\n\t\t- IERC20MetadataUpgradeable(_from).safeTransfer(msg.sender,fromBal) (lib/vault-v2/src/ReaperSwapper.sol#493)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#135)\n\t\t- IERC20MetadataUpgradeable(_to).safeTransfer(msg.sender,toBal) (lib/vault-v2/src/ReaperSwapper.sol#497)\n\tExternal calls sending eth:\n\t- _swapBal(_from,_to,_amount,minAmountOut,_vault,_deadline,_tryCatchActive) (lib/vault-v2/src/ReaperSwapper.sol#183)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts/contracts/utils/Address.sol#135)\n\t- pullFromBefore(_from,_amount) (lib/vault-v2/src/ReaperSwapper.sol#181)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#135)\n\t- pushFromAndToAfter(_from,_to) (lib/vault-v2/src/ReaperSwapper.sol#181)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#135)\n\tEvent emitted after the call(s):\n\t- SwapFailed(_vault,_amount,_minAmountOut,_from,_to) (lib/vault-v2/src/mixins/BalMixin.sol#71)\n\t\t- _swapBal(_from,_to,_amount,minAmountOut,_vault,_deadline,_tryCatchActive) (lib/vault-v2/src/ReaperSwapper.sol#183)\n", + "markdown": "Reentrancy in [ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)](lib/vault-v2/src/ReaperSwapper.sol#L173-L184):\n\tExternal calls:\n\t- [_swapBal(_from,_to,_amount,minAmountOut,_vault,_deadline,_tryCatchActive)](lib/vault-v2/src/ReaperSwapper.sol#L183)\n\t\t- [returndata = address(token).functionCall(data,SafeERC20: low-level call failed)](lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#L110)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135)\n\t\t- [IERC20(_from).safeIncreaseAllowance(_vault,_amount - currentAllowance)](lib/vault-v2/src/mixins/BalMixin.sol#L59)\n\t\t- [tmpAmountOut = IBeetVault(_vault).swap(singleSwap,funds,_minAmountOut,_deadline)](lib/vault-v2/src/mixins/BalMixin.sol#L64-L72)\n\t\t- [IERC20(_from).safeApprove(_vault,0)](lib/vault-v2/src/mixins/BalMixin.sol#L69)\n\t\t- [amountOut = IBeetVault(_vault).swap(singleSwap,funds,_minAmountOut,_deadline)](lib/vault-v2/src/mixins/BalMixin.sol#L74)\n\t- [pullFromBefore(_from,_amount)](lib/vault-v2/src/ReaperSwapper.sol#L181)\n\t\t- [returndata = address(token).functionCall(data,SafeERC20: low-level call failed)](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#L110)\n\t\t- [IERC20MetadataUpgradeable(_from).safeTransferFrom(msg.sender,address(this),_amount)](lib/vault-v2/src/ReaperSwapper.sol#L485)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L135)\n\t- [pushFromAndToAfter(_from,_to)](lib/vault-v2/src/ReaperSwapper.sol#L181)\n\t\t- [returndata = address(token).functionCall(data,SafeERC20: low-level call failed)](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#L110)\n\t\t- [IERC20MetadataUpgradeable(_from).safeTransfer(msg.sender,fromBal)](lib/vault-v2/src/ReaperSwapper.sol#L493)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L135)\n\t\t- [IERC20MetadataUpgradeable(_to).safeTransfer(msg.sender,toBal)](lib/vault-v2/src/ReaperSwapper.sol#L497)\n\tExternal calls sending eth:\n\t- [_swapBal(_from,_to,_amount,minAmountOut,_vault,_deadline,_tryCatchActive)](lib/vault-v2/src/ReaperSwapper.sol#L183)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135)\n\t- [pullFromBefore(_from,_amount)](lib/vault-v2/src/ReaperSwapper.sol#L181)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L135)\n\t- [pushFromAndToAfter(_from,_to)](lib/vault-v2/src/ReaperSwapper.sol#L181)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L135)\n\tEvent emitted after the call(s):\n\t- [SwapFailed(_vault,_amount,_minAmountOut,_from,_to)](lib/vault-v2/src/mixins/BalMixin.sol#L71)\n\t\t- [_swapBal(_from,_to,_amount,minAmountOut,_vault,_deadline,_tryCatchActive)](lib/vault-v2/src/ReaperSwapper.sol#L183)\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L173-L184", + "id": "6afd47a6cc546c6f39cd92034e38da33b560d04fbd75a1655a8c2dfb29e08cdd", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_swapUniV3", + "source_mapping": { + "start": 1138, + "length": 1499, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "UniV3Mixin", + "source_mapping": { + "start": 269, + "length": 4771, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapUniV3(UniV3Mixin.Params__swapUniV3)" + } + }, + { + "type": "node", + "name": "TransferHelper.safeApprove(path[0],_params.router,_params.amount)", + "source_mapping": { + "start": 1708, + "length": 67, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 49 + ], + "starting_column": 9, + "ending_column": 76 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapUniV3", + "source_mapping": { + "start": 1138, + "length": 1499, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "UniV3Mixin", + "source_mapping": { + "start": 269, + "length": 4771, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapUniV3(UniV3Mixin.Params__swapUniV3)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "tmpAmountOut = ISwapRouter(_params.router).exactInput(params)", + "source_mapping": { + "start": 2186, + "length": 346, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 60, + 61, + 62, + 63, + 64, + 65 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapUniV3", + "source_mapping": { + "start": 1138, + "length": 1499, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "UniV3Mixin", + "source_mapping": { + "start": 269, + "length": 4771, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapUniV3(UniV3Mixin.Params__swapUniV3)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "TransferHelper.safeApprove(path[0],_params.router,0)", + "source_mapping": { + "start": 2350, + "length": 54, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 63 + ], + "starting_column": 17, + "ending_column": 71 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapUniV3", + "source_mapping": { + "start": 1138, + "length": 1499, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "UniV3Mixin", + "source_mapping": { + "start": 269, + "length": 4771, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapUniV3(UniV3Mixin.Params__swapUniV3)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "SwapFailed(_params.router,_params.amount,_params.minAmountOut,_params.from,_params.to)", + "source_mapping": { + "start": 2422, + "length": 95, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 64 + ], + "starting_column": 17, + "ending_column": 112 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapUniV3", + "source_mapping": { + "start": 1138, + "length": 1499, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "UniV3Mixin", + "source_mapping": { + "start": 269, + "length": 4771, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapUniV3(UniV3Mixin.Params__swapUniV3)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } + } + ], + "description": "Reentrancy in UniV3Mixin._swapUniV3(UniV3Mixin.Params__swapUniV3) (lib/vault-v2/src/mixins/UniV3Mixin.sol#38-69):\n\tExternal calls:\n\t- TransferHelper.safeApprove(path[0],_params.router,_params.amount) (lib/vault-v2/src/mixins/UniV3Mixin.sol#49)\n\t- tmpAmountOut = ISwapRouter(_params.router).exactInput(params) (lib/vault-v2/src/mixins/UniV3Mixin.sol#60-65)\n\t- TransferHelper.safeApprove(path[0],_params.router,0) (lib/vault-v2/src/mixins/UniV3Mixin.sol#63)\n\tEvent emitted after the call(s):\n\t- SwapFailed(_params.router,_params.amount,_params.minAmountOut,_params.from,_params.to) (lib/vault-v2/src/mixins/UniV3Mixin.sol#64)\n", + "markdown": "Reentrancy in [UniV3Mixin._swapUniV3(UniV3Mixin.Params__swapUniV3)](lib/vault-v2/src/mixins/UniV3Mixin.sol#L38-L69):\n\tExternal calls:\n\t- [TransferHelper.safeApprove(path[0],_params.router,_params.amount)](lib/vault-v2/src/mixins/UniV3Mixin.sol#L49)\n\t- [tmpAmountOut = ISwapRouter(_params.router).exactInput(params)](lib/vault-v2/src/mixins/UniV3Mixin.sol#L60-L65)\n\t- [TransferHelper.safeApprove(path[0],_params.router,0)](lib/vault-v2/src/mixins/UniV3Mixin.sol#L63)\n\tEvent emitted after the call(s):\n\t- [SwapFailed(_params.router,_params.amount,_params.minAmountOut,_params.from,_params.to)](lib/vault-v2/src/mixins/UniV3Mixin.sol#L64)\n", + "first_markdown_element": "lib/vault-v2/src/mixins/UniV3Mixin.sol#L38-L69", + "id": "7476c00ea23c811b6774a0358c1ce4170dea75590e0878323a36cacc5adb0379", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_swapBal", + "source_mapping": { + "start": 895, + "length": 1974, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BalMixin", + "source_mapping": { + "start": 307, + "length": 3662, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapBal(address,address,uint256,uint256,address,uint256,bool)" + } + }, + { + "type": "node", + "name": "IERC20(_from).safeIncreaseAllowance(_vault,_amount - currentAllowance)", + "source_mapping": { + "start": 2092, + "length": 71, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 59 + ], + "starting_column": 13, + "ending_column": 84 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapBal", + "source_mapping": { + "start": 895, + "length": 1974, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BalMixin", + "source_mapping": { + "start": 307, + "length": 3662, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapBal(address,address,uint256,uint256,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "tmpAmountOut = IBeetVault(_vault).swap(singleSwap,funds,_minAmountOut,_deadline)", + "source_mapping": { + "start": 2294, + "length": 448, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapBal", + "source_mapping": { + "start": 895, + "length": 1974, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BalMixin", + "source_mapping": { + "start": 307, + "length": 3662, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapBal(address,address,uint256,uint256,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "IERC20(_from).safeApprove(_vault,0)", + "source_mapping": { + "start": 2596, + "length": 36, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 69 + ], + "starting_column": 21, + "ending_column": 57 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapBal", + "source_mapping": { + "start": 895, + "length": 1974, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BalMixin", + "source_mapping": { + "start": 307, + "length": 3662, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapBal(address,address,uint256,uint256,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "SwapFailed(_vault,_amount,_minAmountOut,_from,_to)", + "source_mapping": { + "start": 2668, + "length": 59, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 71 + ], + "starting_column": 17, + "ending_column": 76 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapBal", + "source_mapping": { + "start": 895, + "length": 1974, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BalMixin", + "source_mapping": { + "start": 307, + "length": 3662, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapBal(address,address,uint256,uint256,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } + } + ], + "description": "Reentrancy in BalMixin._swapBal(address,address,uint256,uint256,address,uint256,bool) (lib/vault-v2/src/mixins/BalMixin.sol#25-76):\n\tExternal calls:\n\t- IERC20(_from).safeIncreaseAllowance(_vault,_amount - currentAllowance) (lib/vault-v2/src/mixins/BalMixin.sol#59)\n\t- tmpAmountOut = IBeetVault(_vault).swap(singleSwap,funds,_minAmountOut,_deadline) (lib/vault-v2/src/mixins/BalMixin.sol#64-72)\n\t- IERC20(_from).safeApprove(_vault,0) (lib/vault-v2/src/mixins/BalMixin.sol#69)\n\tEvent emitted after the call(s):\n\t- SwapFailed(_vault,_amount,_minAmountOut,_from,_to) (lib/vault-v2/src/mixins/BalMixin.sol#71)\n", + "markdown": "Reentrancy in [BalMixin._swapBal(address,address,uint256,uint256,address,uint256,bool)](lib/vault-v2/src/mixins/BalMixin.sol#L25-L76):\n\tExternal calls:\n\t- [IERC20(_from).safeIncreaseAllowance(_vault,_amount - currentAllowance)](lib/vault-v2/src/mixins/BalMixin.sol#L59)\n\t- [tmpAmountOut = IBeetVault(_vault).swap(singleSwap,funds,_minAmountOut,_deadline)](lib/vault-v2/src/mixins/BalMixin.sol#L64-L72)\n\t- [IERC20(_from).safeApprove(_vault,0)](lib/vault-v2/src/mixins/BalMixin.sol#L69)\n\tEvent emitted after the call(s):\n\t- [SwapFailed(_vault,_amount,_minAmountOut,_from,_to)](lib/vault-v2/src/mixins/BalMixin.sol#L71)\n", + "first_markdown_element": "lib/vault-v2/src/mixins/BalMixin.sol#L25-L76", + "id": "77714ef1ffc67e587fe7e535481ee61f37a6029f67e7f2a1b6502b530a92b385", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_exercise", + "source_mapping": { + "start": 5470, + "length": 847, + "filename_relative": "src/OptionsToken.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", + "filename_short": "src/OptionsToken.sol", + "is_dependency": false, + "lines": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OptionsToken", + "source_mapping": { + "start": 691, + "length": 7138, + "filename_relative": "src/OptionsToken.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", + "filename_short": "src/OptionsToken.sol", + "is_dependency": false, + "lines": [ + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_exercise(uint256,address,address,bytes)" + } + }, + { + "type": "node", + "name": "(paymentAmount,data0,data1,data2) = IExercise(option).exercise(msg.sender,amount,recipient,params)", + "source_mapping": { + "start": 6108, + "length": 104, + "filename_relative": "src/OptionsToken.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", + "filename_short": "src/OptionsToken.sol", + "is_dependency": false, + "lines": [ + 148 + ], + "starting_column": 9, + "ending_column": 113 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_exercise", + "source_mapping": { + "start": 5470, + "length": 847, + "filename_relative": "src/OptionsToken.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", + "filename_short": "src/OptionsToken.sol", + "is_dependency": false, + "lines": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OptionsToken", + "source_mapping": { + "start": 691, + "length": 7138, + "filename_relative": "src/OptionsToken.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", + "filename_short": "src/OptionsToken.sol", + "is_dependency": false, + "lines": [ + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_exercise(uint256,address,address,bytes)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "Exercise(msg.sender,recipient,amount,data0,data1,data2)", + "source_mapping": { + "start": 6245, + "length": 65, + "filename_relative": "src/OptionsToken.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", + "filename_short": "src/OptionsToken.sol", + "is_dependency": false, + "lines": [ + 151 + ], + "starting_column": 9, + "ending_column": 74 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_exercise", + "source_mapping": { + "start": 5470, + "length": 847, + "filename_relative": "src/OptionsToken.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", + "filename_short": "src/OptionsToken.sol", + "is_dependency": false, + "lines": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OptionsToken", + "source_mapping": { + "start": 691, + "length": 7138, + "filename_relative": "src/OptionsToken.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", + "filename_short": "src/OptionsToken.sol", + "is_dependency": false, + "lines": [ + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_exercise(uint256,address,address,bytes)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } + } + ], + "description": "Reentrancy in OptionsToken._exercise(uint256,address,address,bytes) (src/OptionsToken.sol#128-152):\n\tExternal calls:\n\t- (paymentAmount,data0,data1,data2) = IExercise(option).exercise(msg.sender,amount,recipient,params) (src/OptionsToken.sol#148)\n\tEvent emitted after the call(s):\n\t- Exercise(msg.sender,recipient,amount,data0,data1,data2) (src/OptionsToken.sol#151)\n", + "markdown": "Reentrancy in [OptionsToken._exercise(uint256,address,address,bytes)](src/OptionsToken.sol#L128-L152):\n\tExternal calls:\n\t- [(paymentAmount,data0,data1,data2) = IExercise(option).exercise(msg.sender,amount,recipient,params)](src/OptionsToken.sol#L148)\n\tEvent emitted after the call(s):\n\t- [Exercise(msg.sender,recipient,amount,data0,data1,data2)](src/OptionsToken.sol#L151)\n", + "first_markdown_element": "src/OptionsToken.sol#L128-L152", + "id": "9647d6058a2a1f10ef7714d6f960ae5b85d86b4e1fcd2ffd512fd2031b5d6fe7", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_swapUniV2", + "source_mapping": { + "start": 748, + "length": 1626, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "UniV2Mixin", + "source_mapping": { + "start": 234, + "length": 4634, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapUniV2(address,address,uint256,uint256,address,uint256,bool)" + } + }, + { + "type": "node", + "name": "IERC20(_from).safeIncreaseAllowance(_router,_amount)", + "source_mapping": { + "start": 1488, + "length": 53, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 42 + ], + "starting_column": 9, + "ending_column": 62 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapUniV2", + "source_mapping": { + "start": 748, + "length": 1626, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "UniV2Mixin", + "source_mapping": { + "start": 234, + "length": 4634, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapUniV2(address,address,uint256,uint256,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "IUniswapV2Router02(_router).swapExactTokensForTokensSupportingFeeOnTransferTokens(_amount,_minAmountOut,path,address(this),_deadline)", + "source_mapping": { + "start": 1662, + "length": 422, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapUniV2", + "source_mapping": { + "start": 748, + "length": 1626, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "UniV2Mixin", + "source_mapping": { + "start": 234, + "length": 4634, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapUniV2(address,address,uint256,uint256,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "IERC20(_from).safeApprove(_router,0)", + "source_mapping": { + "start": 1954, + "length": 37, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 51 + ], + "starting_column": 17, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapUniV2", + "source_mapping": { + "start": 748, + "length": 1626, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "UniV2Mixin", + "source_mapping": { + "start": 234, + "length": 4634, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapUniV2(address,address,uint256,uint256,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "SwapFailed(_router,_amount,_minAmountOut,_from,_to)", + "source_mapping": { + "start": 2009, + "length": 60, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 52 + ], + "starting_column": 17, + "ending_column": 77 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapUniV2", + "source_mapping": { + "start": 748, + "length": 1626, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "UniV2Mixin", + "source_mapping": { + "start": 234, + "length": 4634, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapUniV2(address,address,uint256,uint256,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } + } + ], + "description": "Reentrancy in UniV2Mixin._swapUniV2(address,address,uint256,uint256,address,uint256,bool) (lib/vault-v2/src/mixins/UniV2Mixin.sol#20-60):\n\tExternal calls:\n\t- IERC20(_from).safeIncreaseAllowance(_router,_amount) (lib/vault-v2/src/mixins/UniV2Mixin.sol#42)\n\t- IUniswapV2Router02(_router).swapExactTokensForTokensSupportingFeeOnTransferTokens(_amount,_minAmountOut,path,address(this),_deadline) (lib/vault-v2/src/mixins/UniV2Mixin.sol#46-53)\n\t- IERC20(_from).safeApprove(_router,0) (lib/vault-v2/src/mixins/UniV2Mixin.sol#51)\n\tEvent emitted after the call(s):\n\t- SwapFailed(_router,_amount,_minAmountOut,_from,_to) (lib/vault-v2/src/mixins/UniV2Mixin.sol#52)\n", + "markdown": "Reentrancy in [UniV2Mixin._swapUniV2(address,address,uint256,uint256,address,uint256,bool)](lib/vault-v2/src/mixins/UniV2Mixin.sol#L20-L60):\n\tExternal calls:\n\t- [IERC20(_from).safeIncreaseAllowance(_router,_amount)](lib/vault-v2/src/mixins/UniV2Mixin.sol#L42)\n\t- [IUniswapV2Router02(_router).swapExactTokensForTokensSupportingFeeOnTransferTokens(_amount,_minAmountOut,path,address(this),_deadline)](lib/vault-v2/src/mixins/UniV2Mixin.sol#L46-L53)\n\t- [IERC20(_from).safeApprove(_router,0)](lib/vault-v2/src/mixins/UniV2Mixin.sol#L51)\n\tEvent emitted after the call(s):\n\t- [SwapFailed(_router,_amount,_minAmountOut,_from,_to)](lib/vault-v2/src/mixins/UniV2Mixin.sol#L52)\n", + "first_markdown_element": "lib/vault-v2/src/mixins/UniV2Mixin.sol#L20-L60", + "id": "b59ab902647dd201a6cd9aca4552dafa018066963efcc3219bd8955570f9b1e5", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "distributeFeesFrom", + "source_mapping": { + "start": 3017, + "length": 554, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BaseExercise", + "source_mapping": { + "start": 432, + "length": 3936, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "distributeFeesFrom(uint256,IERC20,address)" + } + }, + { + "type": "node", + "name": "token.safeTransferFrom(from,feeRecipients[i],feeAmount)", + "source_mapping": { + "start": 3306, + "length": 57, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 79 + ], + "starting_column": 13, + "ending_column": 70 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "distributeFeesFrom", + "source_mapping": { + "start": 3017, + "length": 554, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BaseExercise", + "source_mapping": { + "start": 432, + "length": 3936, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "distributeFeesFrom(uint256,IERC20,address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "token.safeTransferFrom(from,feeRecipients[feeRecipients.length - 1],remaining)", + "source_mapping": { + "start": 3419, + "length": 80, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 82 + ], + "starting_column": 9, + "ending_column": 89 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "distributeFeesFrom", + "source_mapping": { + "start": 3017, + "length": 554, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BaseExercise", + "source_mapping": { + "start": 432, + "length": 3936, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "distributeFeesFrom(uint256,IERC20,address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "DistributeFees(feeRecipients,feeBPS,totalAmount)", + "source_mapping": { + "start": 3509, + "length": 55, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 83 + ], + "starting_column": 9, + "ending_column": 64 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "distributeFeesFrom", + "source_mapping": { + "start": 3017, + "length": 554, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BaseExercise", + "source_mapping": { + "start": 432, + "length": 3936, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "distributeFeesFrom(uint256,IERC20,address)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } + } + ], + "description": "Reentrancy in BaseExercise.distributeFeesFrom(uint256,IERC20,address) (src/exercise/BaseExercise.sol#75-84):\n\tExternal calls:\n\t- token.safeTransferFrom(from,feeRecipients[i],feeAmount) (src/exercise/BaseExercise.sol#79)\n\t- token.safeTransferFrom(from,feeRecipients[feeRecipients.length - 1],remaining) (src/exercise/BaseExercise.sol#82)\n\tEvent emitted after the call(s):\n\t- DistributeFees(feeRecipients,feeBPS,totalAmount) (src/exercise/BaseExercise.sol#83)\n", + "markdown": "Reentrancy in [BaseExercise.distributeFeesFrom(uint256,IERC20,address)](src/exercise/BaseExercise.sol#L75-L84):\n\tExternal calls:\n\t- [token.safeTransferFrom(from,feeRecipients[i],feeAmount)](src/exercise/BaseExercise.sol#L79)\n\t- [token.safeTransferFrom(from,feeRecipients[feeRecipients.length - 1],remaining)](src/exercise/BaseExercise.sol#L82)\n\tEvent emitted after the call(s):\n\t- [DistributeFees(feeRecipients,feeBPS,totalAmount)](src/exercise/BaseExercise.sol#L83)\n", + "first_markdown_element": "src/exercise/BaseExercise.sol#L75-L84", + "id": "bf1b099632b824aafcfad9a23ac98bf3dcb6b4fb4b4b5ae04e209e3b61acc42f", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "distributeFees", + "source_mapping": { + "start": 3762, + "length": 604, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BaseExercise", + "source_mapping": { + "start": 432, + "length": 3936, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "distributeFees(uint256,IERC20)" + } + }, + { + "type": "node", + "name": "token.safeTransfer(feeRecipients[i],feeAmount)", + "source_mapping": { + "start": 4121, + "length": 47, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 94 + ], + "starting_column": 13, + "ending_column": 60 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "distributeFees", + "source_mapping": { + "start": 3762, + "length": 604, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BaseExercise", + "source_mapping": { + "start": 432, + "length": 3936, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "distributeFees(uint256,IERC20)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "token.safeTransfer(feeRecipients[feeRecipients.length - 1],remaining)", + "source_mapping": { + "start": 4224, + "length": 70, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 97 + ], + "starting_column": 9, + "ending_column": 79 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "distributeFees", + "source_mapping": { + "start": 3762, + "length": 604, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BaseExercise", + "source_mapping": { + "start": 432, + "length": 3936, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "distributeFees(uint256,IERC20)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "DistributeFees(feeRecipients,feeBPS,totalAmount)", + "source_mapping": { + "start": 4304, + "length": 55, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 98 + ], + "starting_column": 9, + "ending_column": 64 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "distributeFees", + "source_mapping": { + "start": 3762, + "length": 604, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BaseExercise", + "source_mapping": { + "start": 432, + "length": 3936, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "distributeFees(uint256,IERC20)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } + } + ], + "description": "Reentrancy in BaseExercise.distributeFees(uint256,IERC20) (src/exercise/BaseExercise.sol#88-99):\n\tExternal calls:\n\t- token.safeTransfer(feeRecipients[i],feeAmount) (src/exercise/BaseExercise.sol#94)\n\t- token.safeTransfer(feeRecipients[feeRecipients.length - 1],remaining) (src/exercise/BaseExercise.sol#97)\n\tEvent emitted after the call(s):\n\t- DistributeFees(feeRecipients,feeBPS,totalAmount) (src/exercise/BaseExercise.sol#98)\n", + "markdown": "Reentrancy in [BaseExercise.distributeFees(uint256,IERC20)](src/exercise/BaseExercise.sol#L88-L99):\n\tExternal calls:\n\t- [token.safeTransfer(feeRecipients[i],feeAmount)](src/exercise/BaseExercise.sol#L94)\n\t- [token.safeTransfer(feeRecipients[feeRecipients.length - 1],remaining)](src/exercise/BaseExercise.sol#L97)\n\tEvent emitted after the call(s):\n\t- [DistributeFees(feeRecipients,feeBPS,totalAmount)](src/exercise/BaseExercise.sol#L98)\n", + "first_markdown_element": "src/exercise/BaseExercise.sol#L88-L99", + "id": "cc6f76bc69057bc8d1566793027f78e4e33511dc9a9f9b389b45a7c32f934e73", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_zap", + "source_mapping": { + "start": 6830, + "length": 2292, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_zap(address,uint256,address,DiscountExerciseParams)" + } + }, + { + "type": "node", + "name": "underlyingToken.approve(swapProps.swapper,feeAmount)", + "source_mapping": { + "start": 8058, + "length": 53, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 213 + ], + "starting_column": 13, + "ending_column": 66 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_zap", + "source_mapping": { + "start": 6830, + "length": 2292, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_zap(address,uint256,address,DiscountExerciseParams)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "_generalSwap(swapProps.exchangeTypes,address(underlyingToken),address(paymentToken),feeAmount,minAmountOut,swapProps.exchangeAddress)", + "source_mapping": { + "start": 8277, + "length": 138, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 216 + ], + "starting_column": 13, + "ending_column": 151 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_zap", + "source_mapping": { + "start": 6830, + "length": 2292, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_zap(address,uint256,address,DiscountExerciseParams)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "_swapper.swapUniV2(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)", + "source_mapping": { + "start": 2488, + "length": 80, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 75 + ], + "starting_column": 13, + "ending_column": 93 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_generalSwap", + "source_mapping": { + "start": 2091, + "length": 1014, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "SwapHelper", + "source_mapping": { + "start": 514, + "length": 3269, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_generalSwap(ExchangeType,address,address,uint256,uint256,address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "_swapper.swapBal(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)", + "source_mapping": { + "start": 2631, + "length": 78, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 77 + ], + "starting_column": 13, + "ending_column": 91 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_generalSwap", + "source_mapping": { + "start": 2091, + "length": 1014, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "SwapHelper", + "source_mapping": { + "start": 514, + "length": 3269, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_generalSwap(ExchangeType,address,address,uint256,uint256,address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "_swapper.swapVelo(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)", + "source_mapping": { + "start": 2778, + "length": 79, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 79 + ], + "starting_column": 13, + "ending_column": 92 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_generalSwap", + "source_mapping": { + "start": 2091, + "length": 1014, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "SwapHelper", + "source_mapping": { + "start": 514, + "length": 3269, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_generalSwap(ExchangeType,address,address,uint256,uint256,address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "_swapper.swapUniV3(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)", + "source_mapping": { + "start": 2922, + "length": 80, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 81 + ], + "starting_column": 13, + "ending_column": 93 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_generalSwap", + "source_mapping": { + "start": 2091, + "length": 1014, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "SwapHelper", + "source_mapping": { + "start": 514, + "length": 3269, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_generalSwap(ExchangeType,address,address,uint256,uint256,address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "distributeFees(paymentToken.balanceOf(address(this)),paymentToken)", + "source_mapping": { + "start": 8593, + "length": 67, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 220 + ], + "starting_column": 13, + "ending_column": 80 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_zap", + "source_mapping": { + "start": 6830, + "length": 2292, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_zap(address,uint256,address,DiscountExerciseParams)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "returndata = address(token).functionCall(data,SafeERC20: low-level call failed)", + "source_mapping": { + "start": 4166, + "length": 95, + "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "is_dependency": true, + "lines": [ + 110 + ], + "starting_column": 9, + "ending_column": 104 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_callOptionalReturn", + "source_mapping": { + "start": 3747, + "length": 706, + "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "is_dependency": true, + "lines": [ + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "SafeERC20", + "source_mapping": { + "start": 707, + "length": 3748, + "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_callOptionalReturn(IERC20,bytes)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "(success,returndata) = target.call{value: value}(data)", + "source_mapping": { + "start": 5240, + "length": 73, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 135 + ], + "starting_column": 9, + "ending_column": 82 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "functionCallWithValue", + "source_mapping": { + "start": 4960, + "length": 446, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Address", + "source_mapping": { + "start": 194, + "length": 8964, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "functionCallWithValue(address,bytes,uint256,string)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "token.safeTransfer(feeRecipients[i],feeAmount)", + "source_mapping": { + "start": 4121, + "length": 47, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 94 + ], + "starting_column": 13, + "ending_column": 60 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "distributeFees", + "source_mapping": { + "start": 3762, + "length": 604, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BaseExercise", + "source_mapping": { + "start": 432, + "length": 3936, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "distributeFees(uint256,IERC20)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "token.safeTransfer(feeRecipients[feeRecipients.length - 1],remaining)", + "source_mapping": { + "start": 4224, + "length": 70, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 97 + ], + "starting_column": 9, + "ending_column": 79 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "distributeFees", + "source_mapping": { + "start": 3762, + "length": 604, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BaseExercise", + "source_mapping": { + "start": 432, + "length": 3936, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "distributeFees(uint256,IERC20)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "_pay(recipient,underlyingAmount)", + "source_mapping": { + "start": 9007, + "length": 33, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 228 + ], + "starting_column": 9, + "ending_column": 42 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_zap", + "source_mapping": { + "start": 6830, + "length": 2292, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_zap(address,uint256,address,DiscountExerciseParams)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "returndata = address(token).functionCall(data,SafeERC20: low-level call failed)", + "source_mapping": { + "start": 4166, + "length": 95, + "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "is_dependency": true, + "lines": [ + 110 + ], + "starting_column": 9, + "ending_column": 104 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_callOptionalReturn", + "source_mapping": { + "start": 3747, + "length": 706, + "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "is_dependency": true, + "lines": [ + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "SafeERC20", + "source_mapping": { + "start": 707, + "length": 3748, + "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_callOptionalReturn(IERC20,bytes)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "underlyingToken.safeTransfer(to,balance)", + "source_mapping": { + "start": 10112, + "length": 41, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 256 + ], + "starting_column": 13, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_pay", + "source_mapping": { + "start": 9913, + "length": 415, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_pay(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "(success,returndata) = target.call{value: value}(data)", + "source_mapping": { + "start": 5240, + "length": 73, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 135 + ], + "starting_column": 9, + "ending_column": 82 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "functionCallWithValue", + "source_mapping": { + "start": 4960, + "length": 446, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Address", + "source_mapping": { + "start": 194, + "length": 8964, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "functionCallWithValue(address,bytes,uint256,string)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "underlyingToken.safeTransfer(to,amount)", + "source_mapping": { + "start": 10232, + "length": 40, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 259 + ], + "starting_column": 13, + "ending_column": 53 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_pay", + "source_mapping": { + "start": 9913, + "length": 415, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_pay(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "distributeFees(paymentToken.balanceOf(address(this)),paymentToken)", + "source_mapping": { + "start": 8593, + "length": 67, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 220 + ], + "starting_column": 13, + "ending_column": 80 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_zap", + "source_mapping": { + "start": 6830, + "length": 2292, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_zap(address,uint256,address,DiscountExerciseParams)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "(success,returndata) = target.call{value: value}(data)", + "source_mapping": { + "start": 5240, + "length": 73, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 135 + ], + "starting_column": 9, + "ending_column": 82 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "functionCallWithValue", + "source_mapping": { + "start": 4960, + "length": 446, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Address", + "source_mapping": { + "start": 194, + "length": 8964, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "functionCallWithValue(address,bytes,uint256,string)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "_pay(recipient,underlyingAmount)", + "source_mapping": { + "start": 9007, + "length": 33, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 228 + ], + "starting_column": 9, + "ending_column": 42 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_zap", + "source_mapping": { + "start": 6830, + "length": 2292, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_zap(address,uint256,address,DiscountExerciseParams)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "(success,returndata) = target.call{value: value}(data)", + "source_mapping": { + "start": 5240, + "length": 73, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 135 + ], + "starting_column": 9, + "ending_column": 82 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "functionCallWithValue", + "source_mapping": { + "start": 4960, + "length": 446, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Address", + "source_mapping": { + "start": 194, + "length": 8964, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "functionCallWithValue(address,bytes,uint256,string)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "Exercised(from,recipient,underlyingAmount,paymentAmount)", + "source_mapping": { + "start": 9051, + "length": 64, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 230 + ], + "starting_column": 9, + "ending_column": 73 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_zap", + "source_mapping": { + "start": 6830, + "length": 2292, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_zap(address,uint256,address,DiscountExerciseParams)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } + } + ], + "description": "Reentrancy in DiscountExercise._zap(address,uint256,address,DiscountExerciseParams) (src/exercise/DiscountExercise.sol#192-231):\n\tExternal calls:\n\t- underlyingToken.approve(swapProps.swapper,feeAmount) (src/exercise/DiscountExercise.sol#213)\n\t- _generalSwap(swapProps.exchangeTypes,address(underlyingToken),address(paymentToken),feeAmount,minAmountOut,swapProps.exchangeAddress) (src/exercise/DiscountExercise.sol#216)\n\t\t- _swapper.swapUniV2(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress) (src/helpers/SwapHelper.sol#75)\n\t\t- _swapper.swapBal(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress) (src/helpers/SwapHelper.sol#77)\n\t\t- _swapper.swapVelo(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress) (src/helpers/SwapHelper.sol#79)\n\t\t- _swapper.swapUniV3(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress) (src/helpers/SwapHelper.sol#81)\n\t- distributeFees(paymentToken.balanceOf(address(this)),paymentToken) (src/exercise/DiscountExercise.sol#220)\n\t\t- returndata = address(token).functionCall(data,SafeERC20: low-level call failed) (lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#110)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts/contracts/utils/Address.sol#135)\n\t\t- token.safeTransfer(feeRecipients[i],feeAmount) (src/exercise/BaseExercise.sol#94)\n\t\t- token.safeTransfer(feeRecipients[feeRecipients.length - 1],remaining) (src/exercise/BaseExercise.sol#97)\n\t- _pay(recipient,underlyingAmount) (src/exercise/DiscountExercise.sol#228)\n\t\t- returndata = address(token).functionCall(data,SafeERC20: low-level call failed) (lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#110)\n\t\t- underlyingToken.safeTransfer(to,balance) (src/exercise/DiscountExercise.sol#256)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts/contracts/utils/Address.sol#135)\n\t\t- underlyingToken.safeTransfer(to,amount) (src/exercise/DiscountExercise.sol#259)\n\tExternal calls sending eth:\n\t- distributeFees(paymentToken.balanceOf(address(this)),paymentToken) (src/exercise/DiscountExercise.sol#220)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts/contracts/utils/Address.sol#135)\n\t- _pay(recipient,underlyingAmount) (src/exercise/DiscountExercise.sol#228)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts/contracts/utils/Address.sol#135)\n\tEvent emitted after the call(s):\n\t- Exercised(from,recipient,underlyingAmount,paymentAmount) (src/exercise/DiscountExercise.sol#230)\n", + "markdown": "Reentrancy in [DiscountExercise._zap(address,uint256,address,DiscountExerciseParams)](src/exercise/DiscountExercise.sol#L192-L231):\n\tExternal calls:\n\t- [underlyingToken.approve(swapProps.swapper,feeAmount)](src/exercise/DiscountExercise.sol#L213)\n\t- [_generalSwap(swapProps.exchangeTypes,address(underlyingToken),address(paymentToken),feeAmount,minAmountOut,swapProps.exchangeAddress)](src/exercise/DiscountExercise.sol#L216)\n\t\t- [_swapper.swapUniV2(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L75)\n\t\t- [_swapper.swapBal(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L77)\n\t\t- [_swapper.swapVelo(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L79)\n\t\t- [_swapper.swapUniV3(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L81)\n\t- [distributeFees(paymentToken.balanceOf(address(this)),paymentToken)](src/exercise/DiscountExercise.sol#L220)\n\t\t- [returndata = address(token).functionCall(data,SafeERC20: low-level call failed)](lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#L110)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135)\n\t\t- [token.safeTransfer(feeRecipients[i],feeAmount)](src/exercise/BaseExercise.sol#L94)\n\t\t- [token.safeTransfer(feeRecipients[feeRecipients.length - 1],remaining)](src/exercise/BaseExercise.sol#L97)\n\t- [_pay(recipient,underlyingAmount)](src/exercise/DiscountExercise.sol#L228)\n\t\t- [returndata = address(token).functionCall(data,SafeERC20: low-level call failed)](lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#L110)\n\t\t- [underlyingToken.safeTransfer(to,balance)](src/exercise/DiscountExercise.sol#L256)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135)\n\t\t- [underlyingToken.safeTransfer(to,amount)](src/exercise/DiscountExercise.sol#L259)\n\tExternal calls sending eth:\n\t- [distributeFees(paymentToken.balanceOf(address(this)),paymentToken)](src/exercise/DiscountExercise.sol#L220)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135)\n\t- [_pay(recipient,underlyingAmount)](src/exercise/DiscountExercise.sol#L228)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135)\n\tEvent emitted after the call(s):\n\t- [Exercised(from,recipient,underlyingAmount,paymentAmount)](src/exercise/DiscountExercise.sol#L230)\n", + "first_markdown_element": "src/exercise/DiscountExercise.sol#L192-L231", + "id": "e13cadbb7879bfd546c8fbbad0a7fe265276aed28f548d1bc238ae613cc8ff47", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "swapUniV3", + "source_mapping": { + "start": 8558, + "length": 534, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + }, + { + "type": "node", + "name": "_swapUniV3(Params__swapUniV3(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive))", + "source_mapping": { + "start": 8977, + "length": 108, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 251 + ], + "starting_column": 9, + "ending_column": 117 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV3", + "source_mapping": { + "start": 8558, + "length": 534, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "(success,data) = token.call(abi.encodeWithSelector(IERC20.approve.selector,to,value))", + "source_mapping": { + "start": 1866, + "length": 106, + "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", + "is_dependency": true, + "lines": [ + 35 + ], + "starting_column": 9, + "ending_column": 115 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "safeApprove", + "source_mapping": { + "start": 1784, + "length": 277, + "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", + "is_dependency": true, + "lines": [ + 34, + 35, + 36, + 37 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TransferHelper", + "source_mapping": { + "start": 108, + "length": 2309, + "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", + "is_dependency": true, + "lines": [ + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "safeApprove(address,address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "TransferHelper.safeApprove(path[0],_params.router,_params.amount)", + "source_mapping": { + "start": 1708, + "length": 67, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 49 + ], + "starting_column": 9, + "ending_column": 76 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapUniV3", + "source_mapping": { + "start": 1138, + "length": 1499, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "UniV3Mixin", + "source_mapping": { + "start": 269, + "length": 4771, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapUniV3(UniV3Mixin.Params__swapUniV3)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "tmpAmountOut = ISwapRouter(_params.router).exactInput(params)", + "source_mapping": { + "start": 2186, + "length": 346, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 60, + 61, + 62, + 63, + 64, + 65 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapUniV3", + "source_mapping": { + "start": 1138, + "length": 1499, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "UniV3Mixin", + "source_mapping": { + "start": 269, + "length": 4771, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapUniV3(UniV3Mixin.Params__swapUniV3)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "TransferHelper.safeApprove(path[0],_params.router,0)", + "source_mapping": { + "start": 2350, + "length": 54, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 63 + ], + "starting_column": 17, + "ending_column": 71 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapUniV3", + "source_mapping": { + "start": 1138, + "length": 1499, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "UniV3Mixin", + "source_mapping": { + "start": 269, + "length": 4771, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapUniV3(UniV3Mixin.Params__swapUniV3)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "amountOut = ISwapRouter(_params.router).exactInput(params)", + "source_mapping": { + "start": 2562, + "length": 58, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 67 + ], + "starting_column": 13, + "ending_column": 71 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapUniV3", + "source_mapping": { + "start": 1138, + "length": 1499, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "UniV3Mixin", + "source_mapping": { + "start": 269, + "length": 4771, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapUniV3(UniV3Mixin.Params__swapUniV3)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "pullFromBefore(_from,_amount)", + "source_mapping": { + "start": 8792, + "length": 30, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 249 + ], + "starting_column": 14, + "ending_column": 44 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV3", + "source_mapping": { + "start": 8558, + "length": 534, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "returndata = address(token).functionCall(data,SafeERC20: low-level call failed)", + "source_mapping": { + "start": 4298, + "length": 95, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "is_dependency": true, + "lines": [ + 110 + ], + "starting_column": 9, + "ending_column": 104 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_callOptionalReturn", + "source_mapping": { + "start": 3868, + "length": 717, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "is_dependency": true, + "lines": [ + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "SafeERC20Upgradeable", + "source_mapping": { + "start": 740, + "length": 3847, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_callOptionalReturn(IERC20Upgradeable,bytes)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "IERC20MetadataUpgradeable(_from).safeTransferFrom(msg.sender,address(this),_amount)", + "source_mapping": { + "start": 19490, + "length": 85, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 485 + ], + "starting_column": 9, + "ending_column": 94 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "pullFromBefore", + "source_mapping": { + "start": 19424, + "length": 169, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 484, + 485, + 486, + 487 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "pullFromBefore(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "(success,returndata) = target.call{value: value}(data)", + "source_mapping": { + "start": 5251, + "length": 73, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 135 + ], + "starting_column": 9, + "ending_column": 82 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "functionCallWithValue", + "source_mapping": { + "start": 4971, + "length": 446, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AddressUpgradeable", + "source_mapping": { + "start": 194, + "length": 8087, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "functionCallWithValue(address,bytes,uint256,string)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "pushFromAndToAfter(_from,_to)", + "source_mapping": { + "start": 8823, + "length": 30, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 249 + ], + "starting_column": 45, + "ending_column": 75 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV3", + "source_mapping": { + "start": 8558, + "length": 534, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "returndata = address(token).functionCall(data,SafeERC20: low-level call failed)", + "source_mapping": { + "start": 4298, + "length": 95, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "is_dependency": true, + "lines": [ + 110 + ], + "starting_column": 9, + "ending_column": 104 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_callOptionalReturn", + "source_mapping": { + "start": 3868, + "length": 717, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "is_dependency": true, + "lines": [ + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "SafeERC20Upgradeable", + "source_mapping": { + "start": 740, + "length": 3847, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_callOptionalReturn(IERC20Upgradeable,bytes)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "IERC20MetadataUpgradeable(_from).safeTransfer(msg.sender,fromBal)", + "source_mapping": { + "start": 19793, + "length": 66, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 493 + ], + "starting_column": 13, + "ending_column": 79 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "pushFromAndToAfter", + "source_mapping": { + "start": 19599, + "length": 470, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "pushFromAndToAfter(address,address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "(success,returndata) = target.call{value: value}(data)", + "source_mapping": { + "start": 5251, + "length": 73, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 135 + ], + "starting_column": 9, + "ending_column": 82 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "functionCallWithValue", + "source_mapping": { + "start": 4971, + "length": 446, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AddressUpgradeable", + "source_mapping": { + "start": 194, + "length": 8087, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "functionCallWithValue(address,bytes,uint256,string)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "IERC20MetadataUpgradeable(_to).safeTransfer(msg.sender,toBal)", + "source_mapping": { + "start": 19990, + "length": 62, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 497 + ], + "starting_column": 13, + "ending_column": 75 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "pushFromAndToAfter", + "source_mapping": { + "start": 19599, + "length": 470, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "pushFromAndToAfter(address,address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "pullFromBefore(_from,_amount)", + "source_mapping": { + "start": 8792, + "length": 30, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 249 + ], + "starting_column": 14, + "ending_column": 44 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV3", + "source_mapping": { + "start": 8558, + "length": 534, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "(success,returndata) = target.call{value: value}(data)", + "source_mapping": { + "start": 5251, + "length": 73, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 135 + ], + "starting_column": 9, + "ending_column": 82 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "functionCallWithValue", + "source_mapping": { + "start": 4971, + "length": 446, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AddressUpgradeable", + "source_mapping": { + "start": 194, + "length": 8087, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "functionCallWithValue(address,bytes,uint256,string)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "pushFromAndToAfter(_from,_to)", + "source_mapping": { + "start": 8823, + "length": 30, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 249 + ], + "starting_column": 45, + "ending_column": 75 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV3", + "source_mapping": { + "start": 8558, + "length": 534, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "(success,returndata) = target.call{value: value}(data)", + "source_mapping": { + "start": 5251, + "length": 73, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 135 + ], + "starting_column": 9, + "ending_column": 82 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "functionCallWithValue", + "source_mapping": { + "start": 4971, + "length": 446, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AddressUpgradeable", + "source_mapping": { + "start": 194, + "length": 8087, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "functionCallWithValue(address,bytes,uint256,string)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "SwapFailed(_params.router,_params.amount,_params.minAmountOut,_params.from,_params.to)", + "source_mapping": { + "start": 2422, + "length": 95, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 64 + ], + "starting_column": 17, + "ending_column": 112 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapUniV3", + "source_mapping": { + "start": 1138, + "length": 1499, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "UniV3Mixin", + "source_mapping": { + "start": 269, + "length": 4771, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapUniV3(UniV3Mixin.Params__swapUniV3)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } + }, + { + "type": "node", + "name": "_swapUniV3(Params__swapUniV3(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive))", + "source_mapping": { + "start": 8977, + "length": 108, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 251 + ], + "starting_column": 9, + "ending_column": 117 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV3", + "source_mapping": { + "start": 8558, + "length": 534, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } + } + ], + "description": "Reentrancy in ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool) (lib/vault-v2/src/ReaperSwapper.sol#241-252):\n\tExternal calls:\n\t- _swapUniV3(Params__swapUniV3(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive)) (lib/vault-v2/src/ReaperSwapper.sol#251)\n\t\t- (success,data) = token.call(abi.encodeWithSelector(IERC20.approve.selector,to,value)) (lib/vault-v2/src/libraries/TransferHelper.sol#35)\n\t\t- TransferHelper.safeApprove(path[0],_params.router,_params.amount) (lib/vault-v2/src/mixins/UniV3Mixin.sol#49)\n\t\t- tmpAmountOut = ISwapRouter(_params.router).exactInput(params) (lib/vault-v2/src/mixins/UniV3Mixin.sol#60-65)\n\t\t- TransferHelper.safeApprove(path[0],_params.router,0) (lib/vault-v2/src/mixins/UniV3Mixin.sol#63)\n\t\t- amountOut = ISwapRouter(_params.router).exactInput(params) (lib/vault-v2/src/mixins/UniV3Mixin.sol#67)\n\t- pullFromBefore(_from,_amount) (lib/vault-v2/src/ReaperSwapper.sol#249)\n\t\t- returndata = address(token).functionCall(data,SafeERC20: low-level call failed) (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#110)\n\t\t- IERC20MetadataUpgradeable(_from).safeTransferFrom(msg.sender,address(this),_amount) (lib/vault-v2/src/ReaperSwapper.sol#485)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#135)\n\t- pushFromAndToAfter(_from,_to) (lib/vault-v2/src/ReaperSwapper.sol#249)\n\t\t- returndata = address(token).functionCall(data,SafeERC20: low-level call failed) (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#110)\n\t\t- IERC20MetadataUpgradeable(_from).safeTransfer(msg.sender,fromBal) (lib/vault-v2/src/ReaperSwapper.sol#493)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#135)\n\t\t- IERC20MetadataUpgradeable(_to).safeTransfer(msg.sender,toBal) (lib/vault-v2/src/ReaperSwapper.sol#497)\n\tExternal calls sending eth:\n\t- pullFromBefore(_from,_amount) (lib/vault-v2/src/ReaperSwapper.sol#249)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#135)\n\t- pushFromAndToAfter(_from,_to) (lib/vault-v2/src/ReaperSwapper.sol#249)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#135)\n\tEvent emitted after the call(s):\n\t- SwapFailed(_params.router,_params.amount,_params.minAmountOut,_params.from,_params.to) (lib/vault-v2/src/mixins/UniV3Mixin.sol#64)\n\t\t- _swapUniV3(Params__swapUniV3(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive)) (lib/vault-v2/src/ReaperSwapper.sol#251)\n", + "markdown": "Reentrancy in [ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)](lib/vault-v2/src/ReaperSwapper.sol#L241-L252):\n\tExternal calls:\n\t- [_swapUniV3(Params__swapUniV3(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive))](lib/vault-v2/src/ReaperSwapper.sol#L251)\n\t\t- [(success,data) = token.call(abi.encodeWithSelector(IERC20.approve.selector,to,value))](lib/vault-v2/src/libraries/TransferHelper.sol#L35)\n\t\t- [TransferHelper.safeApprove(path[0],_params.router,_params.amount)](lib/vault-v2/src/mixins/UniV3Mixin.sol#L49)\n\t\t- [tmpAmountOut = ISwapRouter(_params.router).exactInput(params)](lib/vault-v2/src/mixins/UniV3Mixin.sol#L60-L65)\n\t\t- [TransferHelper.safeApprove(path[0],_params.router,0)](lib/vault-v2/src/mixins/UniV3Mixin.sol#L63)\n\t\t- [amountOut = ISwapRouter(_params.router).exactInput(params)](lib/vault-v2/src/mixins/UniV3Mixin.sol#L67)\n\t- [pullFromBefore(_from,_amount)](lib/vault-v2/src/ReaperSwapper.sol#L249)\n\t\t- [returndata = address(token).functionCall(data,SafeERC20: low-level call failed)](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#L110)\n\t\t- [IERC20MetadataUpgradeable(_from).safeTransferFrom(msg.sender,address(this),_amount)](lib/vault-v2/src/ReaperSwapper.sol#L485)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L135)\n\t- [pushFromAndToAfter(_from,_to)](lib/vault-v2/src/ReaperSwapper.sol#L249)\n\t\t- [returndata = address(token).functionCall(data,SafeERC20: low-level call failed)](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#L110)\n\t\t- [IERC20MetadataUpgradeable(_from).safeTransfer(msg.sender,fromBal)](lib/vault-v2/src/ReaperSwapper.sol#L493)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L135)\n\t\t- [IERC20MetadataUpgradeable(_to).safeTransfer(msg.sender,toBal)](lib/vault-v2/src/ReaperSwapper.sol#L497)\n\tExternal calls sending eth:\n\t- [pullFromBefore(_from,_amount)](lib/vault-v2/src/ReaperSwapper.sol#L249)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L135)\n\t- [pushFromAndToAfter(_from,_to)](lib/vault-v2/src/ReaperSwapper.sol#L249)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L135)\n\tEvent emitted after the call(s):\n\t- [SwapFailed(_params.router,_params.amount,_params.minAmountOut,_params.from,_params.to)](lib/vault-v2/src/mixins/UniV3Mixin.sol#L64)\n\t\t- [_swapUniV3(Params__swapUniV3(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive))](lib/vault-v2/src/ReaperSwapper.sol#L251)\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L241-L252", + "id": "e7ec4df5ce298c28fd7e1b953f526ffa840951ed878c7159f2eb300e06952fab", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_zap", + "source_mapping": { + "start": 6830, + "length": 2292, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_zap(address,uint256,address,DiscountExerciseParams)" + } + }, + { + "type": "node", + "name": "underlyingToken.approve(swapProps.swapper,feeAmount)", + "source_mapping": { + "start": 8058, + "length": 53, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 213 + ], + "starting_column": 13, + "ending_column": 66 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_zap", + "source_mapping": { + "start": 6830, + "length": 2292, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_zap(address,uint256,address,DiscountExerciseParams)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "_generalSwap(swapProps.exchangeTypes,address(underlyingToken),address(paymentToken),feeAmount,minAmountOut,swapProps.exchangeAddress)", + "source_mapping": { + "start": 8277, + "length": 138, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 216 + ], + "starting_column": 13, + "ending_column": 151 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_zap", + "source_mapping": { + "start": 6830, + "length": 2292, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_zap(address,uint256,address,DiscountExerciseParams)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "_swapper.swapUniV2(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)", + "source_mapping": { + "start": 2488, + "length": 80, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 75 + ], + "starting_column": 13, + "ending_column": 93 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_generalSwap", + "source_mapping": { + "start": 2091, + "length": 1014, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "SwapHelper", + "source_mapping": { + "start": 514, + "length": 3269, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_generalSwap(ExchangeType,address,address,uint256,uint256,address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "_swapper.swapBal(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)", + "source_mapping": { + "start": 2631, + "length": 78, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 77 + ], + "starting_column": 13, + "ending_column": 91 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_generalSwap", + "source_mapping": { + "start": 2091, + "length": 1014, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "SwapHelper", + "source_mapping": { + "start": 514, + "length": 3269, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_generalSwap(ExchangeType,address,address,uint256,uint256,address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "_swapper.swapVelo(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)", + "source_mapping": { + "start": 2778, + "length": 79, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 79 + ], + "starting_column": 13, + "ending_column": 92 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_generalSwap", + "source_mapping": { + "start": 2091, + "length": 1014, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "SwapHelper", + "source_mapping": { + "start": 514, + "length": 3269, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_generalSwap(ExchangeType,address,address,uint256,uint256,address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "_swapper.swapUniV3(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)", + "source_mapping": { + "start": 2922, + "length": 80, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 81 + ], + "starting_column": 13, + "ending_column": 93 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_generalSwap", + "source_mapping": { + "start": 2091, + "length": 1014, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "SwapHelper", + "source_mapping": { + "start": 514, + "length": 3269, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_generalSwap(ExchangeType,address,address,uint256,uint256,address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "distributeFees(paymentToken.balanceOf(address(this)),paymentToken)", + "source_mapping": { + "start": 8593, + "length": 67, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 220 + ], + "starting_column": 13, + "ending_column": 80 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_zap", + "source_mapping": { + "start": 6830, + "length": 2292, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_zap(address,uint256,address,DiscountExerciseParams)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "returndata = address(token).functionCall(data,SafeERC20: low-level call failed)", + "source_mapping": { + "start": 4166, + "length": 95, + "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "is_dependency": true, + "lines": [ + 110 + ], + "starting_column": 9, + "ending_column": 104 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_callOptionalReturn", + "source_mapping": { + "start": 3747, + "length": 706, + "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "is_dependency": true, + "lines": [ + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "SafeERC20", + "source_mapping": { + "start": 707, + "length": 3748, + "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_callOptionalReturn(IERC20,bytes)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "(success,returndata) = target.call{value: value}(data)", + "source_mapping": { + "start": 5240, + "length": 73, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 135 + ], + "starting_column": 9, + "ending_column": 82 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "functionCallWithValue", + "source_mapping": { + "start": 4960, + "length": 446, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Address", + "source_mapping": { + "start": 194, + "length": 8964, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "functionCallWithValue(address,bytes,uint256,string)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "token.safeTransfer(feeRecipients[i],feeAmount)", + "source_mapping": { + "start": 4121, + "length": 47, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 94 + ], + "starting_column": 13, + "ending_column": 60 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "distributeFees", + "source_mapping": { + "start": 3762, + "length": 604, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BaseExercise", + "source_mapping": { + "start": 432, + "length": 3936, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "distributeFees(uint256,IERC20)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "token.safeTransfer(feeRecipients[feeRecipients.length - 1],remaining)", + "source_mapping": { + "start": 4224, + "length": 70, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 97 + ], + "starting_column": 9, + "ending_column": 79 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "distributeFees", + "source_mapping": { + "start": 3762, + "length": 604, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BaseExercise", + "source_mapping": { + "start": 432, + "length": 3936, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "distributeFees(uint256,IERC20)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "distributeFees(paymentToken.balanceOf(address(this)),paymentToken)", + "source_mapping": { + "start": 8593, + "length": 67, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 220 + ], + "starting_column": 13, + "ending_column": 80 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_zap", + "source_mapping": { + "start": 6830, + "length": 2292, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_zap(address,uint256,address,DiscountExerciseParams)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "(success,returndata) = target.call{value: value}(data)", + "source_mapping": { + "start": 5240, + "length": 73, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 135 + ], + "starting_column": 9, + "ending_column": 82 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "functionCallWithValue", + "source_mapping": { + "start": 4960, + "length": 446, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Address", + "source_mapping": { + "start": 194, + "length": 8964, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "functionCallWithValue(address,bytes,uint256,string)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "DistributeFees(feeRecipients,feeBPS,totalAmount)", + "source_mapping": { + "start": 4304, + "length": 55, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 98 + ], + "starting_column": 9, + "ending_column": 64 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "distributeFees", + "source_mapping": { + "start": 3762, + "length": 604, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BaseExercise", + "source_mapping": { + "start": 432, + "length": 3936, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "distributeFees(uint256,IERC20)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } + }, + { + "type": "node", + "name": "distributeFees(paymentToken.balanceOf(address(this)),paymentToken)", + "source_mapping": { + "start": 8593, + "length": 67, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 220 + ], + "starting_column": 13, + "ending_column": 80 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_zap", + "source_mapping": { + "start": 6830, + "length": 2292, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_zap(address,uint256,address,DiscountExerciseParams)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } + } + ], + "description": "Reentrancy in DiscountExercise._zap(address,uint256,address,DiscountExerciseParams) (src/exercise/DiscountExercise.sol#192-231):\n\tExternal calls:\n\t- underlyingToken.approve(swapProps.swapper,feeAmount) (src/exercise/DiscountExercise.sol#213)\n\t- _generalSwap(swapProps.exchangeTypes,address(underlyingToken),address(paymentToken),feeAmount,minAmountOut,swapProps.exchangeAddress) (src/exercise/DiscountExercise.sol#216)\n\t\t- _swapper.swapUniV2(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress) (src/helpers/SwapHelper.sol#75)\n\t\t- _swapper.swapBal(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress) (src/helpers/SwapHelper.sol#77)\n\t\t- _swapper.swapVelo(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress) (src/helpers/SwapHelper.sol#79)\n\t\t- _swapper.swapUniV3(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress) (src/helpers/SwapHelper.sol#81)\n\t- distributeFees(paymentToken.balanceOf(address(this)),paymentToken) (src/exercise/DiscountExercise.sol#220)\n\t\t- returndata = address(token).functionCall(data,SafeERC20: low-level call failed) (lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#110)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts/contracts/utils/Address.sol#135)\n\t\t- token.safeTransfer(feeRecipients[i],feeAmount) (src/exercise/BaseExercise.sol#94)\n\t\t- token.safeTransfer(feeRecipients[feeRecipients.length - 1],remaining) (src/exercise/BaseExercise.sol#97)\n\tExternal calls sending eth:\n\t- distributeFees(paymentToken.balanceOf(address(this)),paymentToken) (src/exercise/DiscountExercise.sol#220)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts/contracts/utils/Address.sol#135)\n\tEvent emitted after the call(s):\n\t- DistributeFees(feeRecipients,feeBPS,totalAmount) (src/exercise/BaseExercise.sol#98)\n\t\t- distributeFees(paymentToken.balanceOf(address(this)),paymentToken) (src/exercise/DiscountExercise.sol#220)\n", + "markdown": "Reentrancy in [DiscountExercise._zap(address,uint256,address,DiscountExerciseParams)](src/exercise/DiscountExercise.sol#L192-L231):\n\tExternal calls:\n\t- [underlyingToken.approve(swapProps.swapper,feeAmount)](src/exercise/DiscountExercise.sol#L213)\n\t- [_generalSwap(swapProps.exchangeTypes,address(underlyingToken),address(paymentToken),feeAmount,minAmountOut,swapProps.exchangeAddress)](src/exercise/DiscountExercise.sol#L216)\n\t\t- [_swapper.swapUniV2(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L75)\n\t\t- [_swapper.swapBal(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L77)\n\t\t- [_swapper.swapVelo(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L79)\n\t\t- [_swapper.swapUniV3(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L81)\n\t- [distributeFees(paymentToken.balanceOf(address(this)),paymentToken)](src/exercise/DiscountExercise.sol#L220)\n\t\t- [returndata = address(token).functionCall(data,SafeERC20: low-level call failed)](lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#L110)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135)\n\t\t- [token.safeTransfer(feeRecipients[i],feeAmount)](src/exercise/BaseExercise.sol#L94)\n\t\t- [token.safeTransfer(feeRecipients[feeRecipients.length - 1],remaining)](src/exercise/BaseExercise.sol#L97)\n\tExternal calls sending eth:\n\t- [distributeFees(paymentToken.balanceOf(address(this)),paymentToken)](src/exercise/DiscountExercise.sol#L220)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135)\n\tEvent emitted after the call(s):\n\t- [DistributeFees(feeRecipients,feeBPS,totalAmount)](src/exercise/BaseExercise.sol#L98)\n\t\t- [distributeFees(paymentToken.balanceOf(address(this)),paymentToken)](src/exercise/DiscountExercise.sol#L220)\n", + "first_markdown_element": "src/exercise/DiscountExercise.sol#L192-L231", + "id": "fac3c8628962c8c145b9cc713e68a80a082c54c497a1d117e7426d73343a5856", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "permit", + "source_mapping": { + "start": 3838, + "length": 1483, + "filename_relative": "lib/solmate/src/tokens/ERC20.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/tokens/ERC20.sol", + "filename_short": "lib/solmate/src/tokens/ERC20.sol", + "is_dependency": true, + "lines": [ + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ERC20", + "source_mapping": { + "start": 474, + "length": 6337, + "filename_relative": "lib/solmate/src/tokens/ERC20.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/tokens/ERC20.sol", + "filename_short": "lib/solmate/src/tokens/ERC20.sol", + "is_dependency": true, + "lines": [ + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)" + } + }, + { + "type": "node", + "name": "require(bool,string)(deadline >= block.timestamp,PERMIT_DEADLINE_EXPIRED)", + "source_mapping": { + "start": 4037, + "length": 63, + "filename_relative": "lib/solmate/src/tokens/ERC20.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/tokens/ERC20.sol", + "filename_short": "lib/solmate/src/tokens/ERC20.sol", + "is_dependency": true, + "lines": [ + 125 + ], + "starting_column": 9, + "ending_column": 72 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "permit", + "source_mapping": { + "start": 3838, + "length": 1483, + "filename_relative": "lib/solmate/src/tokens/ERC20.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/tokens/ERC20.sol", + "filename_short": "lib/solmate/src/tokens/ERC20.sol", + "is_dependency": true, + "lines": [ + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ERC20", + "source_mapping": { + "start": 474, + "length": 6337, + "filename_relative": "lib/solmate/src/tokens/ERC20.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/tokens/ERC20.sol", + "filename_short": "lib/solmate/src/tokens/ERC20.sol", + "is_dependency": true, + "lines": [ + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)" + } + } + } + } + ], + "description": "ERC20.permit(address,address,uint256,uint256,uint8,bytes32,bytes32) (lib/solmate/src/tokens/ERC20.sol#116-160) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- require(bool,string)(deadline >= block.timestamp,PERMIT_DEADLINE_EXPIRED) (lib/solmate/src/tokens/ERC20.sol#125)\n", + "markdown": "[ERC20.permit(address,address,uint256,uint256,uint8,bytes32,bytes32)](lib/solmate/src/tokens/ERC20.sol#L116-L160) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [require(bool,string)(deadline >= block.timestamp,PERMIT_DEADLINE_EXPIRED)](lib/solmate/src/tokens/ERC20.sol#L125)\n", + "first_markdown_element": "lib/solmate/src/tokens/ERC20.sol#L116-L160", + "id": "0fb9231dc121cc76860bb0687bd6cde7aeea76e6335fdfad5753810640c24c9b", + "check": "timestamp", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_authorizeUpgrade", + "source_mapping": { + "start": 7489, + "length": 338, + "filename_relative": "src/OptionsToken.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", + "filename_short": "src/OptionsToken.sol", + "is_dependency": false, + "lines": [ + 186, + 187, + 188, + 189, + 190 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OptionsToken", + "source_mapping": { + "start": 691, + "length": 7138, + "filename_relative": "src/OptionsToken.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", + "filename_short": "src/OptionsToken.sol", + "is_dependency": false, + "lines": [ + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_authorizeUpgrade(address)" + } + }, + { + "type": "node", + "name": "require(bool,string)(upgradeProposalTime + UPGRADE_TIMELOCK < block.timestamp,Upgrade cooldown not initiated or still ongoing)", + "source_mapping": { + "start": 7583, + "length": 116, + "filename_relative": "src/OptionsToken.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", + "filename_short": "src/OptionsToken.sol", + "is_dependency": false, + "lines": [ + 187 + ], + "starting_column": 9, + "ending_column": 125 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_authorizeUpgrade", + "source_mapping": { + "start": 7489, + "length": 338, + "filename_relative": "src/OptionsToken.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", + "filename_short": "src/OptionsToken.sol", + "is_dependency": false, + "lines": [ + 186, + 187, + 188, + 189, + 190 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OptionsToken", + "source_mapping": { + "start": 691, + "length": 7138, + "filename_relative": "src/OptionsToken.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", + "filename_short": "src/OptionsToken.sol", + "is_dependency": false, + "lines": [ + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_authorizeUpgrade(address)" + } + } + } + } + ], + "description": "OptionsToken._authorizeUpgrade(address) (src/OptionsToken.sol#186-190) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- require(bool,string)(upgradeProposalTime + UPGRADE_TIMELOCK < block.timestamp,Upgrade cooldown not initiated or still ongoing) (src/OptionsToken.sol#187)\n", + "markdown": "[OptionsToken._authorizeUpgrade(address)](src/OptionsToken.sol#L186-L190) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [require(bool,string)(upgradeProposalTime + UPGRADE_TIMELOCK < block.timestamp,Upgrade cooldown not initiated or still ongoing)](src/OptionsToken.sol#L187)\n", + "first_markdown_element": "src/OptionsToken.sol#L186-L190", + "id": "47d6ef328e4bec93ff731c772653d7d7d1461f9a46b96c65802f9b0b2081a72b", + "check": "timestamp", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_chainlinkIsFrozen", + "source_mapping": { + "start": 17196, + "length": 258, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 431, + 432, + 433, + 434 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_chainlinkIsFrozen(ReaperSwapper.ChainlinkResponse,address)" + } + }, + { + "type": "node", + "name": "block.timestamp - _response.timestamp > aggregatorTimeout", + "source_mapping": { + "start": 17383, + "length": 64, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 433 + ], + "starting_column": 9, + "ending_column": 73 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_chainlinkIsFrozen", + "source_mapping": { + "start": 17196, + "length": 258, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 431, + 432, + 433, + 434 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_chainlinkIsFrozen(ReaperSwapper.ChainlinkResponse,address)" + } + } + } + } + ], + "description": "ReaperSwapper._chainlinkIsFrozen(ReaperSwapper.ChainlinkResponse,address) (lib/vault-v2/src/ReaperSwapper.sol#431-434) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- block.timestamp - _response.timestamp > aggregatorTimeout (lib/vault-v2/src/ReaperSwapper.sol#433)\n", + "markdown": "[ReaperSwapper._chainlinkIsFrozen(ReaperSwapper.ChainlinkResponse,address)](lib/vault-v2/src/ReaperSwapper.sol#L431-L434) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [block.timestamp - _response.timestamp > aggregatorTimeout](lib/vault-v2/src/ReaperSwapper.sol#L433)\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L431-L434", + "id": "5b1d0ab9c3a7bcae71f7bd3a11a0caa71fd77c85af715f593d1fc00cf04614d3", + "check": "timestamp", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_redeem", + "source_mapping": { + "start": 9155, + "length": 752, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_redeem(address,uint256,address,DiscountExerciseParams)" + } + }, + { + "type": "node", + "name": "block.timestamp > params.deadline", + "source_mapping": { + "start": 9377, + "length": 33, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 239 + ], + "starting_column": 13, + "ending_column": 46 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_redeem", + "source_mapping": { + "start": 9155, + "length": 752, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_redeem(address,uint256,address,DiscountExerciseParams)" + } + } + } + } + ], + "description": "DiscountExercise._redeem(address,uint256,address,DiscountExerciseParams) (src/exercise/DiscountExercise.sol#234-251) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- block.timestamp > params.deadline (src/exercise/DiscountExercise.sol#239)\n", + "markdown": "[DiscountExercise._redeem(address,uint256,address,DiscountExerciseParams)](src/exercise/DiscountExercise.sol#L234-L251) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [block.timestamp > params.deadline](src/exercise/DiscountExercise.sol#L239)\n", + "first_markdown_element": "src/exercise/DiscountExercise.sol#L234-L251", + "id": "61a1c13c0eec30cef4d45e71eb68b2242a5ed6a3ec92629dbb2b00a5c05b5305", + "check": "timestamp", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_zap", + "source_mapping": { + "start": 6830, + "length": 2292, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_zap(address,uint256,address,DiscountExerciseParams)" + } + }, + { + "type": "node", + "name": "block.timestamp > params.deadline", + "source_mapping": { + "start": 7049, + "length": 33, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 197 + ], + "starting_column": 13, + "ending_column": 46 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_zap", + "source_mapping": { + "start": 6830, + "length": 2292, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_zap(address,uint256,address,DiscountExerciseParams)" + } + } + } + } + ], + "description": "DiscountExercise._zap(address,uint256,address,DiscountExerciseParams) (src/exercise/DiscountExercise.sol#192-231) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- block.timestamp > params.deadline (src/exercise/DiscountExercise.sol#197)\n", + "markdown": "[DiscountExercise._zap(address,uint256,address,DiscountExerciseParams)](src/exercise/DiscountExercise.sol#L192-L231) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [block.timestamp > params.deadline](src/exercise/DiscountExercise.sol#L197)\n", + "first_markdown_element": "src/exercise/DiscountExercise.sol#L192-L231", + "id": "668585016ac0bae752c2577765c1c163cfc3144c0656d1fb189859db4c2d78b8", + "check": "timestamp", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "getChainlinkPriceTargetDigits", + "source_mapping": { + "start": 12574, + "length": 693, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getChainlinkPriceTargetDigits(address)" + } + }, + { + "type": "node", + "name": "require(bool,string)(! _chainlinkIsBroken(chainlinkResponse,prevChainlinkResponse) && ! _chainlinkIsFrozen(chainlinkResponse,_token),ReaperSwapper: Chainlink must be working and current)", + "source_mapping": { + "start": 12925, + "length": 226, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 337, + 338, + 339, + 340, + 341 + ], + "starting_column": 9, + "ending_column": 10 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getChainlinkPriceTargetDigits", + "source_mapping": { + "start": 12574, + "length": 693, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getChainlinkPriceTargetDigits(address)" + } + } + } + } + ], + "description": "ReaperSwapper.getChainlinkPriceTargetDigits(address) (lib/vault-v2/src/ReaperSwapper.sol#333-343) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- require(bool,string)(! _chainlinkIsBroken(chainlinkResponse,prevChainlinkResponse) && ! _chainlinkIsFrozen(chainlinkResponse,_token),ReaperSwapper: Chainlink must be working and current) (lib/vault-v2/src/ReaperSwapper.sol#337-341)\n", + "markdown": "[ReaperSwapper.getChainlinkPriceTargetDigits(address)](lib/vault-v2/src/ReaperSwapper.sol#L333-L343) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [require(bool,string)(! _chainlinkIsBroken(chainlinkResponse,prevChainlinkResponse) && ! _chainlinkIsFrozen(chainlinkResponse,_token),ReaperSwapper: Chainlink must be working and current)](lib/vault-v2/src/ReaperSwapper.sol#L337-L341)\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L333-L343", + "id": "8876dcb1ce9974595b01d633cfe62552129b63ca689be1b0815a3c19c88b3095", + "check": "timestamp", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_badChainlinkResponse", + "source_mapping": { + "start": 16626, + "length": 564, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_badChainlinkResponse(ReaperSwapper.ChainlinkResponse)" + } + }, + { + "type": "node", + "name": "_response.timestamp == 0 || _response.timestamp > block.timestamp", + "source_mapping": { + "start": 16994, + "length": 65, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 424 + ], + "starting_column": 13, + "ending_column": 78 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_badChainlinkResponse", + "source_mapping": { + "start": 16626, + "length": 564, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_badChainlinkResponse(ReaperSwapper.ChainlinkResponse)" + } + } + } + } + ], + "description": "ReaperSwapper._badChainlinkResponse(ReaperSwapper.ChainlinkResponse) (lib/vault-v2/src/ReaperSwapper.sol#418-429) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- _response.timestamp == 0 || _response.timestamp > block.timestamp (lib/vault-v2/src/ReaperSwapper.sol#424)\n", + "markdown": "[ReaperSwapper._badChainlinkResponse(ReaperSwapper.ChainlinkResponse)](lib/vault-v2/src/ReaperSwapper.sol#L418-L429) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [_response.timestamp == 0 || _response.timestamp > block.timestamp](lib/vault-v2/src/ReaperSwapper.sol#L424)\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L418-L429", + "id": "c9769fb3b49a0cb62289925e91879f5e539b1d1b11aa4df992552532f0fc1edb", + "check": "timestamp", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_authorizeUpgrade", + "source_mapping": { + "start": 19135, + "length": 283, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 476, + 477, + 478, + 479, + 480, + 481, + 482 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_authorizeUpgrade(address)" + } + }, + { + "type": "node", + "name": "require(bool,string)(upgradeProposalTime + UPGRADE_TIMELOCK < block.timestamp,Upgrade cooldown not initiated or still ongoing)", + "source_mapping": { + "start": 19241, + "length": 138, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 478, + 479, + 480 + ], + "starting_column": 9, + "ending_column": 10 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_authorizeUpgrade", + "source_mapping": { + "start": 19135, + "length": 283, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 476, + 477, + 478, + 479, + 480, + 481, + 482 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_authorizeUpgrade(address)" + } + } + } + } + ], + "description": "ReaperSwapper._authorizeUpgrade(address) (lib/vault-v2/src/ReaperSwapper.sol#476-482) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- require(bool,string)(upgradeProposalTime + UPGRADE_TIMELOCK < block.timestamp,Upgrade cooldown not initiated or still ongoing) (lib/vault-v2/src/ReaperSwapper.sol#478-480)\n", + "markdown": "[ReaperSwapper._authorizeUpgrade(address)](lib/vault-v2/src/ReaperSwapper.sol#L476-L482) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [require(bool,string)(upgradeProposalTime + UPGRADE_TIMELOCK < block.timestamp,Upgrade cooldown not initiated or still ongoing)](lib/vault-v2/src/ReaperSwapper.sol#L478-L480)\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L476-L482", + "id": "f0962c61819abf294fef0372224298be1e0fde776b4031d7996ce34948836d89", + "check": "timestamp", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "unsafeDiv", + "source_mapping": { + "start": 9436, + "length": 285, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FixedPointMathLib", + "source_mapping": { + "start": 341, + "length": 9712, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "unsafeDiv(uint256,uint256)" + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 9564, + "length": 151, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 240, + 241, + 242, + 243, + 244 + ], + "starting_column": 9, + "ending_column": 10 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "unsafeDiv", + "source_mapping": { + "start": 9436, + "length": 285, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FixedPointMathLib", + "source_mapping": { + "start": 341, + "length": 9712, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "unsafeDiv(uint256,uint256)" + } + } + } + } + ], + "description": "FixedPointMathLib.unsafeDiv(uint256,uint256) (lib/solmate/src/utils/FixedPointMathLib.sol#238-245) uses assembly\n\t- INLINE ASM (lib/solmate/src/utils/FixedPointMathLib.sol#240-244)\n", + "markdown": "[FixedPointMathLib.unsafeDiv(uint256,uint256)](lib/solmate/src/utils/FixedPointMathLib.sol#L238-L245) uses assembly\n\t- [INLINE ASM](lib/solmate/src/utils/FixedPointMathLib.sol#L240-L244)\n", + "first_markdown_element": "lib/solmate/src/utils/FixedPointMathLib.sol#L238-L245", + "id": "0beed87682b0d9d1b5d62d5e0b9a3ea42569e26d73cc841baa517c84883f1df4", + "check": "assembly", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "getTickAtSqrtRatio", + "source_mapping": { + "start": 4563, + "length": 4852, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getTickAtSqrtRatio(uint160)" + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 5000, + "length": 164, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 77, + 78, + 79, + 80, + 81 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getTickAtSqrtRatio", + "source_mapping": { + "start": 4563, + "length": 4852, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getTickAtSqrtRatio(uint160)" + } + } + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 5177, + "length": 148, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 82, + 83, + 84, + 85, + 86 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getTickAtSqrtRatio", + "source_mapping": { + "start": 4563, + "length": 4852, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getTickAtSqrtRatio(uint160)" + } + } + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 5338, + "length": 140, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 87, + 88, + 89, + 90, + 91 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getTickAtSqrtRatio", + "source_mapping": { + "start": 4563, + "length": 4852, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getTickAtSqrtRatio(uint160)" + } + } + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 5491, + "length": 136, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 92, + 93, + 94, + 95, + 96 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getTickAtSqrtRatio", + "source_mapping": { + "start": 4563, + "length": 4852, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getTickAtSqrtRatio(uint160)" + } + } + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 5640, + "length": 134, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 97, + 98, + 99, + 100, + 101 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getTickAtSqrtRatio", + "source_mapping": { + "start": 4563, + "length": 4852, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getTickAtSqrtRatio(uint160)" + } + } + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 5787, + "length": 133, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 102, + 103, + 104, + 105, + 106 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getTickAtSqrtRatio", + "source_mapping": { + "start": 4563, + "length": 4852, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getTickAtSqrtRatio(uint160)" + } + } + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 5933, + "length": 133, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 107, + 108, + 109, + 110, + 111 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getTickAtSqrtRatio", + "source_mapping": { + "start": 4563, + "length": 4852, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getTickAtSqrtRatio(uint160)" + } + } + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 6079, + "length": 94, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 112, + 113, + 114, + 115 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getTickAtSqrtRatio", + "source_mapping": { + "start": 4563, + "length": 4852, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getTickAtSqrtRatio(uint160)" + } + } + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 6340, + "length": 180, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 122, + 123, + 124, + 125, + 126, + 127 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getTickAtSqrtRatio", + "source_mapping": { + "start": 4563, + "length": 4852, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getTickAtSqrtRatio(uint160)" + } + } + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 6533, + "length": 180, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 128, + 129, + 130, + 131, + 132, + 133 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getTickAtSqrtRatio", + "source_mapping": { + "start": 4563, + "length": 4852, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getTickAtSqrtRatio(uint160)" + } + } + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 6726, + "length": 180, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 134, + 135, + 136, + 137, + 138, + 139 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getTickAtSqrtRatio", + "source_mapping": { + "start": 4563, + "length": 4852, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getTickAtSqrtRatio(uint160)" + } + } + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 6919, + "length": 180, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 140, + 141, + 142, + 143, + 144, + 145 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getTickAtSqrtRatio", + "source_mapping": { + "start": 4563, + "length": 4852, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getTickAtSqrtRatio(uint160)" + } + } + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 7112, + "length": 180, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 146, + 147, + 148, + 149, + 150, + 151 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getTickAtSqrtRatio", + "source_mapping": { + "start": 4563, + "length": 4852, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getTickAtSqrtRatio(uint160)" + } + } + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 7305, + "length": 180, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 152, + 153, + 154, + 155, + 156, + 157 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getTickAtSqrtRatio", + "source_mapping": { + "start": 4563, + "length": 4852, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getTickAtSqrtRatio(uint160)" + } + } + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 7498, + "length": 180, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 158, + 159, + 160, + 161, + 162, + 163 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getTickAtSqrtRatio", + "source_mapping": { + "start": 4563, + "length": 4852, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getTickAtSqrtRatio(uint160)" + } + } + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 7691, + "length": 180, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 164, + 165, + 166, + 167, + 168, + 169 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getTickAtSqrtRatio", + "source_mapping": { + "start": 4563, + "length": 4852, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getTickAtSqrtRatio(uint160)" + } + } + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 7884, + "length": 180, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 170, + 171, + 172, + 173, + 174, + 175 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getTickAtSqrtRatio", + "source_mapping": { + "start": 4563, + "length": 4852, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getTickAtSqrtRatio(uint160)" + } + } + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 8077, + "length": 180, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 176, + 177, + 178, + 179, + 180, + 181 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getTickAtSqrtRatio", + "source_mapping": { + "start": 4563, + "length": 4852, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getTickAtSqrtRatio(uint160)" + } + } + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 8270, + "length": 180, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 182, + 183, + 184, + 185, + 186, + 187 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getTickAtSqrtRatio", + "source_mapping": { + "start": 4563, + "length": 4852, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getTickAtSqrtRatio(uint160)" + } + } + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 8463, + "length": 180, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 188, + 189, + 190, + 191, + 192, + 193 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getTickAtSqrtRatio", + "source_mapping": { + "start": 4563, + "length": 4852, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getTickAtSqrtRatio(uint160)" + } + } + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 8656, + "length": 180, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 194, + 195, + 196, + 197, + 198, + 199 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getTickAtSqrtRatio", + "source_mapping": { + "start": 4563, + "length": 4852, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getTickAtSqrtRatio(uint160)" + } + } + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 8849, + "length": 149, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 200, + 201, + 202, + 203, + 204 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getTickAtSqrtRatio", + "source_mapping": { + "start": 4563, + "length": 4852, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getTickAtSqrtRatio(uint160)" + } + } + } + } + ], + "description": "TickMath.getTickAtSqrtRatio(uint160) (lib/v3-core/contracts/libraries/TickMath.sol#68-213) uses assembly\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#77-81)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#82-86)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#87-91)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#92-96)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#97-101)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#102-106)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#107-111)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#112-115)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#122-127)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#128-133)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#134-139)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#140-145)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#146-151)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#152-157)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#158-163)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#164-169)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#170-175)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#176-181)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#182-187)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#188-193)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#194-199)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#200-204)\n", + "markdown": "[TickMath.getTickAtSqrtRatio(uint160)](lib/v3-core/contracts/libraries/TickMath.sol#L68-L213) uses assembly\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L77-L81)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L82-L86)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L87-L91)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L92-L96)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L97-L101)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L102-L106)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L107-L111)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L112-L115)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L122-L127)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L128-L133)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L134-L139)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L140-L145)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L146-L151)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L152-L157)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L158-L163)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L164-L169)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L170-L175)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L176-L181)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L182-L187)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L188-L193)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L194-L199)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L200-L204)\n", + "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L68-L213", + "id": "0def4f45d43eaf0b329bef30ef6af6d4f46fe19e1463c7b9ac4d362934eafeb6", + "check": "assembly", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "unsafeMod", + "source_mapping": { + "start": 9148, + "length": 282, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FixedPointMathLib", + "source_mapping": { + "start": 341, + "length": 9712, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "unsafeMod(uint256,uint256)" + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 9276, + "length": 148, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 231, + 232, + 233, + 234, + 235 + ], + "starting_column": 9, + "ending_column": 10 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "unsafeMod", + "source_mapping": { + "start": 9148, + "length": 282, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FixedPointMathLib", + "source_mapping": { + "start": 341, + "length": 9712, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "unsafeMod(uint256,uint256)" + } + } + } + } + ], + "description": "FixedPointMathLib.unsafeMod(uint256,uint256) (lib/solmate/src/utils/FixedPointMathLib.sol#229-236) uses assembly\n\t- INLINE ASM (lib/solmate/src/utils/FixedPointMathLib.sol#231-235)\n", + "markdown": "[FixedPointMathLib.unsafeMod(uint256,uint256)](lib/solmate/src/utils/FixedPointMathLib.sol#L229-L236) uses assembly\n\t- [INLINE ASM](lib/solmate/src/utils/FixedPointMathLib.sol#L231-L235)\n", + "first_markdown_element": "lib/solmate/src/utils/FixedPointMathLib.sol#L229-L236", + "id": "145fa339a2d24346a0d2f9a987ba904fefdb44045676d336d8c1454492437dd3", + "check": "assembly", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "_revert", + "source_mapping": { + "start": 8616, + "length": 540, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Address", + "source_mapping": { + "start": 194, + "length": 8964, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_revert(bytes,string)" + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 8947, + "length": 142, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 236, + 237, + 238, + 239 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_revert", + "source_mapping": { + "start": 8616, + "length": 540, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Address", + "source_mapping": { + "start": 194, + "length": 8964, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_revert(bytes,string)" + } + } + } + } + ], + "description": "Address._revert(bytes,string) (lib/openzeppelin-contracts/contracts/utils/Address.sol#231-243) uses assembly\n\t- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/Address.sol#236-239)\n", + "markdown": "[Address._revert(bytes,string)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L231-L243) uses assembly\n\t- [INLINE ASM](lib/openzeppelin-contracts/contracts/utils/Address.sol#L236-L239)\n", + "first_markdown_element": "lib/openzeppelin-contracts/contracts/utils/Address.sol#L231-L243", + "id": "202587d026bc154cc0001a634101f20caa34ef114975710d739f5c8c36d92e7c", + "check": "assembly", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "unsafeDivUp", + "source_mapping": { + "start": 9727, + "length": 324, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FixedPointMathLib", + "source_mapping": { + "start": 341, + "length": 9712, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "unsafeDivUp(uint256,uint256)" + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 9857, + "length": 188, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 249, + 250, + 251, + 252, + 253 + ], + "starting_column": 9, + "ending_column": 10 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "unsafeDivUp", + "source_mapping": { + "start": 9727, + "length": 324, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FixedPointMathLib", + "source_mapping": { + "start": 341, + "length": 9712, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "unsafeDivUp(uint256,uint256)" + } + } + } + } + ], + "description": "FixedPointMathLib.unsafeDivUp(uint256,uint256) (lib/solmate/src/utils/FixedPointMathLib.sol#247-254) uses assembly\n\t- INLINE ASM (lib/solmate/src/utils/FixedPointMathLib.sol#249-253)\n", + "markdown": "[FixedPointMathLib.unsafeDivUp(uint256,uint256)](lib/solmate/src/utils/FixedPointMathLib.sol#L247-L254) uses assembly\n\t- [INLINE ASM](lib/solmate/src/utils/FixedPointMathLib.sol#L249-L253)\n", + "first_markdown_element": "lib/solmate/src/utils/FixedPointMathLib.sol#L247-L254", + "id": "293ee1efbea006e81513a50b1f3897ca47465d642f7873e0618752a9e931afdc", + "check": "assembly", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "sqrt", + "source_mapping": { + "start": 5746, + "length": 3396, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FixedPointMathLib", + "source_mapping": { + "start": 341, + "length": 9712, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "sqrt(uint256)" + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 5858, + "length": 3278, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226 + ], + "starting_column": 9, + "ending_column": 10 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "sqrt", + "source_mapping": { + "start": 5746, + "length": 3396, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FixedPointMathLib", + "source_mapping": { + "start": 341, + "length": 9712, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "sqrt(uint256)" + } + } + } + } + ], + "description": "FixedPointMathLib.sqrt(uint256) (lib/solmate/src/utils/FixedPointMathLib.sol#164-227) uses assembly\n\t- INLINE ASM (lib/solmate/src/utils/FixedPointMathLib.sol#166-226)\n", + "markdown": "[FixedPointMathLib.sqrt(uint256)](lib/solmate/src/utils/FixedPointMathLib.sol#L164-L227) uses assembly\n\t- [INLINE ASM](lib/solmate/src/utils/FixedPointMathLib.sol#L166-L226)\n", + "first_markdown_element": "lib/solmate/src/utils/FixedPointMathLib.sol#L164-L227", + "id": "37818b71310ead61c2763f3a5f49d95d276ee9cb81a18a9e165d14c424a65602", + "check": "assembly", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "mulDivUp", + "source_mapping": { + "start": 2096, + "length": 672, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FixedPointMathLib", + "source_mapping": { + "start": 341, + "length": 9712, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDivUp(uint256,uint256,uint256)" + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 2274, + "length": 488, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68 + ], + "starting_column": 9, + "ending_column": 10 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDivUp", + "source_mapping": { + "start": 2096, + "length": 672, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FixedPointMathLib", + "source_mapping": { + "start": 341, + "length": 9712, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDivUp(uint256,uint256,uint256)" + } + } + } + } + ], + "description": "FixedPointMathLib.mulDivUp(uint256,uint256,uint256) (lib/solmate/src/utils/FixedPointMathLib.sol#53-69) uses assembly\n\t- INLINE ASM (lib/solmate/src/utils/FixedPointMathLib.sol#59-68)\n", + "markdown": "[FixedPointMathLib.mulDivUp(uint256,uint256,uint256)](lib/solmate/src/utils/FixedPointMathLib.sol#L53-L69) uses assembly\n\t- [INLINE ASM](lib/solmate/src/utils/FixedPointMathLib.sol#L59-L68)\n", + "first_markdown_element": "lib/solmate/src/utils/FixedPointMathLib.sol#L53-L69", + "id": "39a7fec07e0fbe8e5782dbb16c4b965b00f8fb1054cd2855b1fe4b9234ea9403", + "check": "assembly", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "values", + "source_mapping": { + "start": 10262, + "length": 300, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "is_dependency": true, + "lines": [ + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "EnumerableSetUpgradeable", + "source_mapping": { + "start": 1321, + "length": 11641, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "is_dependency": true, + "lines": [ + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "values(EnumerableSetUpgradeable.AddressSet)" + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 10484, + "length": 48, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "is_dependency": true, + "lines": [ + 298, + 299, + 300 + ], + "starting_column": 9, + "ending_column": 10 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "values", + "source_mapping": { + "start": 10262, + "length": 300, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "is_dependency": true, + "lines": [ + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "EnumerableSetUpgradeable", + "source_mapping": { + "start": 1321, + "length": 11641, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "is_dependency": true, + "lines": [ + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "values(EnumerableSetUpgradeable.AddressSet)" + } + } + } + } + ], + "description": "EnumerableSetUpgradeable.values(EnumerableSetUpgradeable.AddressSet) (lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#293-303) uses assembly\n\t- INLINE ASM (lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#298-300)\n", + "markdown": "[EnumerableSetUpgradeable.values(EnumerableSetUpgradeable.AddressSet)](lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#L293-L303) uses assembly\n\t- [INLINE ASM](lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#L298-L300)\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#L293-L303", + "id": "3b8aa13e9f50c73367d43257168b9f1a7a14154c5ff8bd884390007f08e0ae86", + "check": "assembly", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "values", + "source_mapping": { + "start": 7768, + "length": 300, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "is_dependency": true, + "lines": [ + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "EnumerableSetUpgradeable", + "source_mapping": { + "start": 1321, + "length": 11641, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "is_dependency": true, + "lines": [ + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "values(EnumerableSetUpgradeable.Bytes32Set)" + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 7990, + "length": 48, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "is_dependency": true, + "lines": [ + 224, + 225, + 226 + ], + "starting_column": 9, + "ending_column": 10 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "values", + "source_mapping": { + "start": 7768, + "length": 300, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "is_dependency": true, + "lines": [ + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "EnumerableSetUpgradeable", + "source_mapping": { + "start": 1321, + "length": 11641, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "is_dependency": true, + "lines": [ + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "values(EnumerableSetUpgradeable.Bytes32Set)" + } + } + } + } + ], + "description": "EnumerableSetUpgradeable.values(EnumerableSetUpgradeable.Bytes32Set) (lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#219-229) uses assembly\n\t- INLINE ASM (lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#224-226)\n", + "markdown": "[EnumerableSetUpgradeable.values(EnumerableSetUpgradeable.Bytes32Set)](lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#L219-L229) uses assembly\n\t- [INLINE ASM](lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#L224-L226)\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#L219-L229", + "id": "56194aad9e39935cc05324a8414a026d136558b2fa7f7ab0735fd12cc739a479", + "check": "assembly", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "_sendLogPayload", + "source_mapping": { + "start": 181, + "length": 376, + "filename_relative": "lib/forge-std/src/console.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/forge-std/src/console.sol", + "filename_short": "lib/forge-std/src/console.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "console", + "source_mapping": { + "start": 66, + "length": 66622, + "filename_relative": "lib/forge-std/src/console.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/forge-std/src/console.sol", + "filename_short": "lib/forge-std/src/console.sol", + "is_dependency": true, + "lines": [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885, + 886, + 887, + 888, + 889, + 890, + 891, + 892, + 893, + 894, + 895, + 896, + 897, + 898, + 899, + 900, + 901, + 902, + 903, + 904, + 905, + 906, + 907, + 908, + 909, + 910, + 911, + 912, + 913, + 914, + 915, + 916, + 917, + 918, + 919, + 920, + 921, + 922, + 923, + 924, + 925, + 926, + 927, + 928, + 929, + 930, + 931, + 932, + 933, + 934, + 935, + 936, + 937, + 938, + 939, + 940, + 941, + 942, + 943, + 944, + 945, + 946, + 947, + 948, + 949, + 950, + 951, + 952, + 953, + 954, + 955, + 956, + 957, + 958, + 959, + 960, + 961, + 962, + 963, + 964, + 965, + 966, + 967, + 968, + 969, + 970, + 971, + 972, + 973, + 974, + 975, + 976, + 977, + 978, + 979, + 980, + 981, + 982, + 983, + 984, + 985, + 986, + 987, + 988, + 989, + 990, + 991, + 992, + 993, + 994, + 995, + 996, + 997, + 998, + 999, + 1000, + 1001, + 1002, + 1003, + 1004, + 1005, + 1006, + 1007, + 1008, + 1009, + 1010, + 1011, + 1012, + 1013, + 1014, + 1015, + 1016, + 1017, + 1018, + 1019, + 1020, + 1021, + 1022, + 1023, + 1024, + 1025, + 1026, + 1027, + 1028, + 1029, + 1030, + 1031, + 1032, + 1033, + 1034, + 1035, + 1036, + 1037, + 1038, + 1039, + 1040, + 1041, + 1042, + 1043, + 1044, + 1045, + 1046, + 1047, + 1048, + 1049, + 1050, + 1051, + 1052, + 1053, + 1054, + 1055, + 1056, + 1057, + 1058, + 1059, + 1060, + 1061, + 1062, + 1063, + 1064, + 1065, + 1066, + 1067, + 1068, + 1069, + 1070, + 1071, + 1072, + 1073, + 1074, + 1075, + 1076, + 1077, + 1078, + 1079, + 1080, + 1081, + 1082, + 1083, + 1084, + 1085, + 1086, + 1087, + 1088, + 1089, + 1090, + 1091, + 1092, + 1093, + 1094, + 1095, + 1096, + 1097, + 1098, + 1099, + 1100, + 1101, + 1102, + 1103, + 1104, + 1105, + 1106, + 1107, + 1108, + 1109, + 1110, + 1111, + 1112, + 1113, + 1114, + 1115, + 1116, + 1117, + 1118, + 1119, + 1120, + 1121, + 1122, + 1123, + 1124, + 1125, + 1126, + 1127, + 1128, + 1129, + 1130, + 1131, + 1132, + 1133, + 1134, + 1135, + 1136, + 1137, + 1138, + 1139, + 1140, + 1141, + 1142, + 1143, + 1144, + 1145, + 1146, + 1147, + 1148, + 1149, + 1150, + 1151, + 1152, + 1153, + 1154, + 1155, + 1156, + 1157, + 1158, + 1159, + 1160, + 1161, + 1162, + 1163, + 1164, + 1165, + 1166, + 1167, + 1168, + 1169, + 1170, + 1171, + 1172, + 1173, + 1174, + 1175, + 1176, + 1177, + 1178, + 1179, + 1180, + 1181, + 1182, + 1183, + 1184, + 1185, + 1186, + 1187, + 1188, + 1189, + 1190, + 1191, + 1192, + 1193, + 1194, + 1195, + 1196, + 1197, + 1198, + 1199, + 1200, + 1201, + 1202, + 1203, + 1204, + 1205, + 1206, + 1207, + 1208, + 1209, + 1210, + 1211, + 1212, + 1213, + 1214, + 1215, + 1216, + 1217, + 1218, + 1219, + 1220, + 1221, + 1222, + 1223, + 1224, + 1225, + 1226, + 1227, + 1228, + 1229, + 1230, + 1231, + 1232, + 1233, + 1234, + 1235, + 1236, + 1237, + 1238, + 1239, + 1240, + 1241, + 1242, + 1243, + 1244, + 1245, + 1246, + 1247, + 1248, + 1249, + 1250, + 1251, + 1252, + 1253, + 1254, + 1255, + 1256, + 1257, + 1258, + 1259, + 1260, + 1261, + 1262, + 1263, + 1264, + 1265, + 1266, + 1267, + 1268, + 1269, + 1270, + 1271, + 1272, + 1273, + 1274, + 1275, + 1276, + 1277, + 1278, + 1279, + 1280, + 1281, + 1282, + 1283, + 1284, + 1285, + 1286, + 1287, + 1288, + 1289, + 1290, + 1291, + 1292, + 1293, + 1294, + 1295, + 1296, + 1297, + 1298, + 1299, + 1300, + 1301, + 1302, + 1303, + 1304, + 1305, + 1306, + 1307, + 1308, + 1309, + 1310, + 1311, + 1312, + 1313, + 1314, + 1315, + 1316, + 1317, + 1318, + 1319, + 1320, + 1321, + 1322, + 1323, + 1324, + 1325, + 1326, + 1327, + 1328, + 1329, + 1330, + 1331, + 1332, + 1333, + 1334, + 1335, + 1336, + 1337, + 1338, + 1339, + 1340, + 1341, + 1342, + 1343, + 1344, + 1345, + 1346, + 1347, + 1348, + 1349, + 1350, + 1351, + 1352, + 1353, + 1354, + 1355, + 1356, + 1357, + 1358, + 1359, + 1360, + 1361, + 1362, + 1363, + 1364, + 1365, + 1366, + 1367, + 1368, + 1369, + 1370, + 1371, + 1372, + 1373, + 1374, + 1375, + 1376, + 1377, + 1378, + 1379, + 1380, + 1381, + 1382, + 1383, + 1384, + 1385, + 1386, + 1387, + 1388, + 1389, + 1390, + 1391, + 1392, + 1393, + 1394, + 1395, + 1396, + 1397, + 1398, + 1399, + 1400, + 1401, + 1402, + 1403, + 1404, + 1405, + 1406, + 1407, + 1408, + 1409, + 1410, + 1411, + 1412, + 1413, + 1414, + 1415, + 1416, + 1417, + 1418, + 1419, + 1420, + 1421, + 1422, + 1423, + 1424, + 1425, + 1426, + 1427, + 1428, + 1429, + 1430, + 1431, + 1432, + 1433, + 1434, + 1435, + 1436, + 1437, + 1438, + 1439, + 1440, + 1441, + 1442, + 1443, + 1444, + 1445, + 1446, + 1447, + 1448, + 1449, + 1450, + 1451, + 1452, + 1453, + 1454, + 1455, + 1456, + 1457, + 1458, + 1459, + 1460, + 1461, + 1462, + 1463, + 1464, + 1465, + 1466, + 1467, + 1468, + 1469, + 1470, + 1471, + 1472, + 1473, + 1474, + 1475, + 1476, + 1477, + 1478, + 1479, + 1480, + 1481, + 1482, + 1483, + 1484, + 1485, + 1486, + 1487, + 1488, + 1489, + 1490, + 1491, + 1492, + 1493, + 1494, + 1495, + 1496, + 1497, + 1498, + 1499, + 1500, + 1501, + 1502, + 1503, + 1504, + 1505, + 1506, + 1507, + 1508, + 1509, + 1510, + 1511, + 1512, + 1513, + 1514, + 1515, + 1516, + 1517, + 1518, + 1519, + 1520, + 1521, + 1522, + 1523, + 1524, + 1525, + 1526, + 1527, + 1528, + 1529, + 1530, + 1531, + 1532, + 1533, + 1534 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_sendLogPayload(bytes)" + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 392, + "length": 159, + "filename_relative": "lib/forge-std/src/console.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/forge-std/src/console.sol", + "filename_short": "lib/forge-std/src/console.sol", + "is_dependency": true, + "lines": [ + 11, + 12, + 13, + 14 + ], + "starting_column": 9, + "ending_column": 10 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_sendLogPayload", + "source_mapping": { + "start": 181, + "length": 376, + "filename_relative": "lib/forge-std/src/console.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/forge-std/src/console.sol", + "filename_short": "lib/forge-std/src/console.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "console", + "source_mapping": { + "start": 66, + "length": 66622, + "filename_relative": "lib/forge-std/src/console.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/forge-std/src/console.sol", + "filename_short": "lib/forge-std/src/console.sol", + "is_dependency": true, + "lines": [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885, + 886, + 887, + 888, + 889, + 890, + 891, + 892, + 893, + 894, + 895, + 896, + 897, + 898, + 899, + 900, + 901, + 902, + 903, + 904, + 905, + 906, + 907, + 908, + 909, + 910, + 911, + 912, + 913, + 914, + 915, + 916, + 917, + 918, + 919, + 920, + 921, + 922, + 923, + 924, + 925, + 926, + 927, + 928, + 929, + 930, + 931, + 932, + 933, + 934, + 935, + 936, + 937, + 938, + 939, + 940, + 941, + 942, + 943, + 944, + 945, + 946, + 947, + 948, + 949, + 950, + 951, + 952, + 953, + 954, + 955, + 956, + 957, + 958, + 959, + 960, + 961, + 962, + 963, + 964, + 965, + 966, + 967, + 968, + 969, + 970, + 971, + 972, + 973, + 974, + 975, + 976, + 977, + 978, + 979, + 980, + 981, + 982, + 983, + 984, + 985, + 986, + 987, + 988, + 989, + 990, + 991, + 992, + 993, + 994, + 995, + 996, + 997, + 998, + 999, + 1000, + 1001, + 1002, + 1003, + 1004, + 1005, + 1006, + 1007, + 1008, + 1009, + 1010, + 1011, + 1012, + 1013, + 1014, + 1015, + 1016, + 1017, + 1018, + 1019, + 1020, + 1021, + 1022, + 1023, + 1024, + 1025, + 1026, + 1027, + 1028, + 1029, + 1030, + 1031, + 1032, + 1033, + 1034, + 1035, + 1036, + 1037, + 1038, + 1039, + 1040, + 1041, + 1042, + 1043, + 1044, + 1045, + 1046, + 1047, + 1048, + 1049, + 1050, + 1051, + 1052, + 1053, + 1054, + 1055, + 1056, + 1057, + 1058, + 1059, + 1060, + 1061, + 1062, + 1063, + 1064, + 1065, + 1066, + 1067, + 1068, + 1069, + 1070, + 1071, + 1072, + 1073, + 1074, + 1075, + 1076, + 1077, + 1078, + 1079, + 1080, + 1081, + 1082, + 1083, + 1084, + 1085, + 1086, + 1087, + 1088, + 1089, + 1090, + 1091, + 1092, + 1093, + 1094, + 1095, + 1096, + 1097, + 1098, + 1099, + 1100, + 1101, + 1102, + 1103, + 1104, + 1105, + 1106, + 1107, + 1108, + 1109, + 1110, + 1111, + 1112, + 1113, + 1114, + 1115, + 1116, + 1117, + 1118, + 1119, + 1120, + 1121, + 1122, + 1123, + 1124, + 1125, + 1126, + 1127, + 1128, + 1129, + 1130, + 1131, + 1132, + 1133, + 1134, + 1135, + 1136, + 1137, + 1138, + 1139, + 1140, + 1141, + 1142, + 1143, + 1144, + 1145, + 1146, + 1147, + 1148, + 1149, + 1150, + 1151, + 1152, + 1153, + 1154, + 1155, + 1156, + 1157, + 1158, + 1159, + 1160, + 1161, + 1162, + 1163, + 1164, + 1165, + 1166, + 1167, + 1168, + 1169, + 1170, + 1171, + 1172, + 1173, + 1174, + 1175, + 1176, + 1177, + 1178, + 1179, + 1180, + 1181, + 1182, + 1183, + 1184, + 1185, + 1186, + 1187, + 1188, + 1189, + 1190, + 1191, + 1192, + 1193, + 1194, + 1195, + 1196, + 1197, + 1198, + 1199, + 1200, + 1201, + 1202, + 1203, + 1204, + 1205, + 1206, + 1207, + 1208, + 1209, + 1210, + 1211, + 1212, + 1213, + 1214, + 1215, + 1216, + 1217, + 1218, + 1219, + 1220, + 1221, + 1222, + 1223, + 1224, + 1225, + 1226, + 1227, + 1228, + 1229, + 1230, + 1231, + 1232, + 1233, + 1234, + 1235, + 1236, + 1237, + 1238, + 1239, + 1240, + 1241, + 1242, + 1243, + 1244, + 1245, + 1246, + 1247, + 1248, + 1249, + 1250, + 1251, + 1252, + 1253, + 1254, + 1255, + 1256, + 1257, + 1258, + 1259, + 1260, + 1261, + 1262, + 1263, + 1264, + 1265, + 1266, + 1267, + 1268, + 1269, + 1270, + 1271, + 1272, + 1273, + 1274, + 1275, + 1276, + 1277, + 1278, + 1279, + 1280, + 1281, + 1282, + 1283, + 1284, + 1285, + 1286, + 1287, + 1288, + 1289, + 1290, + 1291, + 1292, + 1293, + 1294, + 1295, + 1296, + 1297, + 1298, + 1299, + 1300, + 1301, + 1302, + 1303, + 1304, + 1305, + 1306, + 1307, + 1308, + 1309, + 1310, + 1311, + 1312, + 1313, + 1314, + 1315, + 1316, + 1317, + 1318, + 1319, + 1320, + 1321, + 1322, + 1323, + 1324, + 1325, + 1326, + 1327, + 1328, + 1329, + 1330, + 1331, + 1332, + 1333, + 1334, + 1335, + 1336, + 1337, + 1338, + 1339, + 1340, + 1341, + 1342, + 1343, + 1344, + 1345, + 1346, + 1347, + 1348, + 1349, + 1350, + 1351, + 1352, + 1353, + 1354, + 1355, + 1356, + 1357, + 1358, + 1359, + 1360, + 1361, + 1362, + 1363, + 1364, + 1365, + 1366, + 1367, + 1368, + 1369, + 1370, + 1371, + 1372, + 1373, + 1374, + 1375, + 1376, + 1377, + 1378, + 1379, + 1380, + 1381, + 1382, + 1383, + 1384, + 1385, + 1386, + 1387, + 1388, + 1389, + 1390, + 1391, + 1392, + 1393, + 1394, + 1395, + 1396, + 1397, + 1398, + 1399, + 1400, + 1401, + 1402, + 1403, + 1404, + 1405, + 1406, + 1407, + 1408, + 1409, + 1410, + 1411, + 1412, + 1413, + 1414, + 1415, + 1416, + 1417, + 1418, + 1419, + 1420, + 1421, + 1422, + 1423, + 1424, + 1425, + 1426, + 1427, + 1428, + 1429, + 1430, + 1431, + 1432, + 1433, + 1434, + 1435, + 1436, + 1437, + 1438, + 1439, + 1440, + 1441, + 1442, + 1443, + 1444, + 1445, + 1446, + 1447, + 1448, + 1449, + 1450, + 1451, + 1452, + 1453, + 1454, + 1455, + 1456, + 1457, + 1458, + 1459, + 1460, + 1461, + 1462, + 1463, + 1464, + 1465, + 1466, + 1467, + 1468, + 1469, + 1470, + 1471, + 1472, + 1473, + 1474, + 1475, + 1476, + 1477, + 1478, + 1479, + 1480, + 1481, + 1482, + 1483, + 1484, + 1485, + 1486, + 1487, + 1488, + 1489, + 1490, + 1491, + 1492, + 1493, + 1494, + 1495, + 1496, + 1497, + 1498, + 1499, + 1500, + 1501, + 1502, + 1503, + 1504, + 1505, + 1506, + 1507, + 1508, + 1509, + 1510, + 1511, + 1512, + 1513, + 1514, + 1515, + 1516, + 1517, + 1518, + 1519, + 1520, + 1521, + 1522, + 1523, + 1524, + 1525, + 1526, + 1527, + 1528, + 1529, + 1530, + 1531, + 1532, + 1533, + 1534 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_sendLogPayload(bytes)" + } + } + } + } + ], + "description": "console._sendLogPayload(bytes) (lib/forge-std/src/console.sol#7-15) uses assembly\n\t- INLINE ASM (lib/forge-std/src/console.sol#11-14)\n", + "markdown": "[console._sendLogPayload(bytes)](lib/forge-std/src/console.sol#L7-L15) uses assembly\n\t- [INLINE ASM](lib/forge-std/src/console.sol#L11-L14)\n", + "first_markdown_element": "lib/forge-std/src/console.sol#L7-L15", + "id": "5758c17df66f8816f5064e14ea7f15d5ee32aa62981846c608f5a746b6c72583", + "check": "assembly", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "getUint256Slot", + "source_mapping": { + "start": 2489, + "length": 190, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "is_dependency": true, + "lines": [ + 82, + 83, + 84, + 85, + 86, + 87 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "StorageSlotUpgradeable", + "source_mapping": { + "start": 1279, + "length": 1402, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "is_dependency": true, + "lines": [ + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getUint256Slot(bytes32)" + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 2626, + "length": 47, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "is_dependency": true, + "lines": [ + 84, + 85, + 86 + ], + "starting_column": 9, + "ending_column": 10 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getUint256Slot", + "source_mapping": { + "start": 2489, + "length": 190, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "is_dependency": true, + "lines": [ + 82, + 83, + 84, + 85, + 86, + 87 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "StorageSlotUpgradeable", + "source_mapping": { + "start": 1279, + "length": 1402, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "is_dependency": true, + "lines": [ + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getUint256Slot(bytes32)" + } + } + } + } + ], + "description": "StorageSlotUpgradeable.getUint256Slot(bytes32) (lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#82-87) uses assembly\n\t- INLINE ASM (lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#84-86)\n", + "markdown": "[StorageSlotUpgradeable.getUint256Slot(bytes32)](lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#L82-L87) uses assembly\n\t- [INLINE ASM](lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#L84-L86)\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#L82-L87", + "id": "5da981982addb53aa1a484aa5b90b5edf14fff276b7d6100c546d2ff73004118", + "check": "assembly", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "rpow", + "source_mapping": { + "start": 2774, + "length": 2778, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FixedPointMathLib", + "source_mapping": { + "start": 341, + "length": 9712, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "rpow(uint256,uint256,uint256)" + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 2943, + "length": 2603, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157 + ], + "starting_column": 9, + "ending_column": 10 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "rpow", + "source_mapping": { + "start": 2774, + "length": 2778, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FixedPointMathLib", + "source_mapping": { + "start": 341, + "length": 9712, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "rpow(uint256,uint256,uint256)" + } + } + } + } + ], + "description": "FixedPointMathLib.rpow(uint256,uint256,uint256) (lib/solmate/src/utils/FixedPointMathLib.sol#71-158) uses assembly\n\t- INLINE ASM (lib/solmate/src/utils/FixedPointMathLib.sol#77-157)\n", + "markdown": "[FixedPointMathLib.rpow(uint256,uint256,uint256)](lib/solmate/src/utils/FixedPointMathLib.sol#L71-L158) uses assembly\n\t- [INLINE ASM](lib/solmate/src/utils/FixedPointMathLib.sol#L77-L157)\n", + "first_markdown_element": "lib/solmate/src/utils/FixedPointMathLib.sol#L71-L158", + "id": "689002e3bc5887c37efbbca861ab9ec47f766293178f650ae3d6f514b002c94c", + "check": "assembly", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "_revert", + "source_mapping": { + "start": 7739, + "length": 540, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AddressUpgradeable", + "source_mapping": { + "start": 194, + "length": 8087, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_revert(bytes,string)" + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 8070, + "length": 142, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 211, + 212, + 213, + 214 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_revert", + "source_mapping": { + "start": 7739, + "length": 540, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AddressUpgradeable", + "source_mapping": { + "start": 194, + "length": 8087, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_revert(bytes,string)" + } + } + } + } + ], + "description": "AddressUpgradeable._revert(bytes,string) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#206-218) uses assembly\n\t- INLINE ASM (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#211-214)\n", + "markdown": "[AddressUpgradeable._revert(bytes,string)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L206-L218) uses assembly\n\t- [INLINE ASM](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L211-L214)\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L206-L218", + "id": "739c2c53d803e97b4475b0c59002e269bf280c020785e91d89e6f198833bfda0", + "check": "assembly", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "values", + "source_mapping": { + "start": 12663, + "length": 297, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "is_dependency": true, + "lines": [ + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "EnumerableSetUpgradeable", + "source_mapping": { + "start": 1321, + "length": 11641, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "is_dependency": true, + "lines": [ + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "values(EnumerableSetUpgradeable.UintSet)" + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 12882, + "length": 48, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "is_dependency": true, + "lines": [ + 372, + 373, + 374 + ], + "starting_column": 9, + "ending_column": 10 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "values", + "source_mapping": { + "start": 12663, + "length": 297, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "is_dependency": true, + "lines": [ + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "EnumerableSetUpgradeable", + "source_mapping": { + "start": 1321, + "length": 11641, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "is_dependency": true, + "lines": [ + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "values(EnumerableSetUpgradeable.UintSet)" + } + } + } + } + ], + "description": "EnumerableSetUpgradeable.values(EnumerableSetUpgradeable.UintSet) (lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#367-377) uses assembly\n\t- INLINE ASM (lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#372-374)\n", + "markdown": "[EnumerableSetUpgradeable.values(EnumerableSetUpgradeable.UintSet)](lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#L367-L377) uses assembly\n\t- [INLINE ASM](lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#L372-L374)\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#L367-L377", + "id": "7d56bbef68d3d28816c6f1db6f457a021f9e797b84e7c3d7dbcc61c9462f0d2f", + "check": "assembly", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "mulDivDown", + "source_mapping": { + "start": 1564, + "length": 526, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FixedPointMathLib", + "source_mapping": { + "start": 341, + "length": 9712, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDivDown(uint256,uint256,uint256)" + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 1744, + "length": 340, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50 + ], + "starting_column": 9, + "ending_column": 10 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDivDown", + "source_mapping": { + "start": 1564, + "length": 526, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FixedPointMathLib", + "source_mapping": { + "start": 341, + "length": 9712, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDivDown(uint256,uint256,uint256)" + } + } + } + } + ], + "description": "FixedPointMathLib.mulDivDown(uint256,uint256,uint256) (lib/solmate/src/utils/FixedPointMathLib.sol#36-51) uses assembly\n\t- INLINE ASM (lib/solmate/src/utils/FixedPointMathLib.sol#42-50)\n", + "markdown": "[FixedPointMathLib.mulDivDown(uint256,uint256,uint256)](lib/solmate/src/utils/FixedPointMathLib.sol#L36-L51) uses assembly\n\t- [INLINE ASM](lib/solmate/src/utils/FixedPointMathLib.sol#L42-L50)\n", + "first_markdown_element": "lib/solmate/src/utils/FixedPointMathLib.sol#L36-L51", + "id": "9e144d907a30f66c9e2920440884a22c1725fb31d5d562c7fb53efa1509ea1b0", + "check": "assembly", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "toString", + "source_mapping": { + "start": 437, + "length": 707, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", + "is_dependency": true, + "lines": [ + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "StringsUpgradeable", + "source_mapping": { + "start": 199, + "length": 2098, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", + "is_dependency": true, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "toString(uint256)" + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 732, + "length": 76, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", + "is_dependency": true, + "lines": [ + 24, + 25, + 26 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "toString", + "source_mapping": { + "start": 437, + "length": 707, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", + "is_dependency": true, + "lines": [ + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "StringsUpgradeable", + "source_mapping": { + "start": 199, + "length": 2098, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", + "is_dependency": true, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "toString(uint256)" + } + } + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 926, + "length": 93, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", + "is_dependency": true, + "lines": [ + 30, + 31, + 32 + ], + "starting_column": 17, + "ending_column": 18 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "toString", + "source_mapping": { + "start": 437, + "length": 707, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", + "is_dependency": true, + "lines": [ + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "StringsUpgradeable", + "source_mapping": { + "start": 199, + "length": 2098, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", + "is_dependency": true, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "toString(uint256)" + } + } + } + } + ], + "description": "StringsUpgradeable.toString(uint256) (lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol#18-38) uses assembly\n\t- INLINE ASM (lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol#24-26)\n\t- INLINE ASM (lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol#30-32)\n", + "markdown": "[StringsUpgradeable.toString(uint256)](lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol#L18-L38) uses assembly\n\t- [INLINE ASM](lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol#L24-L26)\n\t- [INLINE ASM](lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol#L30-L32)\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol#L18-L38", + "id": "a992fcb04beb4b522d466219687aab5caf1862079a86d0a72ff29083031b1b83", + "check": "assembly", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "getBooleanSlot", + "source_mapping": { + "start": 1913, + "length": 190, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "is_dependency": true, + "lines": [ + 62, + 63, + 64, + 65, + 66, + 67 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "StorageSlotUpgradeable", + "source_mapping": { + "start": 1279, + "length": 1402, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "is_dependency": true, + "lines": [ + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getBooleanSlot(bytes32)" + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 2050, + "length": 47, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "is_dependency": true, + "lines": [ + 64, + 65, + 66 + ], + "starting_column": 9, + "ending_column": 10 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getBooleanSlot", + "source_mapping": { + "start": 1913, + "length": 190, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "is_dependency": true, + "lines": [ + 62, + 63, + 64, + 65, + 66, + 67 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "StorageSlotUpgradeable", + "source_mapping": { + "start": 1279, + "length": 1402, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "is_dependency": true, + "lines": [ + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getBooleanSlot(bytes32)" + } + } + } + } + ], + "description": "StorageSlotUpgradeable.getBooleanSlot(bytes32) (lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#62-67) uses assembly\n\t- INLINE ASM (lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#64-66)\n", + "markdown": "[StorageSlotUpgradeable.getBooleanSlot(bytes32)](lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#L62-L67) uses assembly\n\t- [INLINE ASM](lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#L64-L66)\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#L62-L67", + "id": "abed8f4ef4fa2e3da0dfadfbc2db35dab5f0cddac1132ccf3de6ff9dfd330e08", + "check": "assembly", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 741, + "length": 4127, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FullMath", + "source_mapping": { + "start": 354, + "length": 5163, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 1369, + "length": 166, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 27, + 28, + 29, + 30, + 31 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 741, + "length": 4127, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FullMath", + "source_mapping": { + "start": 354, + "length": 5163, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 1687, + "length": 82, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 36, + 37, + 38 + ], + "starting_column": 17, + "ending_column": 18 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 741, + "length": 4127, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FullMath", + "source_mapping": { + "start": 354, + "length": 5163, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 2291, + "length": 79, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 53, + 54, + 55 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 741, + "length": 4127, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FullMath", + "source_mapping": { + "start": 354, + "length": 5163, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 2442, + "length": 129, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 57, + 58, + 59, + 60 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 741, + "length": 4127, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FullMath", + "source_mapping": { + "start": 354, + "length": 5163, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 2846, + "length": 78, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 67, + 68, + 69 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 741, + "length": 4127, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FullMath", + "source_mapping": { + "start": 354, + "length": 5163, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 2996, + "length": 66, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 72, + 73, + 74 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 741, + "length": 4127, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FullMath", + "source_mapping": { + "start": 354, + "length": 5163, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 3257, + "length": 80, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 78, + 79, + 80 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 741, + "length": 4127, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FullMath", + "source_mapping": { + "start": 354, + "length": 5163, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + } + ], + "description": "FullMath.mulDiv(uint256,uint256,uint256) (lib/v3-core/contracts/libraries/FullMath.sol#14-108) uses assembly\n\t- INLINE ASM (lib/v3-core/contracts/libraries/FullMath.sol#27-31)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/FullMath.sol#36-38)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/FullMath.sol#53-55)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/FullMath.sol#57-60)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/FullMath.sol#67-69)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/FullMath.sol#72-74)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/FullMath.sol#78-80)\n", + "markdown": "[FullMath.mulDiv(uint256,uint256,uint256)](lib/v3-core/contracts/libraries/FullMath.sol#L14-L108) uses assembly\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/FullMath.sol#L27-L31)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/FullMath.sol#L36-L38)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/FullMath.sol#L53-L55)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/FullMath.sol#L57-L60)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/FullMath.sol#L67-L69)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/FullMath.sol#L72-L74)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/FullMath.sol#L78-L80)\n", + "first_markdown_element": "lib/v3-core/contracts/libraries/FullMath.sol#L14-L108", + "id": "cd4781abcd1d41fa749dcf4cc7a4749057c50a313df29ef331b4bb2d83971a0c", + "check": "assembly", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 1678, + "length": 3925, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "MathUpgradeable", + "source_mapping": { + "start": 202, + "length": 12313, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 2280, + "length": 166, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 66, + 67, + 68, + 69, + 70 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 1678, + "length": 3925, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "MathUpgradeable", + "source_mapping": { + "start": 202, + "length": 12313, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 3015, + "length": 300, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 1678, + "length": 3925, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "MathUpgradeable", + "source_mapping": { + "start": 202, + "length": 12313, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 3683, + "length": 371, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mulDiv", + "source_mapping": { + "start": 1678, + "length": 3925, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "MathUpgradeable", + "source_mapping": { + "start": 202, + "length": 12313, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "mulDiv(uint256,uint256,uint256)" + } + } + } + } + ], + "description": "MathUpgradeable.mulDiv(uint256,uint256,uint256) (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#55-135) uses assembly\n\t- INLINE ASM (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#66-70)\n\t- INLINE ASM (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#86-93)\n\t- INLINE ASM (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#100-109)\n", + "markdown": "[MathUpgradeable.mulDiv(uint256,uint256,uint256)](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L55-L135) uses assembly\n\t- [INLINE ASM](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L66-L70)\n\t- [INLINE ASM](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L86-L93)\n\t- [INLINE ASM](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L100-L109)\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L55-L135", + "id": "eb7fc1d015df84fd39e386d4f4360b409e4375b3501e52d9825a5f98ce00bbbe", + "check": "assembly", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "getBytes32Slot", + "source_mapping": { + "start": 2201, + "length": 190, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "is_dependency": true, + "lines": [ + 72, + 73, + 74, + 75, + 76, + 77 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "StorageSlotUpgradeable", + "source_mapping": { + "start": 1279, + "length": 1402, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "is_dependency": true, + "lines": [ + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getBytes32Slot(bytes32)" + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 2338, + "length": 47, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "is_dependency": true, + "lines": [ + 74, + 75, + 76 + ], + "starting_column": 9, + "ending_column": 10 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getBytes32Slot", + "source_mapping": { + "start": 2201, + "length": 190, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "is_dependency": true, + "lines": [ + 72, + 73, + 74, + 75, + 76, + 77 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "StorageSlotUpgradeable", + "source_mapping": { + "start": 1279, + "length": 1402, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "is_dependency": true, + "lines": [ + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getBytes32Slot(bytes32)" + } + } + } + } + ], + "description": "StorageSlotUpgradeable.getBytes32Slot(bytes32) (lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#72-77) uses assembly\n\t- INLINE ASM (lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#74-76)\n", + "markdown": "[StorageSlotUpgradeable.getBytes32Slot(bytes32)](lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#L72-L77) uses assembly\n\t- [INLINE ASM](lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#L74-L76)\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#L72-L77", + "id": "f1477136301f065a939603e66af2ce9966e69e30be386b8261bade5d7a7d25f1", + "check": "assembly", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "getAddressSlot", + "source_mapping": { + "start": 1625, + "length": 190, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "is_dependency": true, + "lines": [ + 52, + 53, + 54, + 55, + 56, + 57 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "StorageSlotUpgradeable", + "source_mapping": { + "start": 1279, + "length": 1402, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "is_dependency": true, + "lines": [ + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getAddressSlot(bytes32)" + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 1762, + "length": 47, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "is_dependency": true, + "lines": [ + 54, + 55, + 56 + ], + "starting_column": 9, + "ending_column": 10 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getAddressSlot", + "source_mapping": { + "start": 1625, + "length": 190, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "is_dependency": true, + "lines": [ + 52, + 53, + 54, + 55, + 56, + 57 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "StorageSlotUpgradeable", + "source_mapping": { + "start": 1279, + "length": 1402, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "is_dependency": true, + "lines": [ + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getAddressSlot(bytes32)" + } + } + } + } + ], + "description": "StorageSlotUpgradeable.getAddressSlot(bytes32) (lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#52-57) uses assembly\n\t- INLINE ASM (lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#54-56)\n", + "markdown": "[StorageSlotUpgradeable.getAddressSlot(bytes32)](lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#L52-L57) uses assembly\n\t- [INLINE ASM](lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#L54-L56)\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#L52-L57", + "id": "fcaccdf637e880c618f6f15622fb469dee912b1a036bb71ad6b383881b62ae17", + "check": "assembly", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "_swapVelo", + "source_mapping": { + "start": 862, + "length": 1768, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "VeloSolidMixin", + "source_mapping": { + "start": 313, + "length": 4635, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapVelo(address,address,uint256,uint256,address,uint256,bool)" + } + }, + { + "type": "node", + "name": "_tryCatchActive != false", + "source_mapping": { + "start": 1850, + "length": 24, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 51 + ], + "starting_column": 12, + "ending_column": 36 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapVelo", + "source_mapping": { + "start": 862, + "length": 1768, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "VeloSolidMixin", + "source_mapping": { + "start": 313, + "length": 4635, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapVelo(address,address,uint256,uint256,address,uint256,bool)" + } + } + } + } + ], + "description": "VeloSolidMixin._swapVelo(address,address,uint256,uint256,address,uint256,bool) (lib/vault-v2/src/mixins/VeloSolidMixin.sol#24-71) compares to a boolean constant:\n\t-_tryCatchActive != false (lib/vault-v2/src/mixins/VeloSolidMixin.sol#51)\n", + "markdown": "[VeloSolidMixin._swapVelo(address,address,uint256,uint256,address,uint256,bool)](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L24-L71) compares to a boolean constant:\n\t-[_tryCatchActive != false](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L51)\n", + "first_markdown_element": "lib/vault-v2/src/mixins/VeloSolidMixin.sol#L24-L71", + "id": "3468c3b56c70dc328b6ce16a2e884a49779787f33d95ed13986ee13303b673fb", + "check": "boolean-equal", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "_swapUniV2", + "source_mapping": { + "start": 748, + "length": 1626, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "UniV2Mixin", + "source_mapping": { + "start": 234, + "length": 4634, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapUniV2(address,address,uint256,uint256,address,uint256,bool)" + } + }, + { + "type": "node", + "name": "_tryCatchActive != false", + "source_mapping": { + "start": 1622, + "length": 24, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 45 + ], + "starting_column": 13, + "ending_column": 37 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapUniV2", + "source_mapping": { + "start": 748, + "length": 1626, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "UniV2Mixin", + "source_mapping": { + "start": 234, + "length": 4634, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapUniV2(address,address,uint256,uint256,address,uint256,bool)" + } + } + } + } + ], + "description": "UniV2Mixin._swapUniV2(address,address,uint256,uint256,address,uint256,bool) (lib/vault-v2/src/mixins/UniV2Mixin.sol#20-60) compares to a boolean constant:\n\t-_tryCatchActive != false (lib/vault-v2/src/mixins/UniV2Mixin.sol#45)\n", + "markdown": "[UniV2Mixin._swapUniV2(address,address,uint256,uint256,address,uint256,bool)](lib/vault-v2/src/mixins/UniV2Mixin.sol#L20-L60) compares to a boolean constant:\n\t-[_tryCatchActive != false](lib/vault-v2/src/mixins/UniV2Mixin.sol#L45)\n", + "first_markdown_element": "lib/vault-v2/src/mixins/UniV2Mixin.sol#L20-L60", + "id": "4d722cef03d795c4c7527723911fc2803c15560ae0f19f483e776f19951c36e6", + "check": "boolean-equal", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "_swapBal", + "source_mapping": { + "start": 895, + "length": 1974, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BalMixin", + "source_mapping": { + "start": 307, + "length": 3662, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapBal(address,address,uint256,uint256,address,uint256,bool)" + } + }, + { + "type": "node", + "name": "_tryCatchActive != false", + "source_mapping": { + "start": 2254, + "length": 24, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 63 + ], + "starting_column": 13, + "ending_column": 37 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swapBal", + "source_mapping": { + "start": 895, + "length": 1974, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BalMixin", + "source_mapping": { + "start": 307, + "length": 3662, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_swapBal(address,address,uint256,uint256,address,uint256,bool)" + } + } + } + } + ], + "description": "BalMixin._swapBal(address,address,uint256,uint256,address,uint256,bool) (lib/vault-v2/src/mixins/BalMixin.sol#25-76) compares to a boolean constant:\n\t-_tryCatchActive != false (lib/vault-v2/src/mixins/BalMixin.sol#63)\n", + "markdown": "[BalMixin._swapBal(address,address,uint256,uint256,address,uint256,bool)](lib/vault-v2/src/mixins/BalMixin.sol#L25-L76) compares to a boolean constant:\n\t-[_tryCatchActive != false](lib/vault-v2/src/mixins/BalMixin.sol#L63)\n", + "first_markdown_element": "lib/vault-v2/src/mixins/BalMixin.sol#L25-L76", + "id": "7bfc25a8f3bd571f220c04ccf03c188600dbeeb995e1e600bb2cb95af4059ff2", + "check": "boolean-equal", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "pragma", + "name": ">=0.4.22<0.9.0", + "source_mapping": { + "start": 32, + "length": 32, + "filename_relative": "lib/forge-std/src/console.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/forge-std/src/console.sol", + "filename_short": "lib/forge-std/src/console.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 33 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.4", + ".22", + "<", + "0.9", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 118, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 108, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 104, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlEnumerableUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlEnumerableUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlEnumerableUpgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 94, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 102, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 107, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1967Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1967Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1967Upgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 113, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 93, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 115, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 105, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 106, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 110, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/IERC20MetadataUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/IERC20MetadataUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/IERC20MetadataUpgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 114, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 115, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 86, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 105, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 101, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 99, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 100, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 103, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 205, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "is_dependency": true, + "lines": [ + 5 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 105, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts/contracts/security/Pausable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/security/Pausable.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/security/Pausable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 106, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 114, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 115, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 86, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Context.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 32, + "length": 23, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 45, + "length": 23, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 37, + "length": 23, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 169, + "length": 23, + "filename_relative": "lib/vault-v2/src/interfaces/AggregatorV3Interface.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/AggregatorV3Interface.sol", + "filename_short": "lib/vault-v2/src/interfaces/AggregatorV3Interface.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 38, + "length": 23, + "filename_relative": "lib/vault-v2/src/interfaces/IAsset.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IAsset.sol", + "filename_short": "lib/vault-v2/src/interfaces/IAsset.sol", + "is_dependency": true, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 38, + "length": 23, + "filename_relative": "lib/vault-v2/src/interfaces/IAuthorizer.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IAuthorizer.sol", + "filename_short": "lib/vault-v2/src/interfaces/IAuthorizer.sol", + "is_dependency": true, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 38, + "length": 23, + "filename_relative": "lib/vault-v2/src/interfaces/IBasePool.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IBasePool.sol", + "filename_short": "lib/vault-v2/src/interfaces/IBasePool.sol", + "is_dependency": true, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 38, + "length": 23, + "filename_relative": "lib/vault-v2/src/interfaces/IBaseWeightedPool.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IBaseWeightedPool.sol", + "filename_short": "lib/vault-v2/src/interfaces/IBaseWeightedPool.sol", + "is_dependency": true, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 38, + "length": 23, + "filename_relative": "lib/vault-v2/src/interfaces/IBeetVault.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IBeetVault.sol", + "filename_short": "lib/vault-v2/src/interfaces/IBeetVault.sol", + "is_dependency": true, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 38, + "length": 23, + "filename_relative": "lib/vault-v2/src/interfaces/IPoolSwapStructs.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IPoolSwapStructs.sol", + "filename_short": "lib/vault-v2/src/interfaces/IPoolSwapStructs.sol", + "is_dependency": true, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 38, + "length": 23, + "filename_relative": "lib/vault-v2/src/interfaces/ISignaturesValidator.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/ISignaturesValidator.sol", + "filename_short": "lib/vault-v2/src/interfaces/ISignaturesValidator.sol", + "is_dependency": true, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 38, + "length": 23, + "filename_relative": "lib/vault-v2/src/interfaces/ISwapErrors.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/ISwapErrors.sol", + "filename_short": "lib/vault-v2/src/interfaces/ISwapErrors.sol", + "is_dependency": true, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 37, + "length": 23, + "filename_relative": "lib/vault-v2/src/interfaces/ISwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/ISwapper.sol", + "filename_short": "lib/vault-v2/src/interfaces/ISwapper.sol", + "is_dependency": true, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 37, + "length": 23, + "filename_relative": "lib/vault-v2/src/interfaces/ISwapperSwaps.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/ISwapperSwaps.sol", + "filename_short": "lib/vault-v2/src/interfaces/ISwapperSwaps.sol", + "is_dependency": true, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 38, + "length": 23, + "filename_relative": "lib/vault-v2/src/interfaces/ITemporarilyPausable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/ITemporarilyPausable.sol", + "filename_short": "lib/vault-v2/src/interfaces/ITemporarilyPausable.sol", + "is_dependency": true, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 36, + "length": 23, + "filename_relative": "lib/vault-v2/src/interfaces/IUniswapV2Router01.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IUniswapV2Router01.sol", + "filename_short": "lib/vault-v2/src/interfaces/IUniswapV2Router01.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 37, + "length": 23, + "filename_relative": "lib/vault-v2/src/interfaces/IVeloPair.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IVeloPair.sol", + "filename_short": "lib/vault-v2/src/interfaces/IVeloPair.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 37, + "length": 23, + "filename_relative": "lib/vault-v2/src/interfaces/IVeloRouter.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IVeloRouter.sol", + "filename_short": "lib/vault-v2/src/interfaces/IVeloRouter.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 32, + "length": 23, + "filename_relative": "lib/vault-v2/src/interfaces/IVeloV1AndV2Factory.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IVeloV1AndV2Factory.sol", + "filename_short": "lib/vault-v2/src/interfaces/IVeloV1AndV2Factory.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 38, + "length": 23, + "filename_relative": "lib/vault-v2/src/libraries/Babylonian.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/Babylonian.sol", + "filename_short": "lib/vault-v2/src/libraries/Babylonian.sol", + "is_dependency": true, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 38, + "length": 23, + "filename_relative": "lib/vault-v2/src/libraries/ReaperMathUtils.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/ReaperMathUtils.sol", + "filename_short": "lib/vault-v2/src/libraries/ReaperMathUtils.sol", + "is_dependency": true, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 38, + "length": 23, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 82, + "length": 23, + "filename_relative": "lib/vault-v2/src/mixins/ReaperAccessControl.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/ReaperAccessControl.sol", + "filename_short": "lib/vault-v2/src/mixins/ReaperAccessControl.sol", + "is_dependency": true, + "lines": [ + 5 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 38, + "length": 23, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 38, + "length": 23, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 38, + "length": 23, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 38, + "length": 23, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 679, + "length": 23, + "filename_relative": "src/interfaces/IBalancerTwapOracle.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/interfaces/IBalancerTwapOracle.sol", + "filename_short": "src/interfaces/IBalancerTwapOracle.sol", + "is_dependency": false, + "lines": [ + 15 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 37, + "length": 23, + "filename_relative": "src/interfaces/ISwapperSwaps.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/interfaces/ISwapperSwaps.sol", + "filename_short": "src/interfaces/ISwapperSwaps.sol", + "is_dependency": false, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.2", + "source_mapping": { + "start": 116, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".2" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.2", + "source_mapping": { + "start": 113, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".2" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.1", + "source_mapping": { + "start": 101, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".1" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.1", + "source_mapping": { + "start": 101, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".1" + ] + } + }, + { + "type": "pragma", + "name": ">=0.8.0", + "source_mapping": { + "start": 42, + "length": 24, + "filename_relative": "lib/solmate/src/auth/Owned.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/auth/Owned.sol", + "filename_short": "lib/solmate/src/auth/Owned.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": ">=0.8.0", + "source_mapping": { + "start": 42, + "length": 24, + "filename_relative": "lib/solmate/src/tokens/ERC20.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/tokens/ERC20.sol", + "filename_short": "lib/solmate/src/tokens/ERC20.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": ">=0.8.0", + "source_mapping": { + "start": 42, + "length": 24, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": ">=0.5.0", + "source_mapping": { + "start": 45, + "length": 24, + "filename_relative": "lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol", + "filename_short": "lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.5", + ".0" + ] + } + }, + { + "type": "pragma", + "name": ">=0.5.0", + "source_mapping": { + "start": 45, + "length": 24, + "filename_relative": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol", + "filename_short": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.5", + ".0" + ] + } + }, + { + "type": "pragma", + "name": ">=0.5.0", + "source_mapping": { + "start": 45, + "length": 24, + "filename_relative": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol", + "filename_short": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.5", + ".0" + ] + } + }, + { + "type": "pragma", + "name": ">=0.5.0", + "source_mapping": { + "start": 45, + "length": 24, + "filename_relative": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol", + "filename_short": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.5", + ".0" + ] + } + }, + { + "type": "pragma", + "name": ">=0.5.0", + "source_mapping": { + "start": 45, + "length": 24, + "filename_relative": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol", + "filename_short": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.5", + ".0" + ] + } + }, + { + "type": "pragma", + "name": ">=0.5.0", + "source_mapping": { + "start": 45, + "length": 24, + "filename_relative": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol", + "filename_short": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.5", + ".0" + ] + } + }, + { + "type": "pragma", + "name": ">=0.5.0", + "source_mapping": { + "start": 45, + "length": 24, + "filename_relative": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol", + "filename_short": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.5", + ".0" + ] + } + }, + { + "type": "pragma", + "name": ">=0.5.0", + "source_mapping": { + "start": 45, + "length": 24, + "filename_relative": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", + "filename_short": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.5", + ".0" + ] + } + }, + { + "type": "pragma", + "name": ">=0.5.0", + "source_mapping": { + "start": 45, + "length": 24, + "filename_relative": "lib/vault-v2/src/interfaces/IPeripheryImmutableState.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IPeripheryImmutableState.sol", + "filename_short": "lib/vault-v2/src/interfaces/IPeripheryImmutableState.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.5", + ".0" + ] + } + }, + { + "type": "pragma", + "name": ">=0.5.0", + "source_mapping": { + "start": 45, + "length": 24, + "filename_relative": "lib/vault-v2/src/interfaces/IUniswapV3Factory.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IUniswapV3Factory.sol", + "filename_short": "lib/vault-v2/src/interfaces/IUniswapV3Factory.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.5", + ".0" + ] + } + }, + { + "type": "pragma", + "name": ">=0.5.0", + "source_mapping": { + "start": 45, + "length": 24, + "filename_relative": "lib/vault-v2/src/interfaces/IUniswapV3SwapCallback.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IUniswapV3SwapCallback.sol", + "filename_short": "lib/vault-v2/src/interfaces/IUniswapV3SwapCallback.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.5", + ".0" + ] + } + }, + { + "type": "pragma", + "name": ">=0.7.5", + "source_mapping": { + "start": 45, + "length": 24, + "filename_relative": "lib/vault-v2/src/interfaces/ISwapRouter.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/ISwapRouter.sol", + "filename_short": "lib/vault-v2/src/interfaces/ISwapRouter.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.7", + ".5" + ] + } + }, + { + "type": "pragma", + "name": ">=0.6.2", + "source_mapping": { + "start": 36, + "length": 24, + "filename_relative": "lib/vault-v2/src/interfaces/IUniswapV2Router02.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IUniswapV2Router02.sol", + "filename_short": "lib/vault-v2/src/interfaces/IUniswapV2Router02.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.6", + ".2" + ] + } + }, + { + "type": "pragma", + "name": ">=0.6.0", + "source_mapping": { + "start": 45, + "length": 24, + "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.6", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.13", + "source_mapping": { + "start": 37, + "length": 24, + "filename_relative": "src/OptionsToken.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", + "filename_short": "src/OptionsToken.sol", + "is_dependency": false, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".13" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.13", + "source_mapping": { + "start": 37, + "length": 24, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".13" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.13", + "source_mapping": { + "start": 37, + "length": 24, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".13" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.13", + "source_mapping": { + "start": 37, + "length": 24, + "filename_relative": "src/interfaces/IBalancer2TokensPool.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/interfaces/IBalancer2TokensPool.sol", + "filename_short": "src/interfaces/IBalancer2TokensPool.sol", + "is_dependency": false, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".13" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.13", + "source_mapping": { + "start": 37, + "length": 24, + "filename_relative": "src/interfaces/IExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/interfaces/IExercise.sol", + "filename_short": "src/interfaces/IExercise.sol", + "is_dependency": false, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".13" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.13", + "source_mapping": { + "start": 37, + "length": 24, + "filename_relative": "src/interfaces/IOptionsToken.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/interfaces/IOptionsToken.sol", + "filename_short": "src/interfaces/IOptionsToken.sol", + "is_dependency": false, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".13" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.13", + "source_mapping": { + "start": 37, + "length": 24, + "filename_relative": "src/oracles/BalancerOracle.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/BalancerOracle.sol", + "filename_short": "src/oracles/BalancerOracle.sol", + "is_dependency": false, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".13" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.13", + "source_mapping": { + "start": 37, + "length": 24, + "filename_relative": "src/oracles/ThenaOracle.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/ThenaOracle.sol", + "filename_short": "src/oracles/ThenaOracle.sol", + "is_dependency": false, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".13" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.13", + "source_mapping": { + "start": 37, + "length": 24, + "filename_relative": "src/oracles/UniswapV3Oracle.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/UniswapV3Oracle.sol", + "filename_short": "src/oracles/UniswapV3Oracle.sol", + "is_dependency": false, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".13" + ] + } + }, + { + "type": "pragma", + "name": ">=0.7.0<0.9.0", + "source_mapping": { + "start": 723, + "length": 31, + "filename_relative": "src/interfaces/IBalancerVault.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/interfaces/IBalancerVault.sol", + "filename_short": "src/interfaces/IBalancerVault.sol", + "is_dependency": false, + "lines": [ + 17 + ], + "starting_column": 1, + "ending_column": 32 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.7", + ".0", + "<", + "0.9", + ".0" + ] + } + }, + { + "type": "pragma", + "name": ">=0.7.0<0.9.0", + "source_mapping": { + "start": 38, + "length": 31, + "filename_relative": "src/interfaces/IERC20Mintable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/interfaces/IERC20Mintable.sol", + "filename_short": "src/interfaces/IERC20Mintable.sol", + "is_dependency": false, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 32 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.7", + ".0", + "<", + "0.9", + ".0" + ] + } + }, + { + "type": "pragma", + "name": ">=0.7.0<0.9.0", + "source_mapping": { + "start": 38, + "length": 31, + "filename_relative": "src/interfaces/IOracle.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/interfaces/IOracle.sol", + "filename_short": "src/interfaces/IOracle.sol", + "is_dependency": false, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 32 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.7", + ".0", + "<", + "0.9", + ".0" + ] + } + }, + { + "type": "pragma", + "name": ">=0.5", + "source_mapping": { + "start": 0, + "length": 22, + "filename_relative": "src/interfaces/IThenaPair.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/interfaces/IThenaPair.sol", + "filename_short": "src/interfaces/IThenaPair.sol", + "is_dependency": false, + "lines": [ + 1 + ], + "starting_column": 1, + "ending_column": 23 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.5" + ] + } + } + ], + "description": "12 different versions of Solidity are used:\n\t- Version constraint >=0.4.22<0.9.0 is used by:\n\t\t->=0.4.22<0.9.0 (lib/forge-std/src/console.sol#2)\n\t- Version constraint ^0.8.0 is used by:\n\t\t-^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlEnumerableUpgradeable.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1967Upgradeable.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/IERC20MetadataUpgradeable.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#5)\n\t\t-^0.8.0 (lib/openzeppelin-contracts/contracts/security/Pausable.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts/contracts/utils/Context.sol#4)\n\t\t-^0.8.0 (lib/v3-core/contracts/libraries/FullMath.sol#2)\n\t\t-^0.8.0 (lib/v3-core/contracts/libraries/TickMath.sol#2)\n\t\t-^0.8.0 (lib/vault-v2/src/ReaperSwapper.sol#3)\n\t\t-^0.8.0 (lib/vault-v2/src/interfaces/AggregatorV3Interface.sol#4)\n\t\t-^0.8.0 (lib/vault-v2/src/interfaces/IAsset.sol#3)\n\t\t-^0.8.0 (lib/vault-v2/src/interfaces/IAuthorizer.sol#3)\n\t\t-^0.8.0 (lib/vault-v2/src/interfaces/IBasePool.sol#3)\n\t\t-^0.8.0 (lib/vault-v2/src/interfaces/IBaseWeightedPool.sol#3)\n\t\t-^0.8.0 (lib/vault-v2/src/interfaces/IBeetVault.sol#3)\n\t\t-^0.8.0 (lib/vault-v2/src/interfaces/IPoolSwapStructs.sol#3)\n\t\t-^0.8.0 (lib/vault-v2/src/interfaces/ISignaturesValidator.sol#3)\n\t\t-^0.8.0 (lib/vault-v2/src/interfaces/ISwapErrors.sol#3)\n\t\t-^0.8.0 (lib/vault-v2/src/interfaces/ISwapper.sol#3)\n\t\t-^0.8.0 (lib/vault-v2/src/interfaces/ISwapperSwaps.sol#3)\n\t\t-^0.8.0 (lib/vault-v2/src/interfaces/ITemporarilyPausable.sol#3)\n\t\t-^0.8.0 (lib/vault-v2/src/interfaces/IUniswapV2Router01.sol#2)\n\t\t-^0.8.0 (lib/vault-v2/src/interfaces/IVeloPair.sol#2)\n\t\t-^0.8.0 (lib/vault-v2/src/interfaces/IVeloRouter.sol#2)\n\t\t-^0.8.0 (lib/vault-v2/src/interfaces/IVeloV1AndV2Factory.sol#2)\n\t\t-^0.8.0 (lib/vault-v2/src/libraries/Babylonian.sol#3)\n\t\t-^0.8.0 (lib/vault-v2/src/libraries/ReaperMathUtils.sol#3)\n\t\t-^0.8.0 (lib/vault-v2/src/mixins/BalMixin.sol#3)\n\t\t-^0.8.0 (lib/vault-v2/src/mixins/ReaperAccessControl.sol#5)\n\t\t-^0.8.0 (lib/vault-v2/src/mixins/UniV2Mixin.sol#3)\n\t\t-^0.8.0 (lib/vault-v2/src/mixins/UniV3Mixin.sol#3)\n\t\t-^0.8.0 (lib/vault-v2/src/mixins/VeloSolidMixin.sol#3)\n\t\t-^0.8.0 (src/helpers/SwapHelper.sol#3)\n\t\t-^0.8.0 (src/interfaces/IBalancerTwapOracle.sol#15)\n\t\t-^0.8.0 (src/interfaces/ISwapperSwaps.sol#3)\n\t- Version constraint ^0.8.2 is used by:\n\t\t-^0.8.2 (lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#4)\n\t\t-^0.8.2 (lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol#4)\n\t- Version constraint ^0.8.1 is used by:\n\t\t-^0.8.1 (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#4)\n\t\t-^0.8.1 (lib/openzeppelin-contracts/contracts/utils/Address.sol#4)\n\t- Version constraint >=0.8.0 is used by:\n\t\t->=0.8.0 (lib/solmate/src/auth/Owned.sol#2)\n\t\t->=0.8.0 (lib/solmate/src/tokens/ERC20.sol#2)\n\t\t->=0.8.0 (lib/solmate/src/utils/FixedPointMathLib.sol#2)\n\t- Version constraint >=0.5.0 is used by:\n\t\t->=0.5.0 (lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol#2)\n\t\t->=0.5.0 (lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol#2)\n\t\t->=0.5.0 (lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol#2)\n\t\t->=0.5.0 (lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol#2)\n\t\t->=0.5.0 (lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol#2)\n\t\t->=0.5.0 (lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol#2)\n\t\t->=0.5.0 (lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol#2)\n\t\t->=0.5.0 (lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol#2)\n\t\t->=0.5.0 (lib/vault-v2/src/interfaces/IPeripheryImmutableState.sol#2)\n\t\t->=0.5.0 (lib/vault-v2/src/interfaces/IUniswapV3Factory.sol#2)\n\t\t->=0.5.0 (lib/vault-v2/src/interfaces/IUniswapV3SwapCallback.sol#2)\n\t- Version constraint >=0.7.5 is used by:\n\t\t->=0.7.5 (lib/vault-v2/src/interfaces/ISwapRouter.sol#2)\n\t- Version constraint >=0.6.2 is used by:\n\t\t->=0.6.2 (lib/vault-v2/src/interfaces/IUniswapV2Router02.sol#2)\n\t- Version constraint >=0.6.0 is used by:\n\t\t->=0.6.0 (lib/vault-v2/src/libraries/TransferHelper.sol#2)\n\t- Version constraint ^0.8.13 is used by:\n\t\t-^0.8.13 (src/OptionsToken.sol#2)\n\t\t-^0.8.13 (src/exercise/BaseExercise.sol#2)\n\t\t-^0.8.13 (src/exercise/DiscountExercise.sol#2)\n\t\t-^0.8.13 (src/interfaces/IBalancer2TokensPool.sol#2)\n\t\t-^0.8.13 (src/interfaces/IExercise.sol#2)\n\t\t-^0.8.13 (src/interfaces/IOptionsToken.sol#2)\n\t\t-^0.8.13 (src/oracles/BalancerOracle.sol#2)\n\t\t-^0.8.13 (src/oracles/ThenaOracle.sol#2)\n\t\t-^0.8.13 (src/oracles/UniswapV3Oracle.sol#2)\n\t- Version constraint >=0.7.0<0.9.0 is used by:\n\t\t->=0.7.0<0.9.0 (src/interfaces/IBalancerVault.sol#17)\n\t\t->=0.7.0<0.9.0 (src/interfaces/IERC20Mintable.sol#3)\n\t\t->=0.7.0<0.9.0 (src/interfaces/IOracle.sol#3)\n\t- Version constraint >=0.5 is used by:\n\t\t->=0.5 (src/interfaces/IThenaPair.sol#1)\n", + "markdown": "12 different versions of Solidity are used:\n\t- Version constraint >=0.4.22<0.9.0 is used by:\n\t\t-[>=0.4.22<0.9.0](lib/forge-std/src/console.sol#L2)\n\t- Version constraint ^0.8.0 is used by:\n\t\t-[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlEnumerableUpgradeable.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1967Upgradeable.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/IERC20MetadataUpgradeable.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#L5)\n\t\t-[^0.8.0](lib/openzeppelin-contracts/contracts/security/Pausable.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts/contracts/utils/Context.sol#L4)\n\t\t-[^0.8.0](lib/v3-core/contracts/libraries/FullMath.sol#L2)\n\t\t-[^0.8.0](lib/v3-core/contracts/libraries/TickMath.sol#L2)\n\t\t-[^0.8.0](lib/vault-v2/src/ReaperSwapper.sol#L3)\n\t\t-[^0.8.0](lib/vault-v2/src/interfaces/AggregatorV3Interface.sol#L4)\n\t\t-[^0.8.0](lib/vault-v2/src/interfaces/IAsset.sol#L3)\n\t\t-[^0.8.0](lib/vault-v2/src/interfaces/IAuthorizer.sol#L3)\n\t\t-[^0.8.0](lib/vault-v2/src/interfaces/IBasePool.sol#L3)\n\t\t-[^0.8.0](lib/vault-v2/src/interfaces/IBaseWeightedPool.sol#L3)\n\t\t-[^0.8.0](lib/vault-v2/src/interfaces/IBeetVault.sol#L3)\n\t\t-[^0.8.0](lib/vault-v2/src/interfaces/IPoolSwapStructs.sol#L3)\n\t\t-[^0.8.0](lib/vault-v2/src/interfaces/ISignaturesValidator.sol#L3)\n\t\t-[^0.8.0](lib/vault-v2/src/interfaces/ISwapErrors.sol#L3)\n\t\t-[^0.8.0](lib/vault-v2/src/interfaces/ISwapper.sol#L3)\n\t\t-[^0.8.0](lib/vault-v2/src/interfaces/ISwapperSwaps.sol#L3)\n\t\t-[^0.8.0](lib/vault-v2/src/interfaces/ITemporarilyPausable.sol#L3)\n\t\t-[^0.8.0](lib/vault-v2/src/interfaces/IUniswapV2Router01.sol#L2)\n\t\t-[^0.8.0](lib/vault-v2/src/interfaces/IVeloPair.sol#L2)\n\t\t-[^0.8.0](lib/vault-v2/src/interfaces/IVeloRouter.sol#L2)\n\t\t-[^0.8.0](lib/vault-v2/src/interfaces/IVeloV1AndV2Factory.sol#L2)\n\t\t-[^0.8.0](lib/vault-v2/src/libraries/Babylonian.sol#L3)\n\t\t-[^0.8.0](lib/vault-v2/src/libraries/ReaperMathUtils.sol#L3)\n\t\t-[^0.8.0](lib/vault-v2/src/mixins/BalMixin.sol#L3)\n\t\t-[^0.8.0](lib/vault-v2/src/mixins/ReaperAccessControl.sol#L5)\n\t\t-[^0.8.0](lib/vault-v2/src/mixins/UniV2Mixin.sol#L3)\n\t\t-[^0.8.0](lib/vault-v2/src/mixins/UniV3Mixin.sol#L3)\n\t\t-[^0.8.0](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L3)\n\t\t-[^0.8.0](src/helpers/SwapHelper.sol#L3)\n\t\t-[^0.8.0](src/interfaces/IBalancerTwapOracle.sol#L15)\n\t\t-[^0.8.0](src/interfaces/ISwapperSwaps.sol#L3)\n\t- Version constraint ^0.8.2 is used by:\n\t\t-[^0.8.2](lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#L4)\n\t\t-[^0.8.2](lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol#L4)\n\t- Version constraint ^0.8.1 is used by:\n\t\t-[^0.8.1](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L4)\n\t\t-[^0.8.1](lib/openzeppelin-contracts/contracts/utils/Address.sol#L4)\n\t- Version constraint >=0.8.0 is used by:\n\t\t-[>=0.8.0](lib/solmate/src/auth/Owned.sol#L2)\n\t\t-[>=0.8.0](lib/solmate/src/tokens/ERC20.sol#L2)\n\t\t-[>=0.8.0](lib/solmate/src/utils/FixedPointMathLib.sol#L2)\n\t- Version constraint >=0.5.0 is used by:\n\t\t-[>=0.5.0](lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol#L2)\n\t\t-[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol#L2)\n\t\t-[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol#L2)\n\t\t-[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol#L2)\n\t\t-[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol#L2)\n\t\t-[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol#L2)\n\t\t-[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol#L2)\n\t\t-[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol#L2)\n\t\t-[>=0.5.0](lib/vault-v2/src/interfaces/IPeripheryImmutableState.sol#L2)\n\t\t-[>=0.5.0](lib/vault-v2/src/interfaces/IUniswapV3Factory.sol#L2)\n\t\t-[>=0.5.0](lib/vault-v2/src/interfaces/IUniswapV3SwapCallback.sol#L2)\n\t- Version constraint >=0.7.5 is used by:\n\t\t-[>=0.7.5](lib/vault-v2/src/interfaces/ISwapRouter.sol#L2)\n\t- Version constraint >=0.6.2 is used by:\n\t\t-[>=0.6.2](lib/vault-v2/src/interfaces/IUniswapV2Router02.sol#L2)\n\t- Version constraint >=0.6.0 is used by:\n\t\t-[>=0.6.0](lib/vault-v2/src/libraries/TransferHelper.sol#L2)\n\t- Version constraint ^0.8.13 is used by:\n\t\t-[^0.8.13](src/OptionsToken.sol#L2)\n\t\t-[^0.8.13](src/exercise/BaseExercise.sol#L2)\n\t\t-[^0.8.13](src/exercise/DiscountExercise.sol#L2)\n\t\t-[^0.8.13](src/interfaces/IBalancer2TokensPool.sol#L2)\n\t\t-[^0.8.13](src/interfaces/IExercise.sol#L2)\n\t\t-[^0.8.13](src/interfaces/IOptionsToken.sol#L2)\n\t\t-[^0.8.13](src/oracles/BalancerOracle.sol#L2)\n\t\t-[^0.8.13](src/oracles/ThenaOracle.sol#L2)\n\t\t-[^0.8.13](src/oracles/UniswapV3Oracle.sol#L2)\n\t- Version constraint >=0.7.0<0.9.0 is used by:\n\t\t-[>=0.7.0<0.9.0](src/interfaces/IBalancerVault.sol#L17)\n\t\t-[>=0.7.0<0.9.0](src/interfaces/IERC20Mintable.sol#L3)\n\t\t-[>=0.7.0<0.9.0](src/interfaces/IOracle.sol#L3)\n\t- Version constraint >=0.5 is used by:\n\t\t-[>=0.5](src/interfaces/IThenaPair.sol#L1)\n", + "first_markdown_element": "lib/forge-std/src/console.sol#L2", + "id": "85edfa625830fd6d39749390d8a28c826b7e0471c23044a55a1d99f92b7f5482", + "check": "pragma", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + } + ], + "description": "TickMath.getSqrtRatioAtTick(int24) (lib/v3-core/contracts/libraries/TickMath.sol#26-61) has a high cyclomatic complexity (25).\n", + "markdown": "[TickMath.getSqrtRatioAtTick(int24)](lib/v3-core/contracts/libraries/TickMath.sol#L26-L61) has a high cyclomatic complexity (25).\n", + "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L26-L61", + "id": "7dc850151568c0ccbadfaf18e5baa7aba58df9a7be7ede854c7801abedfda59a", + "check": "cyclomatic-complexity", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "pragma", + "name": "^0.8.2", + "source_mapping": { + "start": 116, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".2" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.2", + "source_mapping": { + "start": 113, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".2" + ] + } + } + ], + "description": "Version constraint ^0.8.2 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)\n\t- FullInlinerNonExpressionSplitArgumentEvaluationOrder\n\t- MissingSideEffectsOnSelectorAccess\n\t- AbiReencodingHeadOverflowWithStaticArrayCleanup\n\t- DirtyBytesArrayToStorage\n\t- DataLocationChangeInInternalOverride\n\t- NestedCalldataArrayAbiReencodingSizeValidation\n\t- SignedImmutables\n\t- ABIDecodeTwoDimensionalArrayMemory\n\t- KeccakCaching.\nIt is used by:\n\t- ^0.8.2 (lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#4)\n\t- ^0.8.2 (lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol#4)\n", + "markdown": "Version constraint ^0.8.2 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)\n\t- FullInlinerNonExpressionSplitArgumentEvaluationOrder\n\t- MissingSideEffectsOnSelectorAccess\n\t- AbiReencodingHeadOverflowWithStaticArrayCleanup\n\t- DirtyBytesArrayToStorage\n\t- DataLocationChangeInInternalOverride\n\t- NestedCalldataArrayAbiReencodingSizeValidation\n\t- SignedImmutables\n\t- ABIDecodeTwoDimensionalArrayMemory\n\t- KeccakCaching.\nIt is used by:\n\t- [^0.8.2](lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#L4)\n\t- [^0.8.2](lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol#L4)\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#L4", + "id": "23c567b20d0424f0b9fdc3bc9515dded7c47d0f2c92a6223ce773baf018abb20", + "check": "solc-version", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "pragma", + "name": ">=0.6.0", + "source_mapping": { + "start": 45, + "length": 24, + "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.6", + ".0" + ] + } + } + ], + "description": "Version constraint >=0.6.0 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)\n\t- AbiReencodingHeadOverflowWithStaticArrayCleanup\n\t- DirtyBytesArrayToStorage\n\t- NestedCalldataArrayAbiReencodingSizeValidation\n\t- ABIDecodeTwoDimensionalArrayMemory\n\t- KeccakCaching\n\t- EmptyByteArrayCopy\n\t- DynamicArrayCleanup\n\t- MissingEscapingInFormatting\n\t- ArraySliceDynamicallyEncodedBaseType\n\t- ImplicitConstructorCallvalueCheck\n\t- TupleAssignmentMultiStackSlotComponents\n\t- MemoryArrayCreationOverflow\n\t- YulOptimizerRedundantAssignmentBreakContinue.\nIt is used by:\n\t- >=0.6.0 (lib/vault-v2/src/libraries/TransferHelper.sol#2)\n", + "markdown": "Version constraint >=0.6.0 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)\n\t- AbiReencodingHeadOverflowWithStaticArrayCleanup\n\t- DirtyBytesArrayToStorage\n\t- NestedCalldataArrayAbiReencodingSizeValidation\n\t- ABIDecodeTwoDimensionalArrayMemory\n\t- KeccakCaching\n\t- EmptyByteArrayCopy\n\t- DynamicArrayCleanup\n\t- MissingEscapingInFormatting\n\t- ArraySliceDynamicallyEncodedBaseType\n\t- ImplicitConstructorCallvalueCheck\n\t- TupleAssignmentMultiStackSlotComponents\n\t- MemoryArrayCreationOverflow\n\t- YulOptimizerRedundantAssignmentBreakContinue.\nIt is used by:\n\t- [>=0.6.0](lib/vault-v2/src/libraries/TransferHelper.sol#L2)\n", + "first_markdown_element": "lib/vault-v2/src/libraries/TransferHelper.sol#L2", + "id": "2ad22408bbd50c54342714ef4d73fdcb7de70fc26f2f719e2d94e74975873eb7", + "check": "solc-version", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "pragma", + "name": ">=0.5", + "source_mapping": { + "start": 0, + "length": 22, + "filename_relative": "src/interfaces/IThenaPair.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/interfaces/IThenaPair.sol", + "filename_short": "src/interfaces/IThenaPair.sol", + "is_dependency": false, + "lines": [ + 1 + ], + "starting_column": 1, + "ending_column": 23 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.5" + ] + } + } + ], + "description": "Version constraint >=0.5 is too complex.\nIt is used by:\n\t- >=0.5 (src/interfaces/IThenaPair.sol#1)\n", + "markdown": "Version constraint >=0.5 is too complex.\nIt is used by:\n\t- [>=0.5](src/interfaces/IThenaPair.sol#L1)\n", + "first_markdown_element": "src/interfaces/IThenaPair.sol#L1", + "id": "2ad70665f7cd347f547e5a92ff885c19999dbf2fae965bf1a9e88ae34d4842da", + "check": "solc-version", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "pragma", + "name": "^0.8.1", + "source_mapping": { + "start": 101, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".1" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.1", + "source_mapping": { + "start": 101, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".1" + ] + } + } + ], + "description": "Version constraint ^0.8.1 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)\n\t- FullInlinerNonExpressionSplitArgumentEvaluationOrder\n\t- MissingSideEffectsOnSelectorAccess\n\t- AbiReencodingHeadOverflowWithStaticArrayCleanup\n\t- DirtyBytesArrayToStorage\n\t- DataLocationChangeInInternalOverride\n\t- NestedCalldataArrayAbiReencodingSizeValidation\n\t- SignedImmutables\n\t- ABIDecodeTwoDimensionalArrayMemory\n\t- KeccakCaching.\nIt is used by:\n\t- ^0.8.1 (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#4)\n\t- ^0.8.1 (lib/openzeppelin-contracts/contracts/utils/Address.sol#4)\n", + "markdown": "Version constraint ^0.8.1 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)\n\t- FullInlinerNonExpressionSplitArgumentEvaluationOrder\n\t- MissingSideEffectsOnSelectorAccess\n\t- AbiReencodingHeadOverflowWithStaticArrayCleanup\n\t- DirtyBytesArrayToStorage\n\t- DataLocationChangeInInternalOverride\n\t- NestedCalldataArrayAbiReencodingSizeValidation\n\t- SignedImmutables\n\t- ABIDecodeTwoDimensionalArrayMemory\n\t- KeccakCaching.\nIt is used by:\n\t- [^0.8.1](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L4)\n\t- [^0.8.1](lib/openzeppelin-contracts/contracts/utils/Address.sol#L4)\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L4", + "id": "5b4c66a1bb40ec6a66dbf52a4cf24f6a91614ede5bb20cae9a049c071c3b9be2", + "check": "solc-version", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "pragma", + "name": ">=0.8.0", + "source_mapping": { + "start": 42, + "length": 24, + "filename_relative": "lib/solmate/src/auth/Owned.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/auth/Owned.sol", + "filename_short": "lib/solmate/src/auth/Owned.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": ">=0.8.0", + "source_mapping": { + "start": 42, + "length": 24, + "filename_relative": "lib/solmate/src/tokens/ERC20.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/tokens/ERC20.sol", + "filename_short": "lib/solmate/src/tokens/ERC20.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": ">=0.8.0", + "source_mapping": { + "start": 42, + "length": 24, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.8", + ".0" + ] + } + } + ], + "description": "Version constraint >=0.8.0 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)\n\t- FullInlinerNonExpressionSplitArgumentEvaluationOrder\n\t- MissingSideEffectsOnSelectorAccess\n\t- AbiReencodingHeadOverflowWithStaticArrayCleanup\n\t- DirtyBytesArrayToStorage\n\t- DataLocationChangeInInternalOverride\n\t- NestedCalldataArrayAbiReencodingSizeValidation\n\t- SignedImmutables\n\t- ABIDecodeTwoDimensionalArrayMemory\n\t- KeccakCaching.\nIt is used by:\n\t- >=0.8.0 (lib/solmate/src/auth/Owned.sol#2)\n\t- >=0.8.0 (lib/solmate/src/tokens/ERC20.sol#2)\n\t- >=0.8.0 (lib/solmate/src/utils/FixedPointMathLib.sol#2)\n", + "markdown": "Version constraint >=0.8.0 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)\n\t- FullInlinerNonExpressionSplitArgumentEvaluationOrder\n\t- MissingSideEffectsOnSelectorAccess\n\t- AbiReencodingHeadOverflowWithStaticArrayCleanup\n\t- DirtyBytesArrayToStorage\n\t- DataLocationChangeInInternalOverride\n\t- NestedCalldataArrayAbiReencodingSizeValidation\n\t- SignedImmutables\n\t- ABIDecodeTwoDimensionalArrayMemory\n\t- KeccakCaching.\nIt is used by:\n\t- [>=0.8.0](lib/solmate/src/auth/Owned.sol#L2)\n\t- [>=0.8.0](lib/solmate/src/tokens/ERC20.sol#L2)\n\t- [>=0.8.0](lib/solmate/src/utils/FixedPointMathLib.sol#L2)\n", + "first_markdown_element": "lib/solmate/src/auth/Owned.sol#L2", + "id": "608762324767ce76c3af44990a7836a9dfdba566defdc7b70d6131bf689edff6", + "check": "solc-version", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "pragma", + "name": ">=0.4.22<0.9.0", + "source_mapping": { + "start": 32, + "length": 32, + "filename_relative": "lib/forge-std/src/console.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/forge-std/src/console.sol", + "filename_short": "lib/forge-std/src/console.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 33 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.4", + ".22", + "<", + "0.9", + ".0" + ] + } + } + ], + "description": "Version constraint >=0.4.22<0.9.0 is too complex.\nIt is used by:\n\t- >=0.4.22<0.9.0 (lib/forge-std/src/console.sol#2)\n", + "markdown": "Version constraint >=0.4.22<0.9.0 is too complex.\nIt is used by:\n\t- [>=0.4.22<0.9.0](lib/forge-std/src/console.sol#L2)\n", + "first_markdown_element": "lib/forge-std/src/console.sol#L2", + "id": "6c8ea62efd4799f5b24c03f450a6e012ab55c2446251d81bfa3eca7df3593083", + "check": "solc-version", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "pragma", + "name": ">=0.7.0<0.9.0", + "source_mapping": { + "start": 723, + "length": 31, + "filename_relative": "src/interfaces/IBalancerVault.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/interfaces/IBalancerVault.sol", + "filename_short": "src/interfaces/IBalancerVault.sol", + "is_dependency": false, + "lines": [ + 17 + ], + "starting_column": 1, + "ending_column": 32 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.7", + ".0", + "<", + "0.9", + ".0" + ] + } + }, + { + "type": "pragma", + "name": ">=0.7.0<0.9.0", + "source_mapping": { + "start": 38, + "length": 31, + "filename_relative": "src/interfaces/IERC20Mintable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/interfaces/IERC20Mintable.sol", + "filename_short": "src/interfaces/IERC20Mintable.sol", + "is_dependency": false, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 32 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.7", + ".0", + "<", + "0.9", + ".0" + ] + } + }, + { + "type": "pragma", + "name": ">=0.7.0<0.9.0", + "source_mapping": { + "start": 38, + "length": 31, + "filename_relative": "src/interfaces/IOracle.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/interfaces/IOracle.sol", + "filename_short": "src/interfaces/IOracle.sol", + "is_dependency": false, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 32 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.7", + ".0", + "<", + "0.9", + ".0" + ] + } + } + ], + "description": "Version constraint >=0.7.0<0.9.0 is too complex.\nIt is used by:\n\t- >=0.7.0<0.9.0 (src/interfaces/IBalancerVault.sol#17)\n\t- >=0.7.0<0.9.0 (src/interfaces/IERC20Mintable.sol#3)\n\t- >=0.7.0<0.9.0 (src/interfaces/IOracle.sol#3)\n", + "markdown": "Version constraint >=0.7.0<0.9.0 is too complex.\nIt is used by:\n\t- [>=0.7.0<0.9.0](src/interfaces/IBalancerVault.sol#L17)\n\t- [>=0.7.0<0.9.0](src/interfaces/IERC20Mintable.sol#L3)\n\t- [>=0.7.0<0.9.0](src/interfaces/IOracle.sol#L3)\n", + "first_markdown_element": "src/interfaces/IBalancerVault.sol#L17", + "id": "76329079d414df38af98aae17d79222e359e9f99d2775292b8f625e9c4ee13d0", + "check": "solc-version", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 118, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 108, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 104, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlEnumerableUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlEnumerableUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlEnumerableUpgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 94, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 102, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 107, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1967Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1967Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1967Upgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 113, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 93, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 115, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 105, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 106, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 110, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/IERC20MetadataUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/IERC20MetadataUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/IERC20MetadataUpgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 114, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 115, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 86, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 105, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 101, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 99, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 100, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 103, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 205, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", + "is_dependency": true, + "lines": [ + 5 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 105, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts/contracts/security/Pausable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/security/Pausable.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/security/Pausable.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 106, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 114, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 115, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 86, + "length": 23, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Context.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 32, + "length": 23, + "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 45, + "length": 23, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 37, + "length": 23, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 169, + "length": 23, + "filename_relative": "lib/vault-v2/src/interfaces/AggregatorV3Interface.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/AggregatorV3Interface.sol", + "filename_short": "lib/vault-v2/src/interfaces/AggregatorV3Interface.sol", + "is_dependency": true, + "lines": [ + 4 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 38, + "length": 23, + "filename_relative": "lib/vault-v2/src/interfaces/IAsset.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IAsset.sol", + "filename_short": "lib/vault-v2/src/interfaces/IAsset.sol", + "is_dependency": true, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 38, + "length": 23, + "filename_relative": "lib/vault-v2/src/interfaces/IAuthorizer.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IAuthorizer.sol", + "filename_short": "lib/vault-v2/src/interfaces/IAuthorizer.sol", + "is_dependency": true, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 38, + "length": 23, + "filename_relative": "lib/vault-v2/src/interfaces/IBasePool.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IBasePool.sol", + "filename_short": "lib/vault-v2/src/interfaces/IBasePool.sol", + "is_dependency": true, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 38, + "length": 23, + "filename_relative": "lib/vault-v2/src/interfaces/IBaseWeightedPool.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IBaseWeightedPool.sol", + "filename_short": "lib/vault-v2/src/interfaces/IBaseWeightedPool.sol", + "is_dependency": true, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 38, + "length": 23, + "filename_relative": "lib/vault-v2/src/interfaces/IBeetVault.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IBeetVault.sol", + "filename_short": "lib/vault-v2/src/interfaces/IBeetVault.sol", + "is_dependency": true, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 38, + "length": 23, + "filename_relative": "lib/vault-v2/src/interfaces/IPoolSwapStructs.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IPoolSwapStructs.sol", + "filename_short": "lib/vault-v2/src/interfaces/IPoolSwapStructs.sol", + "is_dependency": true, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 38, + "length": 23, + "filename_relative": "lib/vault-v2/src/interfaces/ISignaturesValidator.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/ISignaturesValidator.sol", + "filename_short": "lib/vault-v2/src/interfaces/ISignaturesValidator.sol", + "is_dependency": true, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 38, + "length": 23, + "filename_relative": "lib/vault-v2/src/interfaces/ISwapErrors.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/ISwapErrors.sol", + "filename_short": "lib/vault-v2/src/interfaces/ISwapErrors.sol", + "is_dependency": true, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 37, + "length": 23, + "filename_relative": "lib/vault-v2/src/interfaces/ISwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/ISwapper.sol", + "filename_short": "lib/vault-v2/src/interfaces/ISwapper.sol", + "is_dependency": true, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 37, + "length": 23, + "filename_relative": "lib/vault-v2/src/interfaces/ISwapperSwaps.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/ISwapperSwaps.sol", + "filename_short": "lib/vault-v2/src/interfaces/ISwapperSwaps.sol", + "is_dependency": true, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 38, + "length": 23, + "filename_relative": "lib/vault-v2/src/interfaces/ITemporarilyPausable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/ITemporarilyPausable.sol", + "filename_short": "lib/vault-v2/src/interfaces/ITemporarilyPausable.sol", + "is_dependency": true, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 36, + "length": 23, + "filename_relative": "lib/vault-v2/src/interfaces/IUniswapV2Router01.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IUniswapV2Router01.sol", + "filename_short": "lib/vault-v2/src/interfaces/IUniswapV2Router01.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 37, + "length": 23, + "filename_relative": "lib/vault-v2/src/interfaces/IVeloPair.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IVeloPair.sol", + "filename_short": "lib/vault-v2/src/interfaces/IVeloPair.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 37, + "length": 23, + "filename_relative": "lib/vault-v2/src/interfaces/IVeloRouter.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IVeloRouter.sol", + "filename_short": "lib/vault-v2/src/interfaces/IVeloRouter.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 32, + "length": 23, + "filename_relative": "lib/vault-v2/src/interfaces/IVeloV1AndV2Factory.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IVeloV1AndV2Factory.sol", + "filename_short": "lib/vault-v2/src/interfaces/IVeloV1AndV2Factory.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 38, + "length": 23, + "filename_relative": "lib/vault-v2/src/libraries/Babylonian.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/Babylonian.sol", + "filename_short": "lib/vault-v2/src/libraries/Babylonian.sol", + "is_dependency": true, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 38, + "length": 23, + "filename_relative": "lib/vault-v2/src/libraries/ReaperMathUtils.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/ReaperMathUtils.sol", + "filename_short": "lib/vault-v2/src/libraries/ReaperMathUtils.sol", + "is_dependency": true, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 38, + "length": 23, + "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", + "is_dependency": true, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 82, + "length": 23, + "filename_relative": "lib/vault-v2/src/mixins/ReaperAccessControl.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/ReaperAccessControl.sol", + "filename_short": "lib/vault-v2/src/mixins/ReaperAccessControl.sol", + "is_dependency": true, + "lines": [ + 5 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 38, + "length": 23, + "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", + "is_dependency": true, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 38, + "length": 23, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 38, + "length": 23, + "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", + "is_dependency": true, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 38, + "length": 23, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 679, + "length": 23, + "filename_relative": "src/interfaces/IBalancerTwapOracle.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/interfaces/IBalancerTwapOracle.sol", + "filename_short": "src/interfaces/IBalancerTwapOracle.sol", + "is_dependency": false, + "lines": [ + 15 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.0", + "source_mapping": { + "start": 37, + "length": 23, + "filename_relative": "src/interfaces/ISwapperSwaps.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/interfaces/ISwapperSwaps.sol", + "filename_short": "src/interfaces/ISwapperSwaps.sol", + "is_dependency": false, + "lines": [ + 3 + ], + "starting_column": 1, + "ending_column": 24 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".0" + ] + } + } + ], + "description": "Version constraint ^0.8.0 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)\n\t- FullInlinerNonExpressionSplitArgumentEvaluationOrder\n\t- MissingSideEffectsOnSelectorAccess\n\t- AbiReencodingHeadOverflowWithStaticArrayCleanup\n\t- DirtyBytesArrayToStorage\n\t- DataLocationChangeInInternalOverride\n\t- NestedCalldataArrayAbiReencodingSizeValidation\n\t- SignedImmutables\n\t- ABIDecodeTwoDimensionalArrayMemory\n\t- KeccakCaching.\nIt is used by:\n\t- ^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlEnumerableUpgradeable.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1967Upgradeable.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/IERC20MetadataUpgradeable.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#5)\n\t- ^0.8.0 (lib/openzeppelin-contracts/contracts/security/Pausable.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts/contracts/utils/Context.sol#4)\n\t- ^0.8.0 (lib/v3-core/contracts/libraries/FullMath.sol#2)\n\t- ^0.8.0 (lib/v3-core/contracts/libraries/TickMath.sol#2)\n\t- ^0.8.0 (lib/vault-v2/src/ReaperSwapper.sol#3)\n\t- ^0.8.0 (lib/vault-v2/src/interfaces/AggregatorV3Interface.sol#4)\n\t- ^0.8.0 (lib/vault-v2/src/interfaces/IAsset.sol#3)\n\t- ^0.8.0 (lib/vault-v2/src/interfaces/IAuthorizer.sol#3)\n\t- ^0.8.0 (lib/vault-v2/src/interfaces/IBasePool.sol#3)\n\t- ^0.8.0 (lib/vault-v2/src/interfaces/IBaseWeightedPool.sol#3)\n\t- ^0.8.0 (lib/vault-v2/src/interfaces/IBeetVault.sol#3)\n\t- ^0.8.0 (lib/vault-v2/src/interfaces/IPoolSwapStructs.sol#3)\n\t- ^0.8.0 (lib/vault-v2/src/interfaces/ISignaturesValidator.sol#3)\n\t- ^0.8.0 (lib/vault-v2/src/interfaces/ISwapErrors.sol#3)\n\t- ^0.8.0 (lib/vault-v2/src/interfaces/ISwapper.sol#3)\n\t- ^0.8.0 (lib/vault-v2/src/interfaces/ISwapperSwaps.sol#3)\n\t- ^0.8.0 (lib/vault-v2/src/interfaces/ITemporarilyPausable.sol#3)\n\t- ^0.8.0 (lib/vault-v2/src/interfaces/IUniswapV2Router01.sol#2)\n\t- ^0.8.0 (lib/vault-v2/src/interfaces/IVeloPair.sol#2)\n\t- ^0.8.0 (lib/vault-v2/src/interfaces/IVeloRouter.sol#2)\n\t- ^0.8.0 (lib/vault-v2/src/interfaces/IVeloV1AndV2Factory.sol#2)\n\t- ^0.8.0 (lib/vault-v2/src/libraries/Babylonian.sol#3)\n\t- ^0.8.0 (lib/vault-v2/src/libraries/ReaperMathUtils.sol#3)\n\t- ^0.8.0 (lib/vault-v2/src/mixins/BalMixin.sol#3)\n\t- ^0.8.0 (lib/vault-v2/src/mixins/ReaperAccessControl.sol#5)\n\t- ^0.8.0 (lib/vault-v2/src/mixins/UniV2Mixin.sol#3)\n\t- ^0.8.0 (lib/vault-v2/src/mixins/UniV3Mixin.sol#3)\n\t- ^0.8.0 (lib/vault-v2/src/mixins/VeloSolidMixin.sol#3)\n\t- ^0.8.0 (src/helpers/SwapHelper.sol#3)\n\t- ^0.8.0 (src/interfaces/IBalancerTwapOracle.sol#15)\n\t- ^0.8.0 (src/interfaces/ISwapperSwaps.sol#3)\n", + "markdown": "Version constraint ^0.8.0 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)\n\t- FullInlinerNonExpressionSplitArgumentEvaluationOrder\n\t- MissingSideEffectsOnSelectorAccess\n\t- AbiReencodingHeadOverflowWithStaticArrayCleanup\n\t- DirtyBytesArrayToStorage\n\t- DataLocationChangeInInternalOverride\n\t- NestedCalldataArrayAbiReencodingSizeValidation\n\t- SignedImmutables\n\t- ABIDecodeTwoDimensionalArrayMemory\n\t- KeccakCaching.\nIt is used by:\n\t- [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlEnumerableUpgradeable.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1967Upgradeable.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/IERC20MetadataUpgradeable.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#L5)\n\t- [^0.8.0](lib/openzeppelin-contracts/contracts/security/Pausable.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts/contracts/utils/Context.sol#L4)\n\t- [^0.8.0](lib/v3-core/contracts/libraries/FullMath.sol#L2)\n\t- [^0.8.0](lib/v3-core/contracts/libraries/TickMath.sol#L2)\n\t- [^0.8.0](lib/vault-v2/src/ReaperSwapper.sol#L3)\n\t- [^0.8.0](lib/vault-v2/src/interfaces/AggregatorV3Interface.sol#L4)\n\t- [^0.8.0](lib/vault-v2/src/interfaces/IAsset.sol#L3)\n\t- [^0.8.0](lib/vault-v2/src/interfaces/IAuthorizer.sol#L3)\n\t- [^0.8.0](lib/vault-v2/src/interfaces/IBasePool.sol#L3)\n\t- [^0.8.0](lib/vault-v2/src/interfaces/IBaseWeightedPool.sol#L3)\n\t- [^0.8.0](lib/vault-v2/src/interfaces/IBeetVault.sol#L3)\n\t- [^0.8.0](lib/vault-v2/src/interfaces/IPoolSwapStructs.sol#L3)\n\t- [^0.8.0](lib/vault-v2/src/interfaces/ISignaturesValidator.sol#L3)\n\t- [^0.8.0](lib/vault-v2/src/interfaces/ISwapErrors.sol#L3)\n\t- [^0.8.0](lib/vault-v2/src/interfaces/ISwapper.sol#L3)\n\t- [^0.8.0](lib/vault-v2/src/interfaces/ISwapperSwaps.sol#L3)\n\t- [^0.8.0](lib/vault-v2/src/interfaces/ITemporarilyPausable.sol#L3)\n\t- [^0.8.0](lib/vault-v2/src/interfaces/IUniswapV2Router01.sol#L2)\n\t- [^0.8.0](lib/vault-v2/src/interfaces/IVeloPair.sol#L2)\n\t- [^0.8.0](lib/vault-v2/src/interfaces/IVeloRouter.sol#L2)\n\t- [^0.8.0](lib/vault-v2/src/interfaces/IVeloV1AndV2Factory.sol#L2)\n\t- [^0.8.0](lib/vault-v2/src/libraries/Babylonian.sol#L3)\n\t- [^0.8.0](lib/vault-v2/src/libraries/ReaperMathUtils.sol#L3)\n\t- [^0.8.0](lib/vault-v2/src/mixins/BalMixin.sol#L3)\n\t- [^0.8.0](lib/vault-v2/src/mixins/ReaperAccessControl.sol#L5)\n\t- [^0.8.0](lib/vault-v2/src/mixins/UniV2Mixin.sol#L3)\n\t- [^0.8.0](lib/vault-v2/src/mixins/UniV3Mixin.sol#L3)\n\t- [^0.8.0](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L3)\n\t- [^0.8.0](src/helpers/SwapHelper.sol#L3)\n\t- [^0.8.0](src/interfaces/IBalancerTwapOracle.sol#L15)\n\t- [^0.8.0](src/interfaces/ISwapperSwaps.sol#L3)\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#L4", + "id": "7bba08adf487efdfae92c045cfb77dbad46ee58270f68522c853dc82c1e990d1", + "check": "solc-version", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "pragma", + "name": ">=0.7.5", + "source_mapping": { + "start": 45, + "length": 24, + "filename_relative": "lib/vault-v2/src/interfaces/ISwapRouter.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/ISwapRouter.sol", + "filename_short": "lib/vault-v2/src/interfaces/ISwapRouter.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.7", + ".5" + ] + } + } + ], + "description": "Version constraint >=0.7.5 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)\n\t- FullInlinerNonExpressionSplitArgumentEvaluationOrder\n\t- MissingSideEffectsOnSelectorAccess\n\t- AbiReencodingHeadOverflowWithStaticArrayCleanup\n\t- DirtyBytesArrayToStorage\n\t- DataLocationChangeInInternalOverride\n\t- NestedCalldataArrayAbiReencodingSizeValidation\n\t- SignedImmutables\n\t- ABIDecodeTwoDimensionalArrayMemory\n\t- KeccakCaching.\nIt is used by:\n\t- >=0.7.5 (lib/vault-v2/src/interfaces/ISwapRouter.sol#2)\n", + "markdown": "Version constraint >=0.7.5 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)\n\t- FullInlinerNonExpressionSplitArgumentEvaluationOrder\n\t- MissingSideEffectsOnSelectorAccess\n\t- AbiReencodingHeadOverflowWithStaticArrayCleanup\n\t- DirtyBytesArrayToStorage\n\t- DataLocationChangeInInternalOverride\n\t- NestedCalldataArrayAbiReencodingSizeValidation\n\t- SignedImmutables\n\t- ABIDecodeTwoDimensionalArrayMemory\n\t- KeccakCaching.\nIt is used by:\n\t- [>=0.7.5](lib/vault-v2/src/interfaces/ISwapRouter.sol#L2)\n", + "first_markdown_element": "lib/vault-v2/src/interfaces/ISwapRouter.sol#L2", + "id": "9c890bf1b0570a6ad5a5771e5200b17d26d14d586d8c631f6f0a188594d81fe9", + "check": "solc-version", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "pragma", + "name": ">=0.6.2", + "source_mapping": { + "start": 36, + "length": 24, + "filename_relative": "lib/vault-v2/src/interfaces/IUniswapV2Router02.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IUniswapV2Router02.sol", + "filename_short": "lib/vault-v2/src/interfaces/IUniswapV2Router02.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.6", + ".2" + ] + } + } + ], + "description": "Version constraint >=0.6.2 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)\n\t- MissingSideEffectsOnSelectorAccess\n\t- AbiReencodingHeadOverflowWithStaticArrayCleanup\n\t- DirtyBytesArrayToStorage\n\t- NestedCalldataArrayAbiReencodingSizeValidation\n\t- ABIDecodeTwoDimensionalArrayMemory\n\t- KeccakCaching\n\t- EmptyByteArrayCopy\n\t- DynamicArrayCleanup\n\t- MissingEscapingInFormatting\n\t- ArraySliceDynamicallyEncodedBaseType\n\t- ImplicitConstructorCallvalueCheck\n\t- TupleAssignmentMultiStackSlotComponents\n\t- MemoryArrayCreationOverflow.\nIt is used by:\n\t- >=0.6.2 (lib/vault-v2/src/interfaces/IUniswapV2Router02.sol#2)\n", + "markdown": "Version constraint >=0.6.2 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)\n\t- MissingSideEffectsOnSelectorAccess\n\t- AbiReencodingHeadOverflowWithStaticArrayCleanup\n\t- DirtyBytesArrayToStorage\n\t- NestedCalldataArrayAbiReencodingSizeValidation\n\t- ABIDecodeTwoDimensionalArrayMemory\n\t- KeccakCaching\n\t- EmptyByteArrayCopy\n\t- DynamicArrayCleanup\n\t- MissingEscapingInFormatting\n\t- ArraySliceDynamicallyEncodedBaseType\n\t- ImplicitConstructorCallvalueCheck\n\t- TupleAssignmentMultiStackSlotComponents\n\t- MemoryArrayCreationOverflow.\nIt is used by:\n\t- [>=0.6.2](lib/vault-v2/src/interfaces/IUniswapV2Router02.sol#L2)\n", + "first_markdown_element": "lib/vault-v2/src/interfaces/IUniswapV2Router02.sol#L2", + "id": "bb0533356ecafe8099cc0d63ad30c4f7a6c44a4cbc4b5ed69e728fc32e446f1f", + "check": "solc-version", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "pragma", + "name": "^0.8.13", + "source_mapping": { + "start": 37, + "length": 24, + "filename_relative": "src/OptionsToken.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", + "filename_short": "src/OptionsToken.sol", + "is_dependency": false, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".13" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.13", + "source_mapping": { + "start": 37, + "length": 24, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".13" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.13", + "source_mapping": { + "start": 37, + "length": 24, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".13" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.13", + "source_mapping": { + "start": 37, + "length": 24, + "filename_relative": "src/interfaces/IBalancer2TokensPool.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/interfaces/IBalancer2TokensPool.sol", + "filename_short": "src/interfaces/IBalancer2TokensPool.sol", + "is_dependency": false, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".13" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.13", + "source_mapping": { + "start": 37, + "length": 24, + "filename_relative": "src/interfaces/IExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/interfaces/IExercise.sol", + "filename_short": "src/interfaces/IExercise.sol", + "is_dependency": false, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".13" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.13", + "source_mapping": { + "start": 37, + "length": 24, + "filename_relative": "src/interfaces/IOptionsToken.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/interfaces/IOptionsToken.sol", + "filename_short": "src/interfaces/IOptionsToken.sol", + "is_dependency": false, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".13" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.13", + "source_mapping": { + "start": 37, + "length": 24, + "filename_relative": "src/oracles/BalancerOracle.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/BalancerOracle.sol", + "filename_short": "src/oracles/BalancerOracle.sol", + "is_dependency": false, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".13" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.13", + "source_mapping": { + "start": 37, + "length": 24, + "filename_relative": "src/oracles/ThenaOracle.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/ThenaOracle.sol", + "filename_short": "src/oracles/ThenaOracle.sol", + "is_dependency": false, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".13" + ] + } + }, + { + "type": "pragma", + "name": "^0.8.13", + "source_mapping": { + "start": 37, + "length": 24, + "filename_relative": "src/oracles/UniswapV3Oracle.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/UniswapV3Oracle.sol", + "filename_short": "src/oracles/UniswapV3Oracle.sol", + "is_dependency": false, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + "^", + "0.8", + ".13" + ] + } + } + ], + "description": "Version constraint ^0.8.13 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)\n\t- VerbatimInvalidDeduplication\n\t- FullInlinerNonExpressionSplitArgumentEvaluationOrder\n\t- MissingSideEffectsOnSelectorAccess\n\t- StorageWriteRemovalBeforeConditionalTermination\n\t- AbiReencodingHeadOverflowWithStaticArrayCleanup\n\t- DirtyBytesArrayToStorage\n\t- InlineAssemblyMemorySideEffects\n\t- DataLocationChangeInInternalOverride\n\t- NestedCalldataArrayAbiReencodingSizeValidation.\nIt is used by:\n\t- ^0.8.13 (src/OptionsToken.sol#2)\n\t- ^0.8.13 (src/exercise/BaseExercise.sol#2)\n\t- ^0.8.13 (src/exercise/DiscountExercise.sol#2)\n\t- ^0.8.13 (src/interfaces/IBalancer2TokensPool.sol#2)\n\t- ^0.8.13 (src/interfaces/IExercise.sol#2)\n\t- ^0.8.13 (src/interfaces/IOptionsToken.sol#2)\n\t- ^0.8.13 (src/oracles/BalancerOracle.sol#2)\n\t- ^0.8.13 (src/oracles/ThenaOracle.sol#2)\n\t- ^0.8.13 (src/oracles/UniswapV3Oracle.sol#2)\n", + "markdown": "Version constraint ^0.8.13 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)\n\t- VerbatimInvalidDeduplication\n\t- FullInlinerNonExpressionSplitArgumentEvaluationOrder\n\t- MissingSideEffectsOnSelectorAccess\n\t- StorageWriteRemovalBeforeConditionalTermination\n\t- AbiReencodingHeadOverflowWithStaticArrayCleanup\n\t- DirtyBytesArrayToStorage\n\t- InlineAssemblyMemorySideEffects\n\t- DataLocationChangeInInternalOverride\n\t- NestedCalldataArrayAbiReencodingSizeValidation.\nIt is used by:\n\t- [^0.8.13](src/OptionsToken.sol#L2)\n\t- [^0.8.13](src/exercise/BaseExercise.sol#L2)\n\t- [^0.8.13](src/exercise/DiscountExercise.sol#L2)\n\t- [^0.8.13](src/interfaces/IBalancer2TokensPool.sol#L2)\n\t- [^0.8.13](src/interfaces/IExercise.sol#L2)\n\t- [^0.8.13](src/interfaces/IOptionsToken.sol#L2)\n\t- [^0.8.13](src/oracles/BalancerOracle.sol#L2)\n\t- [^0.8.13](src/oracles/ThenaOracle.sol#L2)\n\t- [^0.8.13](src/oracles/UniswapV3Oracle.sol#L2)\n", + "first_markdown_element": "src/OptionsToken.sol#L2", + "id": "d77d9a4f3322696453d48caf7374c78bcac298207384a6493c0203cab485063e", + "check": "solc-version", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "pragma", + "name": ">=0.5.0", + "source_mapping": { + "start": 45, + "length": 24, + "filename_relative": "lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol", + "filename_short": "lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.5", + ".0" + ] + } + }, + { + "type": "pragma", + "name": ">=0.5.0", + "source_mapping": { + "start": 45, + "length": 24, + "filename_relative": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol", + "filename_short": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.5", + ".0" + ] + } + }, + { + "type": "pragma", + "name": ">=0.5.0", + "source_mapping": { + "start": 45, + "length": 24, + "filename_relative": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol", + "filename_short": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.5", + ".0" + ] + } + }, + { + "type": "pragma", + "name": ">=0.5.0", + "source_mapping": { + "start": 45, + "length": 24, + "filename_relative": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol", + "filename_short": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.5", + ".0" + ] + } + }, + { + "type": "pragma", + "name": ">=0.5.0", + "source_mapping": { + "start": 45, + "length": 24, + "filename_relative": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol", + "filename_short": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.5", + ".0" + ] + } + }, + { + "type": "pragma", + "name": ">=0.5.0", + "source_mapping": { + "start": 45, + "length": 24, + "filename_relative": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol", + "filename_short": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.5", + ".0" + ] + } + }, + { + "type": "pragma", + "name": ">=0.5.0", + "source_mapping": { + "start": 45, + "length": 24, + "filename_relative": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol", + "filename_short": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.5", + ".0" + ] + } + }, + { + "type": "pragma", + "name": ">=0.5.0", + "source_mapping": { + "start": 45, + "length": 24, + "filename_relative": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", + "filename_short": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.5", + ".0" + ] + } + }, + { + "type": "pragma", + "name": ">=0.5.0", + "source_mapping": { + "start": 45, + "length": 24, + "filename_relative": "lib/vault-v2/src/interfaces/IPeripheryImmutableState.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IPeripheryImmutableState.sol", + "filename_short": "lib/vault-v2/src/interfaces/IPeripheryImmutableState.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.5", + ".0" + ] + } + }, + { + "type": "pragma", + "name": ">=0.5.0", + "source_mapping": { + "start": 45, + "length": 24, + "filename_relative": "lib/vault-v2/src/interfaces/IUniswapV3Factory.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IUniswapV3Factory.sol", + "filename_short": "lib/vault-v2/src/interfaces/IUniswapV3Factory.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.5", + ".0" + ] + } + }, + { + "type": "pragma", + "name": ">=0.5.0", + "source_mapping": { + "start": 45, + "length": 24, + "filename_relative": "lib/vault-v2/src/interfaces/IUniswapV3SwapCallback.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IUniswapV3SwapCallback.sol", + "filename_short": "lib/vault-v2/src/interfaces/IUniswapV3SwapCallback.sol", + "is_dependency": true, + "lines": [ + 2 + ], + "starting_column": 1, + "ending_column": 25 + }, + "type_specific_fields": { + "directive": [ + "solidity", + ">=", + "0.5", + ".0" + ] + } + } + ], + "description": "Version constraint >=0.5.0 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)\n\t- DirtyBytesArrayToStorage\n\t- ABIDecodeTwoDimensionalArrayMemory\n\t- KeccakCaching\n\t- EmptyByteArrayCopy\n\t- DynamicArrayCleanup\n\t- ImplicitConstructorCallvalueCheck\n\t- TupleAssignmentMultiStackSlotComponents\n\t- MemoryArrayCreationOverflow\n\t- privateCanBeOverridden\n\t- SignedArrayStorageCopy\n\t- ABIEncoderV2StorageArrayWithMultiSlotElement\n\t- DynamicConstructorArgumentsClippedABIV2\n\t- UninitializedFunctionPointerInConstructor\n\t- IncorrectEventSignatureInLibraries\n\t- ABIEncoderV2PackedStorage.\nIt is used by:\n\t- >=0.5.0 (lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol#2)\n\t- >=0.5.0 (lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol#2)\n\t- >=0.5.0 (lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol#2)\n\t- >=0.5.0 (lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol#2)\n\t- >=0.5.0 (lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol#2)\n\t- >=0.5.0 (lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol#2)\n\t- >=0.5.0 (lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol#2)\n\t- >=0.5.0 (lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol#2)\n\t- >=0.5.0 (lib/vault-v2/src/interfaces/IPeripheryImmutableState.sol#2)\n\t- >=0.5.0 (lib/vault-v2/src/interfaces/IUniswapV3Factory.sol#2)\n\t- >=0.5.0 (lib/vault-v2/src/interfaces/IUniswapV3SwapCallback.sol#2)\n", + "markdown": "Version constraint >=0.5.0 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)\n\t- DirtyBytesArrayToStorage\n\t- ABIDecodeTwoDimensionalArrayMemory\n\t- KeccakCaching\n\t- EmptyByteArrayCopy\n\t- DynamicArrayCleanup\n\t- ImplicitConstructorCallvalueCheck\n\t- TupleAssignmentMultiStackSlotComponents\n\t- MemoryArrayCreationOverflow\n\t- privateCanBeOverridden\n\t- SignedArrayStorageCopy\n\t- ABIEncoderV2StorageArrayWithMultiSlotElement\n\t- DynamicConstructorArgumentsClippedABIV2\n\t- UninitializedFunctionPointerInConstructor\n\t- IncorrectEventSignatureInLibraries\n\t- ABIEncoderV2PackedStorage.\nIt is used by:\n\t- [>=0.5.0](lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol#L2)\n\t- [>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol#L2)\n\t- [>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol#L2)\n\t- [>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol#L2)\n\t- [>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol#L2)\n\t- [>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol#L2)\n\t- [>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol#L2)\n\t- [>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol#L2)\n\t- [>=0.5.0](lib/vault-v2/src/interfaces/IPeripheryImmutableState.sol#L2)\n\t- [>=0.5.0](lib/vault-v2/src/interfaces/IUniswapV3Factory.sol#L2)\n\t- [>=0.5.0](lib/vault-v2/src/interfaces/IUniswapV3SwapCallback.sol#L2)\n", + "first_markdown_element": "lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol#L2", + "id": "e84a495d364105fdd86e3c7f8f77d282f0048ce3bd2dd58f1ffef9abeb868a29", + "check": "solc-version", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "functionCallWithValue", + "source_mapping": { + "start": 4960, + "length": 446, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Address", + "source_mapping": { + "start": 194, + "length": 8964, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "functionCallWithValue(address,bytes,uint256,string)" + } + }, + { + "type": "node", + "name": "(success,returndata) = target.call{value: value}(data)", + "source_mapping": { + "start": 5240, + "length": 73, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 135 + ], + "starting_column": 9, + "ending_column": 82 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "functionCallWithValue", + "source_mapping": { + "start": 4960, + "length": 446, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Address", + "source_mapping": { + "start": 194, + "length": 8964, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "functionCallWithValue(address,bytes,uint256,string)" + } + } + } + } + ], + "description": "Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (lib/openzeppelin-contracts/contracts/utils/Address.sol#128-137):\n\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts/contracts/utils/Address.sol#135)\n", + "markdown": "Low level call in [Address.functionCallWithValue(address,bytes,uint256,string)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L128-L137):\n\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135)\n", + "first_markdown_element": "lib/openzeppelin-contracts/contracts/utils/Address.sol#L128-L137", + "id": "117f0e40fe1352d1526a3c30c36971a0228cffa749da9528fa1d65423334e755", + "check": "low-level-calls", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "safeTransfer", + "source_mapping": { + "start": 1152, + "length": 279, + "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", + "is_dependency": true, + "lines": [ + 24, + 25, + 26, + 27 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TransferHelper", + "source_mapping": { + "start": 108, + "length": 2309, + "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", + "is_dependency": true, + "lines": [ + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "safeTransfer(address,address,uint256)" + } + }, + { + "type": "node", + "name": "(success,data) = token.call(abi.encodeWithSelector(IERC20.transfer.selector,to,value))", + "source_mapping": { + "start": 1235, + "length": 107, + "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", + "is_dependency": true, + "lines": [ + 25 + ], + "starting_column": 9, + "ending_column": 116 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "safeTransfer", + "source_mapping": { + "start": 1152, + "length": 279, + "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", + "is_dependency": true, + "lines": [ + 24, + 25, + 26, + 27 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TransferHelper", + "source_mapping": { + "start": 108, + "length": 2309, + "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", + "is_dependency": true, + "lines": [ + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "safeTransfer(address,address,uint256)" + } + } + } + } + ], + "description": "Low level call in TransferHelper.safeTransfer(address,address,uint256) (lib/vault-v2/src/libraries/TransferHelper.sol#24-27):\n\t- (success,data) = token.call(abi.encodeWithSelector(IERC20.transfer.selector,to,value)) (lib/vault-v2/src/libraries/TransferHelper.sol#25)\n", + "markdown": "Low level call in [TransferHelper.safeTransfer(address,address,uint256)](lib/vault-v2/src/libraries/TransferHelper.sol#L24-L27):\n\t- [(success,data) = token.call(abi.encodeWithSelector(IERC20.transfer.selector,to,value))](lib/vault-v2/src/libraries/TransferHelper.sol#L25)\n", + "first_markdown_element": "lib/vault-v2/src/libraries/TransferHelper.sol#L24-L27", + "id": "25ed2c6c6c60a5ffbabebdd4d6f7bfd18fd58359a16acbf51f11d083bbc5b7a6", + "check": "low-level-calls", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "safeTransferFrom", + "source_mapping": { + "start": 540, + "length": 320, + "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", + "is_dependency": true, + "lines": [ + 13, + 14, + 15, + 16, + 17 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TransferHelper", + "source_mapping": { + "start": 108, + "length": 2309, + "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", + "is_dependency": true, + "lines": [ + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "safeTransferFrom(address,address,address,uint256)" + } + }, + { + "type": "node", + "name": "(success,data) = token.call(abi.encodeWithSelector(IERC20.transferFrom.selector,from,to,value))", + "source_mapping": { + "start": 641, + "length": 129, + "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", + "is_dependency": true, + "lines": [ + 14, + 15 + ], + "starting_column": 9, + "ending_column": 94 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "safeTransferFrom", + "source_mapping": { + "start": 540, + "length": 320, + "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", + "is_dependency": true, + "lines": [ + 13, + 14, + 15, + 16, + 17 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TransferHelper", + "source_mapping": { + "start": 108, + "length": 2309, + "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", + "is_dependency": true, + "lines": [ + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "safeTransferFrom(address,address,address,uint256)" + } + } + } + } + ], + "description": "Low level call in TransferHelper.safeTransferFrom(address,address,address,uint256) (lib/vault-v2/src/libraries/TransferHelper.sol#13-17):\n\t- (success,data) = token.call(abi.encodeWithSelector(IERC20.transferFrom.selector,from,to,value)) (lib/vault-v2/src/libraries/TransferHelper.sol#14-15)\n", + "markdown": "Low level call in [TransferHelper.safeTransferFrom(address,address,address,uint256)](lib/vault-v2/src/libraries/TransferHelper.sol#L13-L17):\n\t- [(success,data) = token.call(abi.encodeWithSelector(IERC20.transferFrom.selector,from,to,value))](lib/vault-v2/src/libraries/TransferHelper.sol#L14-L15)\n", + "first_markdown_element": "lib/vault-v2/src/libraries/TransferHelper.sol#L13-L17", + "id": "4106472e91e5e4243fd3d3b66b2a8990e1c95c0a5bf0a286b8e1e6597c12ebb6", + "check": "low-level-calls", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "_functionDelegateCall", + "source_mapping": { + "start": 6780, + "length": 455, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "is_dependency": true, + "lines": [ + 184, + 185, + 186, + 187, + 188, + 189, + 190 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ERC1967UpgradeUpgradeable", + "source_mapping": { + "start": 661, + "length": 6867, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "is_dependency": true, + "lines": [ + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_functionDelegateCall(address,bytes)" + } + }, + { + "type": "node", + "name": "(success,returndata) = target.delegatecall(data)", + "source_mapping": { + "start": 7045, + "length": 67, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "is_dependency": true, + "lines": [ + 188 + ], + "starting_column": 9, + "ending_column": 76 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_functionDelegateCall", + "source_mapping": { + "start": 6780, + "length": 455, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "is_dependency": true, + "lines": [ + 184, + 185, + 186, + 187, + 188, + 189, + 190 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ERC1967UpgradeUpgradeable", + "source_mapping": { + "start": 661, + "length": 6867, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "is_dependency": true, + "lines": [ + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_functionDelegateCall(address,bytes)" + } + } + } + } + ], + "description": "Low level call in ERC1967UpgradeUpgradeable._functionDelegateCall(address,bytes) (lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#184-190):\n\t- (success,returndata) = target.delegatecall(data) (lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#188)\n", + "markdown": "Low level call in [ERC1967UpgradeUpgradeable._functionDelegateCall(address,bytes)](lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#L184-L190):\n\t- [(success,returndata) = target.delegatecall(data)](lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#L188)\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#L184-L190", + "id": "68c54f03456c9af14bc78976aaac6bce102000001fe91323e0ffc2d36d3acd64", + "check": "low-level-calls", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "sendValue", + "source_mapping": { + "start": 2412, + "length": 312, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 60, + 61, + 62, + 63, + 64, + 65 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Address", + "source_mapping": { + "start": 194, + "length": 8964, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "sendValue(address,uint256)" + } + }, + { + "type": "node", + "name": "(success,None) = recipient.call{value: amount}()", + "source_mapping": { + "start": 2577, + "length": 52, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 63 + ], + "starting_column": 9, + "ending_column": 61 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "sendValue", + "source_mapping": { + "start": 2412, + "length": 312, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 60, + 61, + 62, + 63, + 64, + 65 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Address", + "source_mapping": { + "start": 194, + "length": 8964, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "sendValue(address,uint256)" + } + } + } + } + ], + "description": "Low level call in Address.sendValue(address,uint256) (lib/openzeppelin-contracts/contracts/utils/Address.sol#60-65):\n\t- (success,None) = recipient.call{value: amount}() (lib/openzeppelin-contracts/contracts/utils/Address.sol#63)\n", + "markdown": "Low level call in [Address.sendValue(address,uint256)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L60-L65):\n\t- [(success,None) = recipient.call{value: amount}()](lib/openzeppelin-contracts/contracts/utils/Address.sol#L63)\n", + "first_markdown_element": "lib/openzeppelin-contracts/contracts/utils/Address.sol#L60-L65", + "id": "71a3a6ee368d2284f3a1f62a49cfd8cdecd854d6c9799bb82199830989d7fb6c", + "check": "low-level-calls", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "sendValue", + "source_mapping": { + "start": 2423, + "length": 312, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 60, + 61, + 62, + 63, + 64, + 65 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AddressUpgradeable", + "source_mapping": { + "start": 194, + "length": 8087, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "sendValue(address,uint256)" + } + }, + { + "type": "node", + "name": "(success,None) = recipient.call{value: amount}()", + "source_mapping": { + "start": 2588, + "length": 52, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 63 + ], + "starting_column": 9, + "ending_column": 61 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "sendValue", + "source_mapping": { + "start": 2423, + "length": 312, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 60, + 61, + 62, + 63, + 64, + 65 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AddressUpgradeable", + "source_mapping": { + "start": 194, + "length": 8087, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "sendValue(address,uint256)" + } + } + } + } + ], + "description": "Low level call in AddressUpgradeable.sendValue(address,uint256) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#60-65):\n\t- (success,None) = recipient.call{value: amount}() (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#63)\n", + "markdown": "Low level call in [AddressUpgradeable.sendValue(address,uint256)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L60-L65):\n\t- [(success,None) = recipient.call{value: amount}()](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L63)\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L60-L65", + "id": "89d29e5a468e08c404fcc98bf6872b9e33ca2f30eaea1879f1d6a95c9faca274", + "check": "low-level-calls", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "functionStaticCall", + "source_mapping": { + "start": 5975, + "length": 326, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AddressUpgradeable", + "source_mapping": { + "start": 194, + "length": 8087, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "functionStaticCall(address,bytes,string)" + } + }, + { + "type": "node", + "name": "(success,returndata) = target.staticcall(data)", + "source_mapping": { + "start": 6143, + "length": 65, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 160 + ], + "starting_column": 9, + "ending_column": 74 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "functionStaticCall", + "source_mapping": { + "start": 5975, + "length": 326, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AddressUpgradeable", + "source_mapping": { + "start": 194, + "length": 8087, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "functionStaticCall(address,bytes,string)" + } + } + } + } + ], + "description": "Low level call in AddressUpgradeable.functionStaticCall(address,bytes,string) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#155-162):\n\t- (success,returndata) = target.staticcall(data) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#160)\n", + "markdown": "Low level call in [AddressUpgradeable.functionStaticCall(address,bytes,string)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L155-L162):\n\t- [(success,returndata) = target.staticcall(data)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L160)\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L155-L162", + "id": "930ee0ffde6f0923876c4bc0067edc13707a3214f1d8d8954a2ef16471f1ee87", + "check": "low-level-calls", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "functionStaticCall", + "source_mapping": { + "start": 5964, + "length": 326, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Address", + "source_mapping": { + "start": 194, + "length": 8964, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "functionStaticCall(address,bytes,string)" + } + }, + { + "type": "node", + "name": "(success,returndata) = target.staticcall(data)", + "source_mapping": { + "start": 6132, + "length": 65, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 160 + ], + "starting_column": 9, + "ending_column": 74 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "functionStaticCall", + "source_mapping": { + "start": 5964, + "length": 326, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Address", + "source_mapping": { + "start": 194, + "length": 8964, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "functionStaticCall(address,bytes,string)" + } + } + } + } + ], + "description": "Low level call in Address.functionStaticCall(address,bytes,string) (lib/openzeppelin-contracts/contracts/utils/Address.sol#155-162):\n\t- (success,returndata) = target.staticcall(data) (lib/openzeppelin-contracts/contracts/utils/Address.sol#160)\n", + "markdown": "Low level call in [Address.functionStaticCall(address,bytes,string)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L155-L162):\n\t- [(success,returndata) = target.staticcall(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L160)\n", + "first_markdown_element": "lib/openzeppelin-contracts/contracts/utils/Address.sol#L155-L162", + "id": "93eb0561ad76cb924a6646e71a8388be0f653be8a9cd37bdb60e25805d8be051", + "check": "low-level-calls", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "safeTransferETH", + "source_mapping": { + "start": 2251, + "length": 164, + "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", + "is_dependency": true, + "lines": [ + 43, + 44, + 45, + 46 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TransferHelper", + "source_mapping": { + "start": 108, + "length": 2309, + "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", + "is_dependency": true, + "lines": [ + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "safeTransferETH(address,uint256)" + } + }, + { + "type": "node", + "name": "(success,None) = to.call{value: value}(new bytes(0))", + "source_mapping": { + "start": 2322, + "length": 53, + "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", + "is_dependency": true, + "lines": [ + 44 + ], + "starting_column": 9, + "ending_column": 62 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "safeTransferETH", + "source_mapping": { + "start": 2251, + "length": 164, + "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", + "is_dependency": true, + "lines": [ + 43, + 44, + 45, + 46 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TransferHelper", + "source_mapping": { + "start": 108, + "length": 2309, + "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", + "is_dependency": true, + "lines": [ + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "safeTransferETH(address,uint256)" + } + } + } + } + ], + "description": "Low level call in TransferHelper.safeTransferETH(address,uint256) (lib/vault-v2/src/libraries/TransferHelper.sol#43-46):\n\t- (success,None) = to.call{value: value}(new bytes(0)) (lib/vault-v2/src/libraries/TransferHelper.sol#44)\n", + "markdown": "Low level call in [TransferHelper.safeTransferETH(address,uint256)](lib/vault-v2/src/libraries/TransferHelper.sol#L43-L46):\n\t- [(success,None) = to.call{value: value}(new bytes(0))](lib/vault-v2/src/libraries/TransferHelper.sol#L44)\n", + "first_markdown_element": "lib/vault-v2/src/libraries/TransferHelper.sol#L43-L46", + "id": "a7ee1b8ee08e673c81b6be63d50aa8273a86fb1be76e38aa60b066b6cb985739", + "check": "low-level-calls", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "safeApprove", + "source_mapping": { + "start": 1784, + "length": 277, + "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", + "is_dependency": true, + "lines": [ + 34, + 35, + 36, + 37 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TransferHelper", + "source_mapping": { + "start": 108, + "length": 2309, + "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", + "is_dependency": true, + "lines": [ + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "safeApprove(address,address,uint256)" + } + }, + { + "type": "node", + "name": "(success,data) = token.call(abi.encodeWithSelector(IERC20.approve.selector,to,value))", + "source_mapping": { + "start": 1866, + "length": 106, + "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", + "is_dependency": true, + "lines": [ + 35 + ], + "starting_column": 9, + "ending_column": 115 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "safeApprove", + "source_mapping": { + "start": 1784, + "length": 277, + "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", + "is_dependency": true, + "lines": [ + 34, + 35, + 36, + 37 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TransferHelper", + "source_mapping": { + "start": 108, + "length": 2309, + "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", + "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", + "is_dependency": true, + "lines": [ + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "safeApprove(address,address,uint256)" + } + } + } + } + ], + "description": "Low level call in TransferHelper.safeApprove(address,address,uint256) (lib/vault-v2/src/libraries/TransferHelper.sol#34-37):\n\t- (success,data) = token.call(abi.encodeWithSelector(IERC20.approve.selector,to,value)) (lib/vault-v2/src/libraries/TransferHelper.sol#35)\n", + "markdown": "Low level call in [TransferHelper.safeApprove(address,address,uint256)](lib/vault-v2/src/libraries/TransferHelper.sol#L34-L37):\n\t- [(success,data) = token.call(abi.encodeWithSelector(IERC20.approve.selector,to,value))](lib/vault-v2/src/libraries/TransferHelper.sol#L35)\n", + "first_markdown_element": "lib/vault-v2/src/libraries/TransferHelper.sol#L34-L37", + "id": "c7fac630cfc9b967d8af50ae5e1c350df9a222c8c9e8ef56e33726ed42bf6bfd", + "check": "low-level-calls", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "functionCallWithValue", + "source_mapping": { + "start": 4971, + "length": 446, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AddressUpgradeable", + "source_mapping": { + "start": 194, + "length": 8087, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "functionCallWithValue(address,bytes,uint256,string)" + } + }, + { + "type": "node", + "name": "(success,returndata) = target.call{value: value}(data)", + "source_mapping": { + "start": 5251, + "length": 73, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 135 + ], + "starting_column": 9, + "ending_column": 82 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "functionCallWithValue", + "source_mapping": { + "start": 4971, + "length": 446, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AddressUpgradeable", + "source_mapping": { + "start": 194, + "length": 8087, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "functionCallWithValue(address,bytes,uint256,string)" + } + } + } + } + ], + "description": "Low level call in AddressUpgradeable.functionCallWithValue(address,bytes,uint256,string) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#128-137):\n\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#135)\n", + "markdown": "Low level call in [AddressUpgradeable.functionCallWithValue(address,bytes,uint256,string)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L128-L137):\n\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L135)\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L128-L137", + "id": "c89bbc1f4bb1262a39f9090cc1b9e7447b4593134afdcf6677ccbd6a394243ae", + "check": "low-level-calls", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "functionDelegateCall", + "source_mapping": { + "start": 6853, + "length": 325, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Address", + "source_mapping": { + "start": 194, + "length": 8964, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "functionDelegateCall(address,bytes,string)" + } + }, + { + "type": "node", + "name": "(success,returndata) = target.delegatecall(data)", + "source_mapping": { + "start": 7018, + "length": 67, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 185 + ], + "starting_column": 9, + "ending_column": 76 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "functionDelegateCall", + "source_mapping": { + "start": 6853, + "length": 325, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Address", + "source_mapping": { + "start": 194, + "length": 8964, + "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "is_dependency": true, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "functionDelegateCall(address,bytes,string)" + } + } + } + } + ], + "description": "Low level call in Address.functionDelegateCall(address,bytes,string) (lib/openzeppelin-contracts/contracts/utils/Address.sol#180-187):\n\t- (success,returndata) = target.delegatecall(data) (lib/openzeppelin-contracts/contracts/utils/Address.sol#185)\n", + "markdown": "Low level call in [Address.functionDelegateCall(address,bytes,string)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L180-L187):\n\t- [(success,returndata) = target.delegatecall(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L185)\n", + "first_markdown_element": "lib/openzeppelin-contracts/contracts/utils/Address.sol#L180-L187", + "id": "d195a90c4848e59b62bdf1e5bf577abf5a3a0d92ac7dad04aef4ca0c978598bb", + "check": "low-level-calls", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_router", + "source_mapping": { + "start": 3672, + "length": 15, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 97 + ], + "starting_column": 71, + "ending_column": 86 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "updateUniV2SwapPath", + "source_mapping": { + "start": 3606, + "length": 253, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 97, + 98, + 99, + 100, + 101, + 102, + 103 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "updateUniV2SwapPath(address,address,address,address[])" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.updateUniV2SwapPath(address,address,address,address[])._router (lib/vault-v2/src/ReaperSwapper.sol#97) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.updateUniV2SwapPath(address,address,address,address[])._router](lib/vault-v2/src/ReaperSwapper.sol#L97) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L97", + "id": "045fb660d1db15a01f9c99a6b5f6fb1408a8fd0d9c8a18d9df6c0ba49a374583", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_minAmountOutData", + "source_mapping": { + "start": 9195, + "length": 41, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 258 + ], + "starting_column": 9, + "ending_column": 50 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV3", + "source_mapping": { + "start": 9098, + "length": 323, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address,uint256)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256)._minAmountOutData (lib/vault-v2/src/ReaperSwapper.sol#258) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256)._minAmountOutData](lib/vault-v2/src/ReaperSwapper.sol#L258) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L258", + "id": "056e10de3ceb71ae24ecfcaa44f6c9ca1e39f54e0a350667ed239b6dc8076db7", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_router", + "source_mapping": { + "start": 5256, + "length": 15, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 144 + ], + "starting_column": 9, + "ending_column": 24 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV2", + "source_mapping": { + "start": 5108, + "length": 515, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)._router (lib/vault-v2/src/ReaperSwapper.sol#144) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)._router](lib/vault-v2/src/ReaperSwapper.sol#L144) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L144", + "id": "0787751791a4c77b7495d89adc97395e4ffcf397cb1818fdb17614015b8de9dc", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_amount", + "source_mapping": { + "start": 8323, + "length": 15, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 234 + ], + "starting_column": 9, + "ending_column": 24 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapVelo", + "source_mapping": { + "start": 8252, + "length": 300, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapVelo(address,address,uint256,MinAmountOutData,address)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address)._amount (lib/vault-v2/src/ReaperSwapper.sol#234) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address)._amount](lib/vault-v2/src/ReaperSwapper.sol#L234) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L234", + "id": "08b84b7756b996f86a47f6056fbae30a072defadc58214f35cfc7d507bbbf801", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_deadline", + "source_mapping": { + "start": 8731, + "length": 17, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 247 + ], + "starting_column": 9, + "ending_column": 26 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV3", + "source_mapping": { + "start": 8558, + "length": 534, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)._deadline (lib/vault-v2/src/ReaperSwapper.sol#247) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)._deadline](lib/vault-v2/src/ReaperSwapper.sol#L247) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L247", + "id": "08efa8121ff57e30ff0150c964c8970a993a0edcaca089059974cbfcc6366943", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_tokenIn", + "source_mapping": { + "start": 3635, + "length": 16, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 97 + ], + "starting_column": 34, + "ending_column": 50 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "updateUniV2SwapPath", + "source_mapping": { + "start": 3606, + "length": 253, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 97, + 98, + 99, + 100, + 101, + 102, + 103 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "updateUniV2SwapPath(address,address,address,address[])" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.updateUniV2SwapPath(address,address,address,address[])._tokenIn (lib/vault-v2/src/ReaperSwapper.sol#97) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.updateUniV2SwapPath(address,address,address,address[])._tokenIn](lib/vault-v2/src/ReaperSwapper.sol#L97) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L97", + "id": "0b27fda3861b3fe8e55b99783814bc1cee3e0c23c1f343feb33c325f4501d68c", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_to", + "source_mapping": { + "start": 9149, + "length": 11, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 256 + ], + "starting_column": 9, + "ending_column": 20 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV3", + "source_mapping": { + "start": 9098, + "length": 323, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address,uint256)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256)._to (lib/vault-v2/src/ReaperSwapper.sol#256) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256)._to](lib/vault-v2/src/ReaperSwapper.sol#L256) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L256", + "id": "0b4fd12a14dd7d67ae408415c747efa419594368b633030ff52d6c977203874c", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_deadline", + "source_mapping": { + "start": 8097, + "length": 17, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 226 + ], + "starting_column": 9, + "ending_column": 26 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapVelo", + "source_mapping": { + "start": 7925, + "length": 321, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256)._deadline (lib/vault-v2/src/ReaperSwapper.sol#226) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256)._deadline](lib/vault-v2/src/ReaperSwapper.sol#L226) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L226", + "id": "0cdc556021475f0af1abd7fd72e843e33927c369b1e1c0ffaae3798048a0c1ae", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_swapPathAndFees", + "source_mapping": { + "start": 4500, + "length": 37, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 125 + ], + "starting_column": 9, + "ending_column": 46 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "updateUniV3SwapPath", + "source_mapping": { + "start": 4384, + "length": 297, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "updateUniV3SwapPath(address,address,address,UniV3SwapData)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.updateUniV3SwapPath(address,address,address,UniV3SwapData)._swapPathAndFees (lib/vault-v2/src/ReaperSwapper.sol#125) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.updateUniV3SwapPath(address,address,address,UniV3SwapData)._swapPathAndFees](lib/vault-v2/src/ReaperSwapper.sol#L125) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L125", + "id": "0e642fe8b87d792e6c6d36b518053207216f97f0fef498badb6a7874ed3df69a", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_minAmountOutData", + "source_mapping": { + "start": 9524, + "length": 41, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 269 + ], + "starting_column": 9, + "ending_column": 50 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV3", + "source_mapping": { + "start": 9427, + "length": 302, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address)._minAmountOutData (lib/vault-v2/src/ReaperSwapper.sol#269) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address)._minAmountOutData](lib/vault-v2/src/ReaperSwapper.sol#L269) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L269", + "id": "10054eaf2fa911a848a5fad5a0dda5b107dcf5deb8cb4f17cbb21eed25bfe193", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "DOMAIN_SEPARATOR", + "source_mapping": { + "start": 2200, + "length": 60, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "is_dependency": true, + "lines": [ + 59 + ], + "starting_column": 5, + "ending_column": 65 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "IERC20PermitUpgradeable", + "source_mapping": { + "start": 620, + "length": 1642, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "is_dependency": true, + "lines": [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "DOMAIN_SEPARATOR()" + }, + "additional_fields": { + "target": "function", + "convention": "mixedCase" + } + } + ], + "description": "Function IERC20PermitUpgradeable.DOMAIN_SEPARATOR() (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol#59) is not in mixedCase\n", + "markdown": "Function [IERC20PermitUpgradeable.DOMAIN_SEPARATOR()](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol#L59) is not in mixedCase\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol#L59", + "id": "125dfc7c7f2b3906a5391a5c33308280a9b2578cf6bba9c9acfe0f81566a4a45", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_to", + "source_mapping": { + "start": 6009, + "length": 11, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 165 + ], + "starting_column": 9, + "ending_column": 20 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV2", + "source_mapping": { + "start": 5958, + "length": 302, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address)._to (lib/vault-v2/src/ReaperSwapper.sol#165) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address)._to](lib/vault-v2/src/ReaperSwapper.sol#L165) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L165", + "id": "13386020056a24202ba7c82b9d72db8fadd9fc2dd25e8f0619ad4ee353fa6be8", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_tryCatchActive", + "source_mapping": { + "start": 5308, + "length": 20, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 146 + ], + "starting_column": 9, + "ending_column": 29 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV2", + "source_mapping": { + "start": 5108, + "length": 515, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)._tryCatchActive (lib/vault-v2/src/ReaperSwapper.sol#146) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)._tryCatchActive](lib/vault-v2/src/ReaperSwapper.sol#L146) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L146", + "id": "1413c8e43afe2c3bb270b1d87658ac7a5460b58ea2c4207eff0b7f20572e3487", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_from", + "source_mapping": { + "start": 5657, + "length": 13, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 153 + ], + "starting_column": 9, + "ending_column": 22 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV2", + "source_mapping": { + "start": 5629, + "length": 323, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256)._from (lib/vault-v2/src/ReaperSwapper.sol#153) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256)._from](lib/vault-v2/src/ReaperSwapper.sol#L153) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L153", + "id": "167f6e358e928549089ddd67ae14cacf28a7b6b3d2ba49ecde0d95bbdf59a712", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_token", + "source_mapping": { + "start": 4718, + "length": 14, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 131 + ], + "starting_column": 36, + "ending_column": 50 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "updateTokenAggregator", + "source_mapping": { + "start": 4687, + "length": 415, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 131, + 132, + 133, + 134, + 135, + 136, + 137 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "updateTokenAggregator(address,address,uint256)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.updateTokenAggregator(address,address,uint256)._token (lib/vault-v2/src/ReaperSwapper.sol#131) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.updateTokenAggregator(address,address,uint256)._token](lib/vault-v2/src/ReaperSwapper.sol#L131) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L131", + "id": "16896e5595b8f444a953b0b29208119da1d296a34ca6563be4c53b709cc64eec", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_amount", + "source_mapping": { + "start": 5180, + "length": 15, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 142 + ], + "starting_column": 9, + "ending_column": 24 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV2", + "source_mapping": { + "start": 5108, + "length": 515, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)._amount (lib/vault-v2/src/ReaperSwapper.sol#142) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)._amount](lib/vault-v2/src/ReaperSwapper.sol#L142) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L142", + "id": "17950f73fc7894890b97248a7fa127919e88cf0d7f1253e8140b803d31fe376d", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_router", + "source_mapping": { + "start": 7553, + "length": 15, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 212 + ], + "starting_column": 9, + "ending_column": 24 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapVelo", + "source_mapping": { + "start": 7406, + "length": 513, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)._router (lib/vault-v2/src/ReaperSwapper.sol#212) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)._router](lib/vault-v2/src/ReaperSwapper.sol#L212) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L212", + "id": "2071ae182e04da551e03610f93d5f1c8cbd402de79ade41335d807e0c8f9ca2d", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_router", + "source_mapping": { + "start": 9246, + "length": 15, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 259 + ], + "starting_column": 9, + "ending_column": 24 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV3", + "source_mapping": { + "start": 9098, + "length": 323, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address,uint256)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256)._router (lib/vault-v2/src/ReaperSwapper.sol#259) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256)._router](lib/vault-v2/src/ReaperSwapper.sol#L259) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L259", + "id": "21aa1ba8369fb7a559e4c0fc1bf22fe287113c68f962299287db1014485354ae", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "__AccessControl_init_unchained", + "source_mapping": { + "start": 2096, + "length": 75, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "is_dependency": true, + "lines": [ + 54, + 55 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AccessControlUpgradeable", + "source_mapping": { + "start": 1893, + "length": 6829, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "is_dependency": true, + "lines": [ + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "__AccessControl_init_unchained()" + }, + "additional_fields": { + "target": "function", + "convention": "mixedCase" + } + } + ], + "description": "Function AccessControlUpgradeable.__AccessControl_init_unchained() (lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol#54-55) is not in mixedCase\n", + "markdown": "Function [AccessControlUpgradeable.__AccessControl_init_unchained()](lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol#L54-L55) is not in mixedCase\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol#L54-L55", + "id": "226e7d5af64c132f41abf0df79c0723e2a9ee53e2961f745732ce61ab1360dbe", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_deadline", + "source_mapping": { + "start": 7578, + "length": 17, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 213 + ], + "starting_column": 9, + "ending_column": 26 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapVelo", + "source_mapping": { + "start": 7406, + "length": 513, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)._deadline (lib/vault-v2/src/ReaperSwapper.sol#213) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)._deadline](lib/vault-v2/src/ReaperSwapper.sol#L213) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L213", + "id": "240474b72d2cdc4bd8b66ec268a242cf52bd88a0bd41e774e65b9f185e61fbbe", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "__ERC1967Upgrade_init_unchained", + "source_mapping": { + "start": 821, + "length": 76, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "is_dependency": true, + "lines": [ + 25, + 26 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ERC1967UpgradeUpgradeable", + "source_mapping": { + "start": 661, + "length": 6867, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "is_dependency": true, + "lines": [ + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "__ERC1967Upgrade_init_unchained()" + }, + "additional_fields": { + "target": "function", + "convention": "mixedCase" + } + } + ], + "description": "Function ERC1967UpgradeUpgradeable.__ERC1967Upgrade_init_unchained() (lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#25-26) is not in mixedCase\n", + "markdown": "Function [ERC1967UpgradeUpgradeable.__ERC1967Upgrade_init_unchained()](lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#L25-L26) is not in mixedCase\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#L25-L26", + "id": "29c5a9e0594a34ab55098292b0786be5a1f49f1e651ab7af2a669ca40aceb7cb", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_minAmountOutData", + "source_mapping": { + "start": 7199, + "length": 41, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 201 + ], + "starting_column": 9, + "ending_column": 50 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapBal", + "source_mapping": { + "start": 7104, + "length": 296, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapBal(address,address,uint256,MinAmountOutData,address)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address)._minAmountOutData (lib/vault-v2/src/ReaperSwapper.sol#201) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address)._minAmountOutData](lib/vault-v2/src/ReaperSwapper.sol#L201) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L201", + "id": "2be2dfb84a1a47a1fe2c701f27b43bdd31cbf35e78f89cc8ed3ef46fb5072bca", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_minAmountOutData", + "source_mapping": { + "start": 8655, + "length": 41, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 245 + ], + "starting_column": 9, + "ending_column": 50 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV3", + "source_mapping": { + "start": 8558, + "length": 534, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)._minAmountOutData (lib/vault-v2/src/ReaperSwapper.sol#245) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)._minAmountOutData](lib/vault-v2/src/ReaperSwapper.sol#L245) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L245", + "id": "2c2e8431129b1c52325a318d5db8219a891248cfc55c1a5cf2b2920f2c9fa9f8", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_tokenOut", + "source_mapping": { + "start": 3653, + "length": 17, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 97 + ], + "starting_column": 52, + "ending_column": 69 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "updateUniV2SwapPath", + "source_mapping": { + "start": 3606, + "length": 253, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 97, + 98, + 99, + 100, + 101, + 102, + 103 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "updateUniV2SwapPath(address,address,address,address[])" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.updateUniV2SwapPath(address,address,address,address[])._tokenOut (lib/vault-v2/src/ReaperSwapper.sol#97) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.updateUniV2SwapPath(address,address,address,address[])._tokenOut](lib/vault-v2/src/ReaperSwapper.sol#L97) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L97", + "id": "2c8a8bc61df4a18b388999061d6fa5010feaf9562fd8d62b188e468e456a7153", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "INITIAL_CHAIN_ID", + "source_mapping": { + "start": 1643, + "length": 43, + "filename_relative": "lib/solmate/src/tokens/ERC20.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/tokens/ERC20.sol", + "filename_short": "lib/solmate/src/tokens/ERC20.sol", + "is_dependency": true, + "lines": [ + 41 + ], + "starting_column": 5, + "ending_column": 48 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ERC20", + "source_mapping": { + "start": 474, + "length": 6337, + "filename_relative": "lib/solmate/src/tokens/ERC20.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/tokens/ERC20.sol", + "filename_short": "lib/solmate/src/tokens/ERC20.sol", + "is_dependency": true, + "lines": [ + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206 + ], + "starting_column": 1, + "ending_column": 2 + } + } + }, + "additional_fields": { + "target": "variable", + "convention": "mixedCase" + } + } + ], + "description": "Variable ERC20.INITIAL_CHAIN_ID (lib/solmate/src/tokens/ERC20.sol#41) is not in mixedCase\n", + "markdown": "Variable [ERC20.INITIAL_CHAIN_ID](lib/solmate/src/tokens/ERC20.sol#L41) is not in mixedCase\n", + "first_markdown_element": "lib/solmate/src/tokens/ERC20.sol#L41", + "id": "2e819ac97dab8ee9a559c975cd452228b363b633f4622a8c32d0502767b91e40", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_from", + "source_mapping": { + "start": 9455, + "length": 13, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 266 + ], + "starting_column": 9, + "ending_column": 22 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV3", + "source_mapping": { + "start": 9427, + "length": 302, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address)._from (lib/vault-v2/src/ReaperSwapper.sol#266) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address)._from](lib/vault-v2/src/ReaperSwapper.sol#L266) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L266", + "id": "3018788d12fc4b75ffed237e40bf2d933f3f102f422ca4e6f6ec99588852c88a", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_amount", + "source_mapping": { + "start": 6336, + "length": 15, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 176 + ], + "starting_column": 9, + "ending_column": 24 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapBal", + "source_mapping": { + "start": 6266, + "length": 509, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)._amount (lib/vault-v2/src/ReaperSwapper.sol#176) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)._amount](lib/vault-v2/src/ReaperSwapper.sol#L176) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L176", + "id": "30afd9ece480d36302713f1423a92fdac5775d35d8e9084b6744f69d41cb35e5", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_nextImplementation", + "source_mapping": { + "start": 6725, + "length": 27, + "filename_relative": "src/OptionsToken.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", + "filename_short": "src/OptionsToken.sol", + "is_dependency": false, + "lines": [ + 162 + ], + "starting_column": 38, + "ending_column": 65 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "initiateUpgradeCooldown", + "source_mapping": { + "start": 6692, + "length": 185, + "filename_relative": "src/OptionsToken.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", + "filename_short": "src/OptionsToken.sol", + "is_dependency": false, + "lines": [ + 162, + 163, + 164, + 165 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OptionsToken", + "source_mapping": { + "start": 691, + "length": 7138, + "filename_relative": "src/OptionsToken.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", + "filename_short": "src/OptionsToken.sol", + "is_dependency": false, + "lines": [ + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "initiateUpgradeCooldown(address)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter OptionsToken.initiateUpgradeCooldown(address)._nextImplementation (src/OptionsToken.sol#162) is not in mixedCase\n", + "markdown": "Parameter [OptionsToken.initiateUpgradeCooldown(address)._nextImplementation](src/OptionsToken.sol#L162) is not in mixedCase\n", + "first_markdown_element": "src/OptionsToken.sol#L162", + "id": "33e53f10ff3f49b18813d9dac0930ba1348d308496c90d9c1a00c0497f5c3cee", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_path", + "source_mapping": { + "start": 3689, + "length": 22, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 97 + ], + "starting_column": 88, + "ending_column": 110 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "updateUniV2SwapPath", + "source_mapping": { + "start": 3606, + "length": 253, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 97, + 98, + 99, + 100, + 101, + 102, + 103 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "updateUniV2SwapPath(address,address,address,address[])" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.updateUniV2SwapPath(address,address,address,address[])._path (lib/vault-v2/src/ReaperSwapper.sol#97) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.updateUniV2SwapPath(address,address,address,address[])._path](lib/vault-v2/src/ReaperSwapper.sol#L97) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L97", + "id": "3421d80536152c860bba400d09dfde114340f7d38d4da09d6edfbf1adb890352", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_tokenB", + "source_mapping": { + "start": 746, + "length": 15, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 20 + ], + "starting_column": 46, + "ending_column": 61 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "uniV3SwapPaths", + "source_mapping": { + "start": 705, + "length": 214, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "UniV3Mixin", + "source_mapping": { + "start": 269, + "length": 4771, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "uniV3SwapPaths(address,address,address)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter UniV3Mixin.uniV3SwapPaths(address,address,address)._tokenB (lib/vault-v2/src/mixins/UniV3Mixin.sol#20) is not in mixedCase\n", + "markdown": "Parameter [UniV3Mixin.uniV3SwapPaths(address,address,address)._tokenB](lib/vault-v2/src/mixins/UniV3Mixin.sol#L20) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/mixins/UniV3Mixin.sol#L20", + "id": "348fbebd40a224260ed0a3f0410ab794e4cdc194d7609d7c57ecede5098d527e", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_tryCatchActive", + "source_mapping": { + "start": 8758, + "length": 20, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 248 + ], + "starting_column": 9, + "ending_column": 29 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV3", + "source_mapping": { + "start": 8558, + "length": 534, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)._tryCatchActive (lib/vault-v2/src/ReaperSwapper.sol#248) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)._tryCatchActive](lib/vault-v2/src/ReaperSwapper.sol#L248) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L248", + "id": "34c29ba73612384447f21b695bb026ad188d469ca5f98fa472e6aa3a356a605c", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_to", + "source_mapping": { + "start": 5159, + "length": 11, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 141 + ], + "starting_column": 9, + "ending_column": 20 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV2", + "source_mapping": { + "start": 5108, + "length": 515, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)._to (lib/vault-v2/src/ReaperSwapper.sol#141) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)._to](lib/vault-v2/src/ReaperSwapper.sol#L141) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L141", + "id": "3527544cbdfbf1bebedc91e97603769f33a1dc4a2222084fe3f4bd86a36f9ae4", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_to", + "source_mapping": { + "start": 9478, + "length": 11, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 267 + ], + "starting_column": 9, + "ending_column": 20 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV3", + "source_mapping": { + "start": 9427, + "length": 302, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address)._to (lib/vault-v2/src/ReaperSwapper.sol#267) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address)._to](lib/vault-v2/src/ReaperSwapper.sol#L267) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L267", + "id": "35548d0c4635a0baa765bad2062c1031d24a1447c98997ef625d4024d4d39032", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "__gap", + "source_mapping": { + "start": 1316, + "length": 25, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "is_dependency": true, + "lines": [ + 36 + ], + "starting_column": 5, + "ending_column": 30 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ContextUpgradeable", + "source_mapping": { + "start": 651, + "length": 693, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "is_dependency": true, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37 + ], + "starting_column": 1, + "ending_column": 2 + } + } + }, + "additional_fields": { + "target": "variable", + "convention": "mixedCase" + } + } + ], + "description": "Variable ContextUpgradeable.__gap (lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol#36) is not in mixedCase\n", + "markdown": "Variable [ContextUpgradeable.__gap](lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol#L36) is not in mixedCase\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol#L36", + "id": "36b0d7790b5ec0201a99f98a2f3b1afbd4248739c34889d0a9d08876f3462218", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_minAmountOutData", + "source_mapping": { + "start": 8021, + "length": 41, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 224 + ], + "starting_column": 9, + "ending_column": 50 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapVelo", + "source_mapping": { + "start": 7925, + "length": 321, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256)._minAmountOutData (lib/vault-v2/src/ReaperSwapper.sol#224) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256)._minAmountOutData](lib/vault-v2/src/ReaperSwapper.sol#L224) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L224", + "id": "3ec1f062d6f5a182e9f67dda7fd25e897ffe978e3fdbc7561351fbe383d21c95", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "__gap", + "source_mapping": { + "start": 8694, + "length": 25, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "is_dependency": true, + "lines": [ + 259 + ], + "starting_column": 5, + "ending_column": 30 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AccessControlUpgradeable", + "source_mapping": { + "start": 1893, + "length": 6829, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "is_dependency": true, + "lines": [ + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260 + ], + "starting_column": 1, + "ending_column": 2 + } + } + }, + "additional_fields": { + "target": "variable", + "convention": "mixedCase" + } + } + ], + "description": "Variable AccessControlUpgradeable.__gap (lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol#259) is not in mixedCase\n", + "markdown": "Variable [AccessControlUpgradeable.__gap](lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol#L259) is not in mixedCase\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol#L259", + "id": "408a5a92ce9ee8bac5e964324c5e93c944b47606ce29c3515b4b54a7b28f372d", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_from", + "source_mapping": { + "start": 8279, + "length": 13, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 232 + ], + "starting_column": 9, + "ending_column": 22 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapVelo", + "source_mapping": { + "start": 8252, + "length": 300, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapVelo(address,address,uint256,MinAmountOutData,address)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address)._from (lib/vault-v2/src/ReaperSwapper.sol#232) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address)._from](lib/vault-v2/src/ReaperSwapper.sol#L232) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L232", + "id": "418fec69fa0a926c5aa4783ab996662cd9d15da3993b0c11ddc008e3789bc3f4", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_path", + "source_mapping": { + "start": 4199, + "length": 32, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 113 + ], + "starting_column": 87, + "ending_column": 119 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "updateVeloSwapPath", + "source_mapping": { + "start": 4117, + "length": 261, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 113, + 114, + 115, + 116, + 117, + 118, + 119 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "updateVeloSwapPath(address,address,address,IVeloRouter.Route[])" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.updateVeloSwapPath(address,address,address,IVeloRouter.Route[])._path (lib/vault-v2/src/ReaperSwapper.sol#113) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.updateVeloSwapPath(address,address,address,IVeloRouter.Route[])._path](lib/vault-v2/src/ReaperSwapper.sol#L113) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L113", + "id": "42609e99303070d0b460b62a3ec86983b6fd5109aaf634a9026fba1cb7e77c33", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_deadline", + "source_mapping": { + "start": 9271, + "length": 17, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 260 + ], + "starting_column": 9, + "ending_column": 26 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV3", + "source_mapping": { + "start": 9098, + "length": 323, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address,uint256)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256)._deadline (lib/vault-v2/src/ReaperSwapper.sol#260) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256)._deadline](lib/vault-v2/src/ReaperSwapper.sol#L260) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L260", + "id": "48154271b8c895c6b802a31b0ae8d16001c8ba95b0c1bef15c0adb32c0f98c5f", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_amount", + "source_mapping": { + "start": 6030, + "length": 15, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 166 + ], + "starting_column": 9, + "ending_column": 24 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV2", + "source_mapping": { + "start": 5958, + "length": 302, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address)._amount (lib/vault-v2/src/ReaperSwapper.sol#166) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address)._amount](lib/vault-v2/src/ReaperSwapper.sol#L166) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L166", + "id": "489c7627531111a361ddb5b0fa876959c0b5c227264305d2efbf558425eaa0c7", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "DOMAIN_SEPARATOR", + "source_mapping": { + "start": 5327, + "length": 177, + "filename_relative": "lib/solmate/src/tokens/ERC20.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/tokens/ERC20.sol", + "filename_short": "lib/solmate/src/tokens/ERC20.sol", + "is_dependency": true, + "lines": [ + 162, + 163, + 164 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ERC20", + "source_mapping": { + "start": 474, + "length": 6337, + "filename_relative": "lib/solmate/src/tokens/ERC20.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/tokens/ERC20.sol", + "filename_short": "lib/solmate/src/tokens/ERC20.sol", + "is_dependency": true, + "lines": [ + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "DOMAIN_SEPARATOR()" + }, + "additional_fields": { + "target": "function", + "convention": "mixedCase" + } + } + ], + "description": "Function ERC20.DOMAIN_SEPARATOR() (lib/solmate/src/tokens/ERC20.sol#162-164) is not in mixedCase\n", + "markdown": "Function [ERC20.DOMAIN_SEPARATOR()](lib/solmate/src/tokens/ERC20.sol#L162-L164) is not in mixedCase\n", + "first_markdown_element": "lib/solmate/src/tokens/ERC20.sol#L162-L164", + "id": "49160d2232fd1cf66e40eea2eb550f349c00a0d29cfaf4670e104b4832e0d5b0", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_router", + "source_mapping": { + "start": 8399, + "length": 15, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 236 + ], + "starting_column": 9, + "ending_column": 24 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapVelo", + "source_mapping": { + "start": 8252, + "length": 300, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapVelo(address,address,uint256,MinAmountOutData,address)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address)._router (lib/vault-v2/src/ReaperSwapper.sol#236) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address)._router](lib/vault-v2/src/ReaperSwapper.sol#L236) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L236", + "id": "51317259fb342989bb3002f86d27d0d8d3800e8013b1105278f724a65f97b3b2", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_token", + "source_mapping": { + "start": 12613, + "length": 14, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 333 + ], + "starting_column": 44, + "ending_column": 58 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getChainlinkPriceTargetDigits", + "source_mapping": { + "start": 12574, + "length": 693, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getChainlinkPriceTargetDigits(address)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.getChainlinkPriceTargetDigits(address)._token (lib/vault-v2/src/ReaperSwapper.sol#333) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.getChainlinkPriceTargetDigits(address)._token](lib/vault-v2/src/ReaperSwapper.sol#L333) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L333", + "id": "533159ba7d61d5fe5dfd676710c1ac88cf694c7032cc9afc20ed9b723401ae4e", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_tokenIn", + "source_mapping": { + "start": 4145, + "length": 16, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 113 + ], + "starting_column": 33, + "ending_column": 49 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "updateVeloSwapPath", + "source_mapping": { + "start": 4117, + "length": 261, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 113, + 114, + 115, + 116, + 117, + 118, + 119 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "updateVeloSwapPath(address,address,address,IVeloRouter.Route[])" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.updateVeloSwapPath(address,address,address,IVeloRouter.Route[])._tokenIn (lib/vault-v2/src/ReaperSwapper.sol#113) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.updateVeloSwapPath(address,address,address,IVeloRouter.Route[])._tokenIn](lib/vault-v2/src/ReaperSwapper.sol#L113) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L113", + "id": "53551379c42ab3877e8ee97cac181c5347ef7b0683ebe22b81e5bd192559e10c", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_router", + "source_mapping": { + "start": 5777, + "length": 15, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 157 + ], + "starting_column": 9, + "ending_column": 24 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV2", + "source_mapping": { + "start": 5629, + "length": 323, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256)._router (lib/vault-v2/src/ReaperSwapper.sol#157) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256)._router](lib/vault-v2/src/ReaperSwapper.sol#L157) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L157", + "id": "5480cdf71bb4a1fc4bad960293c816fab6eae1f7b1db72dc13c46eecdff29942", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_from", + "source_mapping": { + "start": 8586, + "length": 13, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 242 + ], + "starting_column": 9, + "ending_column": 22 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV3", + "source_mapping": { + "start": 8558, + "length": 534, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)._from (lib/vault-v2/src/ReaperSwapper.sol#242) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)._from](lib/vault-v2/src/ReaperSwapper.sol#L242) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L242", + "id": "54eee96f636dcc23d413ad789f8cc37b37b3ceffbb301fcc7c20ef44f9fa8dd1", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "__Ownable_init", + "source_mapping": { + "start": 1003, + "length": 95, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "is_dependency": true, + "lines": [ + 29, + 30, + 31 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OwnableUpgradeable", + "source_mapping": { + "start": 708, + "length": 2445, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "is_dependency": true, + "lines": [ + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "__Ownable_init()" + }, + "additional_fields": { + "target": "function", + "convention": "mixedCase" + } + } + ], + "description": "Function OwnableUpgradeable.__Ownable_init() (lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol#29-31) is not in mixedCase\n", + "markdown": "Function [OwnableUpgradeable.__Ownable_init()](lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol#L29-L31) is not in mixedCase\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol#L29-L31", + "id": "564a84db84ff90549701d9e3401970ecd35bb55e38a0ae2758178a34b03f99e8", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_minAmountToTriggerSwap", + "source_mapping": { + "start": 6542, + "length": 31, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 179 + ], + "starting_column": 40, + "ending_column": 71 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setMinAmountToTriggerSwap", + "source_mapping": { + "start": 6507, + "length": 152, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 179, + 180, + 181 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "setMinAmountToTriggerSwap(uint256)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter DiscountExercise.setMinAmountToTriggerSwap(uint256)._minAmountToTriggerSwap (src/exercise/DiscountExercise.sol#179) is not in mixedCase\n", + "markdown": "Parameter [DiscountExercise.setMinAmountToTriggerSwap(uint256)._minAmountToTriggerSwap](src/exercise/DiscountExercise.sol#L179) is not in mixedCase\n", + "first_markdown_element": "src/exercise/DiscountExercise.sol#L179", + "id": "581d9756e46299b9236b584619603c7950d2a6ae937b632b19d6013c10199f9b", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "contract", + "name": "console", + "source_mapping": { + "start": 66, + "length": 66622, + "filename_relative": "lib/forge-std/src/console.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/forge-std/src/console.sol", + "filename_short": "lib/forge-std/src/console.sol", + "is_dependency": true, + "lines": [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885, + 886, + 887, + 888, + 889, + 890, + 891, + 892, + 893, + 894, + 895, + 896, + 897, + 898, + 899, + 900, + 901, + 902, + 903, + 904, + 905, + 906, + 907, + 908, + 909, + 910, + 911, + 912, + 913, + 914, + 915, + 916, + 917, + 918, + 919, + 920, + 921, + 922, + 923, + 924, + 925, + 926, + 927, + 928, + 929, + 930, + 931, + 932, + 933, + 934, + 935, + 936, + 937, + 938, + 939, + 940, + 941, + 942, + 943, + 944, + 945, + 946, + 947, + 948, + 949, + 950, + 951, + 952, + 953, + 954, + 955, + 956, + 957, + 958, + 959, + 960, + 961, + 962, + 963, + 964, + 965, + 966, + 967, + 968, + 969, + 970, + 971, + 972, + 973, + 974, + 975, + 976, + 977, + 978, + 979, + 980, + 981, + 982, + 983, + 984, + 985, + 986, + 987, + 988, + 989, + 990, + 991, + 992, + 993, + 994, + 995, + 996, + 997, + 998, + 999, + 1000, + 1001, + 1002, + 1003, + 1004, + 1005, + 1006, + 1007, + 1008, + 1009, + 1010, + 1011, + 1012, + 1013, + 1014, + 1015, + 1016, + 1017, + 1018, + 1019, + 1020, + 1021, + 1022, + 1023, + 1024, + 1025, + 1026, + 1027, + 1028, + 1029, + 1030, + 1031, + 1032, + 1033, + 1034, + 1035, + 1036, + 1037, + 1038, + 1039, + 1040, + 1041, + 1042, + 1043, + 1044, + 1045, + 1046, + 1047, + 1048, + 1049, + 1050, + 1051, + 1052, + 1053, + 1054, + 1055, + 1056, + 1057, + 1058, + 1059, + 1060, + 1061, + 1062, + 1063, + 1064, + 1065, + 1066, + 1067, + 1068, + 1069, + 1070, + 1071, + 1072, + 1073, + 1074, + 1075, + 1076, + 1077, + 1078, + 1079, + 1080, + 1081, + 1082, + 1083, + 1084, + 1085, + 1086, + 1087, + 1088, + 1089, + 1090, + 1091, + 1092, + 1093, + 1094, + 1095, + 1096, + 1097, + 1098, + 1099, + 1100, + 1101, + 1102, + 1103, + 1104, + 1105, + 1106, + 1107, + 1108, + 1109, + 1110, + 1111, + 1112, + 1113, + 1114, + 1115, + 1116, + 1117, + 1118, + 1119, + 1120, + 1121, + 1122, + 1123, + 1124, + 1125, + 1126, + 1127, + 1128, + 1129, + 1130, + 1131, + 1132, + 1133, + 1134, + 1135, + 1136, + 1137, + 1138, + 1139, + 1140, + 1141, + 1142, + 1143, + 1144, + 1145, + 1146, + 1147, + 1148, + 1149, + 1150, + 1151, + 1152, + 1153, + 1154, + 1155, + 1156, + 1157, + 1158, + 1159, + 1160, + 1161, + 1162, + 1163, + 1164, + 1165, + 1166, + 1167, + 1168, + 1169, + 1170, + 1171, + 1172, + 1173, + 1174, + 1175, + 1176, + 1177, + 1178, + 1179, + 1180, + 1181, + 1182, + 1183, + 1184, + 1185, + 1186, + 1187, + 1188, + 1189, + 1190, + 1191, + 1192, + 1193, + 1194, + 1195, + 1196, + 1197, + 1198, + 1199, + 1200, + 1201, + 1202, + 1203, + 1204, + 1205, + 1206, + 1207, + 1208, + 1209, + 1210, + 1211, + 1212, + 1213, + 1214, + 1215, + 1216, + 1217, + 1218, + 1219, + 1220, + 1221, + 1222, + 1223, + 1224, + 1225, + 1226, + 1227, + 1228, + 1229, + 1230, + 1231, + 1232, + 1233, + 1234, + 1235, + 1236, + 1237, + 1238, + 1239, + 1240, + 1241, + 1242, + 1243, + 1244, + 1245, + 1246, + 1247, + 1248, + 1249, + 1250, + 1251, + 1252, + 1253, + 1254, + 1255, + 1256, + 1257, + 1258, + 1259, + 1260, + 1261, + 1262, + 1263, + 1264, + 1265, + 1266, + 1267, + 1268, + 1269, + 1270, + 1271, + 1272, + 1273, + 1274, + 1275, + 1276, + 1277, + 1278, + 1279, + 1280, + 1281, + 1282, + 1283, + 1284, + 1285, + 1286, + 1287, + 1288, + 1289, + 1290, + 1291, + 1292, + 1293, + 1294, + 1295, + 1296, + 1297, + 1298, + 1299, + 1300, + 1301, + 1302, + 1303, + 1304, + 1305, + 1306, + 1307, + 1308, + 1309, + 1310, + 1311, + 1312, + 1313, + 1314, + 1315, + 1316, + 1317, + 1318, + 1319, + 1320, + 1321, + 1322, + 1323, + 1324, + 1325, + 1326, + 1327, + 1328, + 1329, + 1330, + 1331, + 1332, + 1333, + 1334, + 1335, + 1336, + 1337, + 1338, + 1339, + 1340, + 1341, + 1342, + 1343, + 1344, + 1345, + 1346, + 1347, + 1348, + 1349, + 1350, + 1351, + 1352, + 1353, + 1354, + 1355, + 1356, + 1357, + 1358, + 1359, + 1360, + 1361, + 1362, + 1363, + 1364, + 1365, + 1366, + 1367, + 1368, + 1369, + 1370, + 1371, + 1372, + 1373, + 1374, + 1375, + 1376, + 1377, + 1378, + 1379, + 1380, + 1381, + 1382, + 1383, + 1384, + 1385, + 1386, + 1387, + 1388, + 1389, + 1390, + 1391, + 1392, + 1393, + 1394, + 1395, + 1396, + 1397, + 1398, + 1399, + 1400, + 1401, + 1402, + 1403, + 1404, + 1405, + 1406, + 1407, + 1408, + 1409, + 1410, + 1411, + 1412, + 1413, + 1414, + 1415, + 1416, + 1417, + 1418, + 1419, + 1420, + 1421, + 1422, + 1423, + 1424, + 1425, + 1426, + 1427, + 1428, + 1429, + 1430, + 1431, + 1432, + 1433, + 1434, + 1435, + 1436, + 1437, + 1438, + 1439, + 1440, + 1441, + 1442, + 1443, + 1444, + 1445, + 1446, + 1447, + 1448, + 1449, + 1450, + 1451, + 1452, + 1453, + 1454, + 1455, + 1456, + 1457, + 1458, + 1459, + 1460, + 1461, + 1462, + 1463, + 1464, + 1465, + 1466, + 1467, + 1468, + 1469, + 1470, + 1471, + 1472, + 1473, + 1474, + 1475, + 1476, + 1477, + 1478, + 1479, + 1480, + 1481, + 1482, + 1483, + 1484, + 1485, + 1486, + 1487, + 1488, + 1489, + 1490, + 1491, + 1492, + 1493, + 1494, + 1495, + 1496, + 1497, + 1498, + 1499, + 1500, + 1501, + 1502, + 1503, + 1504, + 1505, + 1506, + 1507, + 1508, + 1509, + 1510, + 1511, + 1512, + 1513, + 1514, + 1515, + 1516, + 1517, + 1518, + 1519, + 1520, + 1521, + 1522, + 1523, + 1524, + 1525, + 1526, + 1527, + 1528, + 1529, + 1530, + 1531, + 1532, + 1533, + 1534 + ], + "starting_column": 1, + "ending_column": 0 + }, + "additional_fields": { + "target": "contract", + "convention": "CapWords" + } + } + ], + "description": "Contract console (lib/forge-std/src/console.sol#4-1534) is not in CapWords\n", + "markdown": "Contract [console](lib/forge-std/src/console.sol#L4-L1534) is not in CapWords\n", + "first_markdown_element": "lib/forge-std/src/console.sol#L4-L1534", + "id": "58c9dacc35a1219332b8b6ce561daac5384e938b9878894ede5d6cbaa444d455", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_feeRecipients", + "source_mapping": { + "start": 2183, + "length": 31, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 57 + ], + "starting_column": 22, + "ending_column": 53 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setFees", + "source_mapping": { + "start": 2166, + "length": 145, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 57, + 58, + 59 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BaseExercise", + "source_mapping": { + "start": 432, + "length": 3936, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "setFees(address[],uint256[])" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter BaseExercise.setFees(address[],uint256[])._feeRecipients (src/exercise/BaseExercise.sol#57) is not in mixedCase\n", + "markdown": "Parameter [BaseExercise.setFees(address[],uint256[])._feeRecipients](src/exercise/BaseExercise.sol#L57) is not in mixedCase\n", + "first_markdown_element": "src/exercise/BaseExercise.sol#L57", + "id": "5944f924de77c988f31b403664373f2876aff03596234cc58b4afadd8a71d5a9", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_deadline", + "source_mapping": { + "start": 5802, + "length": 17, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 158 + ], + "starting_column": 9, + "ending_column": 26 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV2", + "source_mapping": { + "start": 5629, + "length": 323, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256)._deadline (lib/vault-v2/src/ReaperSwapper.sol#158) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256)._deadline](lib/vault-v2/src/ReaperSwapper.sol#L158) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L158", + "id": "6071c207bea25fb7f9bb412b5de02629482e66a2117c5fa91626351e29e9b02e", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_from", + "source_mapping": { + "start": 7952, + "length": 13, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 221 + ], + "starting_column": 9, + "ending_column": 22 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapVelo", + "source_mapping": { + "start": 7925, + "length": 321, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256)._from (lib/vault-v2/src/ReaperSwapper.sol#221) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256)._from](lib/vault-v2/src/ReaperSwapper.sol#L221) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L221", + "id": "623f5d19356fa7b9bd0ab5df0402fd1e4d7c09639f95e63a0a4209cc8cc8bdfd", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "__gap", + "source_mapping": { + "start": 3125, + "length": 25, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "is_dependency": true, + "lines": [ + 94 + ], + "starting_column": 5, + "ending_column": 30 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OwnableUpgradeable", + "source_mapping": { + "start": 708, + "length": 2445, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "is_dependency": true, + "lines": [ + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95 + ], + "starting_column": 1, + "ending_column": 2 + } + } + }, + "additional_fields": { + "target": "variable", + "convention": "mixedCase" + } + } + ], + "description": "Variable OwnableUpgradeable.__gap (lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol#94) is not in mixedCase\n", + "markdown": "Variable [OwnableUpgradeable.__gap](lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol#L94) is not in mixedCase\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol#L94", + "id": "64595b3b974ce422ded6f4c3e75f4b8f263d80fe654b483274d85ea78d93515d", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "__gap", + "source_mapping": { + "start": 4729, + "length": 25, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", + "is_dependency": true, + "lines": [ + 107 + ], + "starting_column": 5, + "ending_column": 30 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "UUPSUpgradeable", + "source_mapping": { + "start": 928, + "length": 3829, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", + "is_dependency": true, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108 + ], + "starting_column": 1, + "ending_column": 2 + } + } + }, + "additional_fields": { + "target": "variable", + "convention": "mixedCase" + } + } + ], + "description": "Variable UUPSUpgradeable.__gap (lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol#107) is not in mixedCase\n", + "markdown": "Variable [UUPSUpgradeable.__gap](lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol#L107) is not in mixedCase\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol#L107", + "id": "66e89635b3f1a39420c14852bce53cece9d715d261ed362fdfe323326d902681", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "struct", + "name": "Params__swapUniV3", + "source_mapping": { + "start": 925, + "length": 207, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "UniV3Mixin", + "source_mapping": { + "start": 269, + "length": 4771, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + } + }, + "additional_fields": { + "target": "structure", + "convention": "CapWords" + } + } + ], + "description": "Struct UniV3Mixin.Params__swapUniV3 (lib/vault-v2/src/mixins/UniV3Mixin.sol#28-36) is not in CapWords\n", + "markdown": "Struct [UniV3Mixin.Params__swapUniV3](lib/vault-v2/src/mixins/UniV3Mixin.sol#L28-L36) is not in CapWords\n", + "first_markdown_element": "lib/vault-v2/src/mixins/UniV3Mixin.sol#L28-L36", + "id": "686ea0a248be2f332d477f476112aafd31063649571e7caedc18a1f64cf140f3", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_router", + "source_mapping": { + "start": 4475, + "length": 15, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 124 + ], + "starting_column": 9, + "ending_column": 24 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "updateUniV3SwapPath", + "source_mapping": { + "start": 4384, + "length": 297, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "updateUniV3SwapPath(address,address,address,UniV3SwapData)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.updateUniV3SwapPath(address,address,address,UniV3SwapData)._router (lib/vault-v2/src/ReaperSwapper.sol#124) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.updateUniV3SwapPath(address,address,address,UniV3SwapData)._router](lib/vault-v2/src/ReaperSwapper.sol#L124) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L124", + "id": "6afae1f9d7e55e6076a51917ac9f65e8dead79697dd34ab763dc91b9bcb86e89", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_tokenIn", + "source_mapping": { + "start": 4422, + "length": 16, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 122 + ], + "starting_column": 9, + "ending_column": 25 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "updateUniV3SwapPath", + "source_mapping": { + "start": 4384, + "length": 297, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "updateUniV3SwapPath(address,address,address,UniV3SwapData)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.updateUniV3SwapPath(address,address,address,UniV3SwapData)._tokenIn (lib/vault-v2/src/ReaperSwapper.sol#122) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.updateUniV3SwapPath(address,address,address,UniV3SwapData)._tokenIn](lib/vault-v2/src/ReaperSwapper.sol#L122) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L122", + "id": "72977cf6ba4408d54c36fec2d76a45624faa51193a45d346cfd1f506c3276687", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "__ERC20_init_unchained", + "source_mapping": { + "start": 2267, + "length": 159, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", + "is_dependency": true, + "lines": [ + 59, + 60, + 61, + 62 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ERC20Upgradeable", + "source_mapping": { + "start": 1480, + "length": 12159, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", + "is_dependency": true, + "lines": [ + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "__ERC20_init_unchained(string,string)" + }, + "additional_fields": { + "target": "function", + "convention": "mixedCase" + } + } + ], + "description": "Function ERC20Upgradeable.__ERC20_init_unchained(string,string) (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#59-62) is not in mixedCase\n", + "markdown": "Function [ERC20Upgradeable.__ERC20_init_unchained(string,string)](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#L59-L62) is not in mixedCase\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#L59-L62", + "id": "74c629176a16cccc0c00bada69b465bc625751ea0b6a6c34a6948576e5a63d53", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_minAmountOutData", + "source_mapping": { + "start": 6876, + "length": 41, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 190 + ], + "starting_column": 9, + "ending_column": 50 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapBal", + "source_mapping": { + "start": 6781, + "length": 317, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapBal(address,address,uint256,MinAmountOutData,address,uint256)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256)._minAmountOutData (lib/vault-v2/src/ReaperSwapper.sol#190) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256)._minAmountOutData](lib/vault-v2/src/ReaperSwapper.sol#L190) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L190", + "id": "7966fe16a7fae3142addfdb2c5631dc7af108f9a0556e7e6e462bc93b4b0fd6a", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "__gap", + "source_mapping": { + "start": 7500, + "length": 25, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "is_dependency": true, + "lines": [ + 197 + ], + "starting_column": 5, + "ending_column": 30 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ERC1967UpgradeUpgradeable", + "source_mapping": { + "start": 661, + "length": 6867, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "is_dependency": true, + "lines": [ + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198 + ], + "starting_column": 1, + "ending_column": 2 + } + } + }, + "additional_fields": { + "target": "variable", + "convention": "mixedCase" + } + } + ], + "description": "Variable ERC1967UpgradeUpgradeable.__gap (lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#197) is not in mixedCase\n", + "markdown": "Variable [ERC1967UpgradeUpgradeable.__gap](lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#L197) is not in mixedCase\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#L197", + "id": "7a925ee243c35fcbf7d26a13c9439f5f52653d41557544bf25a6dea8e1255a36", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_to", + "source_mapping": { + "start": 5680, + "length": 11, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 154 + ], + "starting_column": 9, + "ending_column": 20 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV2", + "source_mapping": { + "start": 5629, + "length": 323, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256)._to (lib/vault-v2/src/ReaperSwapper.sol#154) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256)._to](lib/vault-v2/src/ReaperSwapper.sol#L154) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L154", + "id": "7dd841bf64cae734263aa2ece5e257856fff5689200d9da336af8f149bc065d5", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_router", + "source_mapping": { + "start": 763, + "length": 15, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 20 + ], + "starting_column": 63, + "ending_column": 78 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "uniV3SwapPaths", + "source_mapping": { + "start": 705, + "length": 214, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "UniV3Mixin", + "source_mapping": { + "start": 269, + "length": 4771, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "uniV3SwapPaths(address,address,address)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter UniV3Mixin.uniV3SwapPaths(address,address,address)._router (lib/vault-v2/src/mixins/UniV3Mixin.sol#20) is not in mixedCase\n", + "markdown": "Parameter [UniV3Mixin.uniV3SwapPaths(address,address,address)._router](lib/vault-v2/src/mixins/UniV3Mixin.sol#L20) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/mixins/UniV3Mixin.sol#L20", + "id": "81b3767aefa146b755f320923f96e311ac717b193aade9ea9209fda84ec19507", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "__ERC20_init", + "source_mapping": { + "start": 2114, + "length": 147, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", + "is_dependency": true, + "lines": [ + 55, + 56, + 57 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ERC20Upgradeable", + "source_mapping": { + "start": 1480, + "length": 12159, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", + "is_dependency": true, + "lines": [ + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "__ERC20_init(string,string)" + }, + "additional_fields": { + "target": "function", + "convention": "mixedCase" + } + } + ], + "description": "Function ERC20Upgradeable.__ERC20_init(string,string) (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#55-57) is not in mixedCase\n", + "markdown": "Function [ERC20Upgradeable.__ERC20_init(string,string)](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#L55-L57) is not in mixedCase\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#L55-L57", + "id": "8238dcf62f913fda66edd22ee2b08e732cfae65517418f334b31b357d5fb02c5", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_amount", + "source_mapping": { + "start": 7996, + "length": 15, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 223 + ], + "starting_column": 9, + "ending_column": 24 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapVelo", + "source_mapping": { + "start": 7925, + "length": 321, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256)._amount (lib/vault-v2/src/ReaperSwapper.sol#223) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256)._amount](lib/vault-v2/src/ReaperSwapper.sol#L223) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L223", + "id": "831ee570df860b35fb7432639868412b8f3a89a1e163b5e0301268d3d015656e", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_aggregator", + "source_mapping": { + "start": 4734, + "length": 19, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 131 + ], + "starting_column": 52, + "ending_column": 71 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "updateTokenAggregator", + "source_mapping": { + "start": 4687, + "length": 415, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 131, + 132, + 133, + 134, + 135, + 136, + 137 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "updateTokenAggregator(address,address,uint256)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.updateTokenAggregator(address,address,uint256)._aggregator (lib/vault-v2/src/ReaperSwapper.sol#131) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.updateTokenAggregator(address,address,uint256)._aggregator](lib/vault-v2/src/ReaperSwapper.sol#L131) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L131", + "id": "840fd0afa4bae92ba91f2c94e5ff241d7edf4411fba4ca97efa57208909748a1", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "__ERC165_init_unchained", + "source_mapping": { + "start": 926, + "length": 68, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "is_dependency": true, + "lines": [ + 27, + 28 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ERC165Upgradeable", + "source_mapping": { + "start": 783, + "length": 736, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "is_dependency": true, + "lines": [ + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "__ERC165_init_unchained()" + }, + "additional_fields": { + "target": "function", + "convention": "mixedCase" + } + } + ], + "description": "Function ERC165Upgradeable.__ERC165_init_unchained() (lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol#27-28) is not in mixedCase\n", + "markdown": "Function [ERC165Upgradeable.__ERC165_init_unchained()](lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol#L27-L28) is not in mixedCase\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol#L27-L28", + "id": "85d4e6d503145e70d4f27b51c03c2aecc7efa120329a4cf27b34d33cd9a2c942", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "__Context_init_unchained", + "source_mapping": { + "start": 776, + "length": 69, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "is_dependency": true, + "lines": [ + 21, + 22 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ContextUpgradeable", + "source_mapping": { + "start": 651, + "length": 693, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "is_dependency": true, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "__Context_init_unchained()" + }, + "additional_fields": { + "target": "function", + "convention": "mixedCase" + } + } + ], + "description": "Function ContextUpgradeable.__Context_init_unchained() (lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol#21-22) is not in mixedCase\n", + "markdown": "Function [ContextUpgradeable.__Context_init_unchained()](lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol#L21-L22) is not in mixedCase\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol#L21-L22", + "id": "8629c89abc9e568d22212182eb038287fc4f676ff34add41294173d644b25bcb", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_deadline", + "source_mapping": { + "start": 5281, + "length": 17, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 145 + ], + "starting_column": 9, + "ending_column": 26 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV2", + "source_mapping": { + "start": 5108, + "length": 515, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)._deadline (lib/vault-v2/src/ReaperSwapper.sol#145) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)._deadline](lib/vault-v2/src/ReaperSwapper.sol#L145) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L145", + "id": "878d7b0eca406e6625010c6a919e75fb6d1f56a2908909128dca18ae1aaecf5c", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_swapProps", + "source_mapping": { + "start": 1131, + "length": 27, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 43 + ], + "starting_column": 30, + "ending_column": 57 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "configSwapProps", + "source_mapping": { + "start": 1106, + "length": 116, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 43, + 44, + 45 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "SwapHelper", + "source_mapping": { + "start": 514, + "length": 3269, + "filename_relative": "src/helpers/SwapHelper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", + "filename_short": "src/helpers/SwapHelper.sol", + "is_dependency": false, + "lines": [ + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "configSwapProps(SwapProps)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter SwapHelper.configSwapProps(SwapProps)._swapProps (src/helpers/SwapHelper.sol#43) is not in mixedCase\n", + "markdown": "Parameter [SwapHelper.configSwapProps(SwapProps)._swapProps](src/helpers/SwapHelper.sol#L43) is not in mixedCase\n", + "first_markdown_element": "src/helpers/SwapHelper.sol#L43", + "id": "898750aa30b4631541b715c67809ca54c02372e4e0ccd20753b470f5b41b4782", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_poolID", + "source_mapping": { + "start": 3947, + "length": 15, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 105 + ], + "starting_column": 87, + "ending_column": 102 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "updateBalSwapPoolID", + "source_mapping": { + "start": 3865, + "length": 246, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "updateBalSwapPoolID(address,address,address,bytes32)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.updateBalSwapPoolID(address,address,address,bytes32)._poolID (lib/vault-v2/src/ReaperSwapper.sol#105) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.updateBalSwapPoolID(address,address,address,bytes32)._poolID](lib/vault-v2/src/ReaperSwapper.sol#L105) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L105", + "id": "89a0bb2c6892a624dc788cb6e8e64769ea25541c09632a7ea8008ed5bdc9a7ae", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_from", + "source_mapping": { + "start": 5136, + "length": 13, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 140 + ], + "starting_column": 9, + "ending_column": 22 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV2", + "source_mapping": { + "start": 5108, + "length": 515, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)._from (lib/vault-v2/src/ReaperSwapper.sol#140) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)._from](lib/vault-v2/src/ReaperSwapper.sol#L140) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L140", + "id": "8b2e8470f4f721b3150a1c59a12f20d495a62229f08f57ad6a1241fb1e3e63bc", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_vault", + "source_mapping": { + "start": 3931, + "length": 14, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 105 + ], + "starting_column": 71, + "ending_column": 85 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "updateBalSwapPoolID", + "source_mapping": { + "start": 3865, + "length": 246, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "updateBalSwapPoolID(address,address,address,bytes32)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.updateBalSwapPoolID(address,address,address,bytes32)._vault (lib/vault-v2/src/ReaperSwapper.sol#105) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.updateBalSwapPoolID(address,address,address,bytes32)._vault](lib/vault-v2/src/ReaperSwapper.sol#L105) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L105", + "id": "8f302417a05d05dface61ffead3912df0c2e77cae9168156e4852a782f626cc8", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "__UUPSUpgradeable_init_unchained", + "source_mapping": { + "start": 1115, + "length": 77, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", + "is_dependency": true, + "lines": [ + 26, + 27 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "UUPSUpgradeable", + "source_mapping": { + "start": 928, + "length": 3829, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", + "is_dependency": true, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "__UUPSUpgradeable_init_unchained()" + }, + "additional_fields": { + "target": "function", + "convention": "mixedCase" + } + } + ], + "description": "Function UUPSUpgradeable.__UUPSUpgradeable_init_unchained() (lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol#26-27) is not in mixedCase\n", + "markdown": "Function [UUPSUpgradeable.__UUPSUpgradeable_init_unchained()](lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol#L26-L27) is not in mixedCase\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol#L26-L27", + "id": "8ff7b5e08e6880768da974c4a296eba4ffa484881ed81786ba37c7da4749321d", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "__gap", + "source_mapping": { + "start": 13611, + "length": 25, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", + "is_dependency": true, + "lines": [ + 400 + ], + "starting_column": 5, + "ending_column": 30 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ERC20Upgradeable", + "source_mapping": { + "start": 1480, + "length": 12159, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", + "is_dependency": true, + "lines": [ + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401 + ], + "starting_column": 1, + "ending_column": 2 + } + } + }, + "additional_fields": { + "target": "variable", + "convention": "mixedCase" + } + } + ], + "description": "Variable ERC20Upgradeable.__gap (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#400) is not in mixedCase\n", + "markdown": "Variable [ERC20Upgradeable.__gap](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#L400) is not in mixedCase\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#L400", + "id": "95b4f7519d8168eaf429605544f5939d63826ecdfb9fab9329b6802cbd21db77", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_from", + "source_mapping": { + "start": 5986, + "length": 13, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 164 + ], + "starting_column": 9, + "ending_column": 22 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV2", + "source_mapping": { + "start": 5958, + "length": 302, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address)._from (lib/vault-v2/src/ReaperSwapper.sol#164) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address)._from](lib/vault-v2/src/ReaperSwapper.sol#L164) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L164", + "id": "965c50bc3502579539b688717ecbda0b6b92a00dcefa592b05ba22d7d6f5dc7a", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_amount", + "source_mapping": { + "start": 7174, + "length": 15, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 200 + ], + "starting_column": 9, + "ending_column": 24 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapBal", + "source_mapping": { + "start": 7104, + "length": 296, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapBal(address,address,uint256,MinAmountOutData,address)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address)._amount (lib/vault-v2/src/ReaperSwapper.sol#200) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address)._amount](lib/vault-v2/src/ReaperSwapper.sol#L200) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L200", + "id": "96acd18fdb2f87cce682dd1aeb785807b87ade0805721541764b40e73f657d86", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_router", + "source_mapping": { + "start": 9575, + "length": 15, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 270 + ], + "starting_column": 9, + "ending_column": 24 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV3", + "source_mapping": { + "start": 9427, + "length": 302, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address)._router (lib/vault-v2/src/ReaperSwapper.sol#270) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address)._router](lib/vault-v2/src/ReaperSwapper.sol#L270) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L270", + "id": "97ed856a66a6a89065949ce6d4ad5806ed079684926be9350c3dba02a3a1e5ff", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "DOMAIN_SEPARATOR", + "source_mapping": { + "start": 2189, + "length": 60, + "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", + "is_dependency": true, + "lines": [ + 59 + ], + "starting_column": 5, + "ending_column": 65 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "IERC20Permit", + "source_mapping": { + "start": 620, + "length": 1631, + "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", + "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", + "is_dependency": true, + "lines": [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "DOMAIN_SEPARATOR()" + }, + "additional_fields": { + "target": "function", + "convention": "mixedCase" + } + } + ], + "description": "Function IERC20Permit.DOMAIN_SEPARATOR() (lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol#59) is not in mixedCase\n", + "markdown": "Function [IERC20Permit.DOMAIN_SEPARATOR()](lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol#L59) is not in mixedCase\n", + "first_markdown_element": "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol#L59", + "id": "9a77c79a6cf40e2f151723e49ba63d30100a56d0f72688e58cdf4a550a6ff843", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_guardian", + "source_mapping": { + "start": 3089, + "length": 17, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 82 + ], + "starting_column": 56, + "ending_column": 73 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "initialize", + "source_mapping": { + "start": 3038, + "length": 562, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "initialize(address[],address,address)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.initialize(address[],address,address)._guardian (lib/vault-v2/src/ReaperSwapper.sol#82) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.initialize(address[],address,address)._guardian](lib/vault-v2/src/ReaperSwapper.sol#L82) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L82", + "id": "9efc132e350756a6688fb06dfbdfdae938d3f187fef09bcfb67ada2c12c55401", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_router", + "source_mapping": { + "start": 4182, + "length": 15, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 113 + ], + "starting_column": 70, + "ending_column": 85 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "updateVeloSwapPath", + "source_mapping": { + "start": 4117, + "length": 261, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 113, + 114, + 115, + 116, + 117, + 118, + 119 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "updateVeloSwapPath(address,address,address,IVeloRouter.Route[])" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.updateVeloSwapPath(address,address,address,IVeloRouter.Route[])._router (lib/vault-v2/src/ReaperSwapper.sol#113) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.updateVeloSwapPath(address,address,address,IVeloRouter.Route[])._router](lib/vault-v2/src/ReaperSwapper.sol#L113) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L113", + "id": "a06f43ce8e70ce834616ed15245c980a2b8ec50e858262bb670d47c66306e2ea", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "__AccessControl_init", + "source_mapping": { + "start": 2025, + "length": 65, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "is_dependency": true, + "lines": [ + 51, + 52 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AccessControlUpgradeable", + "source_mapping": { + "start": 1893, + "length": 6829, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "is_dependency": true, + "lines": [ + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "__AccessControl_init()" + }, + "additional_fields": { + "target": "function", + "convention": "mixedCase" + } + } + ], + "description": "Function AccessControlUpgradeable.__AccessControl_init() (lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol#51-52) is not in mixedCase\n", + "markdown": "Function [AccessControlUpgradeable.__AccessControl_init()](lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol#L51-L52) is not in mixedCase\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol#L51-L52", + "id": "a333fa38b5f96027543bfa2131aac6765059644ab6c7dae2f8d357b5fbaa2f2b", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_from", + "source_mapping": { + "start": 6807, + "length": 13, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 187 + ], + "starting_column": 9, + "ending_column": 22 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapBal", + "source_mapping": { + "start": 6781, + "length": 317, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapBal(address,address,uint256,MinAmountOutData,address,uint256)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256)._from (lib/vault-v2/src/ReaperSwapper.sol#187) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256)._from](lib/vault-v2/src/ReaperSwapper.sol#L187) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L187", + "id": "a7cafc58416d57ab9a4fcb99a3a7f30607a640b40bcf1d16a52915f7849094bc", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_to", + "source_mapping": { + "start": 6315, + "length": 11, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 175 + ], + "starting_column": 9, + "ending_column": 20 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapBal", + "source_mapping": { + "start": 6266, + "length": 509, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)._to (lib/vault-v2/src/ReaperSwapper.sol#175) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)._to](lib/vault-v2/src/ReaperSwapper.sol#L175) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L175", + "id": "ab2600b9834d875833f35b5332d32ef81c0bb2ac24c935e3830ff416c17fb322", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_isExercise", + "source_mapping": { + "start": 5123, + "length": 16, + "filename_relative": "src/OptionsToken.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", + "filename_short": "src/OptionsToken.sol", + "is_dependency": false, + "lines": [ + 119 + ], + "starting_column": 52, + "ending_column": 68 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setExerciseContract", + "source_mapping": { + "start": 5076, + "length": 200, + "filename_relative": "src/OptionsToken.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", + "filename_short": "src/OptionsToken.sol", + "is_dependency": false, + "lines": [ + 119, + 120, + 121, + 122 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OptionsToken", + "source_mapping": { + "start": 691, + "length": 7138, + "filename_relative": "src/OptionsToken.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", + "filename_short": "src/OptionsToken.sol", + "is_dependency": false, + "lines": [ + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "setExerciseContract(address,bool)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter OptionsToken.setExerciseContract(address,bool)._isExercise (src/OptionsToken.sol#119) is not in mixedCase\n", + "markdown": "Parameter [OptionsToken.setExerciseContract(address,bool)._isExercise](src/OptionsToken.sol#L119) is not in mixedCase\n", + "first_markdown_element": "src/OptionsToken.sol#L119", + "id": "abd2279ff0a0f0ddae64db4fff77259f7bae0530f6d0414a9c41d6ac351ae4c7", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_timeout", + "source_mapping": { + "start": 4755, + "length": 16, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 131 + ], + "starting_column": 73, + "ending_column": 89 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "updateTokenAggregator", + "source_mapping": { + "start": 4687, + "length": 415, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 131, + 132, + 133, + 134, + 135, + 136, + 137 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "updateTokenAggregator(address,address,uint256)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.updateTokenAggregator(address,address,uint256)._timeout (lib/vault-v2/src/ReaperSwapper.sol#131) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.updateTokenAggregator(address,address,uint256)._timeout](lib/vault-v2/src/ReaperSwapper.sol#L131) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L131", + "id": "adab57ba054783590c54847af448ea7811b9803f2da1801c367d97d4deb0bc85", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "INITIAL_DOMAIN_SEPARATOR", + "source_mapping": { + "start": 1693, + "length": 51, + "filename_relative": "lib/solmate/src/tokens/ERC20.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/tokens/ERC20.sol", + "filename_short": "lib/solmate/src/tokens/ERC20.sol", + "is_dependency": true, + "lines": [ + 43 + ], + "starting_column": 5, + "ending_column": 56 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ERC20", + "source_mapping": { + "start": 474, + "length": 6337, + "filename_relative": "lib/solmate/src/tokens/ERC20.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/tokens/ERC20.sol", + "filename_short": "lib/solmate/src/tokens/ERC20.sol", + "is_dependency": true, + "lines": [ + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206 + ], + "starting_column": 1, + "ending_column": 2 + } + } + }, + "additional_fields": { + "target": "variable", + "convention": "mixedCase" + } + } + ], + "description": "Variable ERC20.INITIAL_DOMAIN_SEPARATOR (lib/solmate/src/tokens/ERC20.sol#43) is not in mixedCase\n", + "markdown": "Variable [ERC20.INITIAL_DOMAIN_SEPARATOR](lib/solmate/src/tokens/ERC20.sol#L43) is not in mixedCase\n", + "first_markdown_element": "lib/solmate/src/tokens/ERC20.sol#L43", + "id": "ae4180282f395232843a4e6b84163b4ee953cbbcb818ea7075ed05f2dcf646c6", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_amount", + "source_mapping": { + "start": 5701, + "length": 15, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 155 + ], + "starting_column": 9, + "ending_column": 24 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV2", + "source_mapping": { + "start": 5629, + "length": 323, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256)._amount (lib/vault-v2/src/ReaperSwapper.sol#155) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256)._amount](lib/vault-v2/src/ReaperSwapper.sol#L155) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L155", + "id": "af59693c738df45d04682c8e690c3cb70b1f7ae4cd02b04ef88723c8512974ff", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_minAmountOutData", + "source_mapping": { + "start": 7502, + "length": 41, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 211 + ], + "starting_column": 9, + "ending_column": 50 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapVelo", + "source_mapping": { + "start": 7406, + "length": 513, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)._minAmountOutData (lib/vault-v2/src/ReaperSwapper.sol#211) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)._minAmountOutData](lib/vault-v2/src/ReaperSwapper.sol#L211) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L211", + "id": "b0d802f1835a6a50141a3c3cad24ceedce32ed7aafecd16fb3799ad01e781111", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_from", + "source_mapping": { + "start": 9126, + "length": 13, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 255 + ], + "starting_column": 9, + "ending_column": 22 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV3", + "source_mapping": { + "start": 9098, + "length": 323, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address,uint256)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256)._from (lib/vault-v2/src/ReaperSwapper.sol#255) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256)._from](lib/vault-v2/src/ReaperSwapper.sol#L255) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L255", + "id": "b466af7b150b5c595dbea4172eb5b58058eac1319629786026c6c34991a529b8", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_tokenA", + "source_mapping": { + "start": 729, + "length": 15, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 20 + ], + "starting_column": 29, + "ending_column": 44 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "uniV3SwapPaths", + "source_mapping": { + "start": 705, + "length": 214, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "UniV3Mixin", + "source_mapping": { + "start": 269, + "length": 4771, + "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", + "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", + "is_dependency": true, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "uniV3SwapPaths(address,address,address)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter UniV3Mixin.uniV3SwapPaths(address,address,address)._tokenA (lib/vault-v2/src/mixins/UniV3Mixin.sol#20) is not in mixedCase\n", + "markdown": "Parameter [UniV3Mixin.uniV3SwapPaths(address,address,address)._tokenA](lib/vault-v2/src/mixins/UniV3Mixin.sol#L20) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/mixins/UniV3Mixin.sol#L20", + "id": "b516ba65e9d50df8c481a3d485f057d04276e12596a303c1c3b03bcedea2fa4a", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_to", + "source_mapping": { + "start": 7153, + "length": 11, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 199 + ], + "starting_column": 9, + "ending_column": 20 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapBal", + "source_mapping": { + "start": 7104, + "length": 296, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapBal(address,address,uint256,MinAmountOutData,address)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address)._to (lib/vault-v2/src/ReaperSwapper.sol#199) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address)._to](lib/vault-v2/src/ReaperSwapper.sol#L199) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L199", + "id": "b6c8ae681b26b155c022f33fbf1b061e5f28765aae067bd89844326397fc87a2", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "__gap", + "source_mapping": { + "start": 3008, + "length": 25, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "is_dependency": true, + "lines": [ + 76 + ], + "starting_column": 5, + "ending_column": 30 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AccessControlEnumerableUpgradeable", + "source_mapping": { + "start": 431, + "length": 2605, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "is_dependency": true, + "lines": [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77 + ], + "starting_column": 1, + "ending_column": 2 + } + } + }, + "additional_fields": { + "target": "variable", + "convention": "mixedCase" + } + } + ], + "description": "Variable AccessControlEnumerableUpgradeable.__gap (lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#76) is not in mixedCase\n", + "markdown": "Variable [AccessControlEnumerableUpgradeable.__gap](lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#L76) is not in mixedCase\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#L76", + "id": "bbb16c0dd495dfcbe2efc75d79bdea18fad2424d763b5456917a4f9ba68e140c", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "__gap", + "source_mapping": { + "start": 1491, + "length": 25, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "is_dependency": true, + "lines": [ + 41 + ], + "starting_column": 5, + "ending_column": 30 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ERC165Upgradeable", + "source_mapping": { + "start": 783, + "length": 736, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "is_dependency": true, + "lines": [ + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42 + ], + "starting_column": 1, + "ending_column": 2 + } + } + }, + "additional_fields": { + "target": "variable", + "convention": "mixedCase" + } + } + ], + "description": "Variable ERC165Upgradeable.__gap (lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol#41) is not in mixedCase\n", + "markdown": "Variable [ERC165Upgradeable.__gap](lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol#L41) is not in mixedCase\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol#L41", + "id": "bdc2d8e808ddb749222cd3ed859af1782e2e982c72c8164d541233f50dec05af", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "__Ownable_init_unchained", + "source_mapping": { + "start": 1104, + "length": 111, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "is_dependency": true, + "lines": [ + 33, + 34, + 35 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OwnableUpgradeable", + "source_mapping": { + "start": 708, + "length": 2445, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "is_dependency": true, + "lines": [ + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "__Ownable_init_unchained()" + }, + "additional_fields": { + "target": "function", + "convention": "mixedCase" + } + } + ], + "description": "Function OwnableUpgradeable.__Ownable_init_unchained() (lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol#33-35) is not in mixedCase\n", + "markdown": "Function [OwnableUpgradeable.__Ownable_init_unchained()](lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol#L33-L35) is not in mixedCase\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol#L33-L35", + "id": "be1436ad6e7661ea17048b9b8432553bbd982a53256f0d44f0dddb582fee6a05", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_deadline", + "source_mapping": { + "start": 6436, + "length": 17, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 179 + ], + "starting_column": 9, + "ending_column": 26 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapBal", + "source_mapping": { + "start": 6266, + "length": 509, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)._deadline (lib/vault-v2/src/ReaperSwapper.sol#179) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)._deadline](lib/vault-v2/src/ReaperSwapper.sol#L179) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L179", + "id": "be279e16a979449d615e01c5f1b9240a112c2c4181f5d3ab033a2b58fa8bb14f", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_to", + "source_mapping": { + "start": 7456, + "length": 11, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 209 + ], + "starting_column": 9, + "ending_column": 20 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapVelo", + "source_mapping": { + "start": 7406, + "length": 513, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)._to (lib/vault-v2/src/ReaperSwapper.sol#209) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)._to](lib/vault-v2/src/ReaperSwapper.sol#L209) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L209", + "id": "bfd676c8349dabb5b01a6c154d45b647f52d93cc00f979b6c8878784a7b7eb77", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "__self", + "source_mapping": { + "start": 1289, + "length": 48, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", + "is_dependency": true, + "lines": [ + 29 + ], + "starting_column": 5, + "ending_column": 53 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "UUPSUpgradeable", + "source_mapping": { + "start": 928, + "length": 3829, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", + "is_dependency": true, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108 + ], + "starting_column": 1, + "ending_column": 2 + } + } + }, + "additional_fields": { + "target": "variable", + "convention": "mixedCase" + } + } + ], + "description": "Variable UUPSUpgradeable.__self (lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol#29) is not in mixedCase\n", + "markdown": "Variable [UUPSUpgradeable.__self](lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol#L29) is not in mixedCase\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol#L29", + "id": "bfe49cc9b28397f73932ef963ff532a1f0ce51ddd0b26dae025d661602049864", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_amount", + "source_mapping": { + "start": 9499, + "length": 15, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 268 + ], + "starting_column": 9, + "ending_column": 24 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV3", + "source_mapping": { + "start": 9427, + "length": 302, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address)._amount (lib/vault-v2/src/ReaperSwapper.sol#268) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address)._amount](lib/vault-v2/src/ReaperSwapper.sol#L268) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L268", + "id": "c189e395c786c3b0719350511e8880bfffe15db6eea553df77bff74bf366946e", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "__ERC1967Upgrade_init", + "source_mapping": { + "start": 749, + "length": 66, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "is_dependency": true, + "lines": [ + 22, + 23 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ERC1967UpgradeUpgradeable", + "source_mapping": { + "start": 661, + "length": 6867, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "is_dependency": true, + "lines": [ + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "__ERC1967Upgrade_init()" + }, + "additional_fields": { + "target": "function", + "convention": "mixedCase" + } + } + ], + "description": "Function ERC1967UpgradeUpgradeable.__ERC1967Upgrade_init() (lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#22-23) is not in mixedCase\n", + "markdown": "Function [ERC1967UpgradeUpgradeable.__ERC1967Upgrade_init()](lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#L22-L23) is not in mixedCase\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#L22-L23", + "id": "c342a80969d569f908a2cc5e14462dacdf5979e90597c95494a7518ab22ac361", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_amount", + "source_mapping": { + "start": 7477, + "length": 15, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 210 + ], + "starting_column": 9, + "ending_column": 24 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapVelo", + "source_mapping": { + "start": 7406, + "length": 513, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)._amount (lib/vault-v2/src/ReaperSwapper.sol#210) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)._amount](lib/vault-v2/src/ReaperSwapper.sol#L210) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L210", + "id": "c36595904f67f151274482257e034c6d4e99f7a12addf42daff19757016f42ae", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "__AccessControlEnumerable_init_unchained", + "source_mapping": { + "start": 651, + "length": 85, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "is_dependency": true, + "lines": [ + 18, + 19 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AccessControlEnumerableUpgradeable", + "source_mapping": { + "start": 431, + "length": 2605, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "is_dependency": true, + "lines": [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "__AccessControlEnumerable_init_unchained()" + }, + "additional_fields": { + "target": "function", + "convention": "mixedCase" + } + } + ], + "description": "Function AccessControlEnumerableUpgradeable.__AccessControlEnumerable_init_unchained() (lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#18-19) is not in mixedCase\n", + "markdown": "Function [AccessControlEnumerableUpgradeable.__AccessControlEnumerable_init_unchained()](lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#L18-L19) is not in mixedCase\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#L18-L19", + "id": "c5433a1d1949676dc711bcf3160f2439533f345ad44396e69fa216e8565cad1e", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_feeBPS", + "source_mapping": { + "start": 2216, + "length": 24, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 57 + ], + "starting_column": 55, + "ending_column": 79 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setFees", + "source_mapping": { + "start": 2166, + "length": 145, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 57, + 58, + 59 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BaseExercise", + "source_mapping": { + "start": 432, + "length": 3936, + "filename_relative": "src/exercise/BaseExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", + "filename_short": "src/exercise/BaseExercise.sol", + "is_dependency": false, + "lines": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "setFees(address[],uint256[])" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter BaseExercise.setFees(address[],uint256[])._feeBPS (src/exercise/BaseExercise.sol#57) is not in mixedCase\n", + "markdown": "Parameter [BaseExercise.setFees(address[],uint256[])._feeBPS](src/exercise/BaseExercise.sol#L57) is not in mixedCase\n", + "first_markdown_element": "src/exercise/BaseExercise.sol#L57", + "id": "c5acfac490821733b96f3b7cb66bd64210e4d6f82651bab766aab5209e8c5324", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "UNSAFE_swapExactTokensForTokens", + "source_mapping": { + "start": 12674, + "length": 196, + "filename_relative": "lib/vault-v2/src/interfaces/IVeloRouter.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IVeloRouter.sol", + "filename_short": "lib/vault-v2/src/interfaces/IVeloRouter.sol", + "is_dependency": true, + "lines": [ + 294, + 295, + 296, + 297, + 298, + 299 + ], + "starting_column": 5, + "ending_column": 43 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "IVeloRouter", + "source_mapping": { + "start": 227, + "length": 20282, + "filename_relative": "lib/vault-v2/src/interfaces/IVeloRouter.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IVeloRouter.sol", + "filename_short": "lib/vault-v2/src/interfaces/IVeloRouter.sol", + "is_dependency": true, + "lines": [ + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "UNSAFE_swapExactTokensForTokens(uint256[],IVeloRouter.Route[],address,uint256)" + }, + "additional_fields": { + "target": "function", + "convention": "mixedCase" + } + } + ], + "description": "Function IVeloRouter.UNSAFE_swapExactTokensForTokens(uint256[],IVeloRouter.Route[],address,uint256) (lib/vault-v2/src/interfaces/IVeloRouter.sol#294-299) is not in mixedCase\n", + "markdown": "Function [IVeloRouter.UNSAFE_swapExactTokensForTokens(uint256[],IVeloRouter.Route[],address,uint256)](lib/vault-v2/src/interfaces/IVeloRouter.sol#L294-L299) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/interfaces/IVeloRouter.sol#L294-L299", + "id": "c84ed24d6caec5fb3fc2d28fc3e2c44242050d098a6626fd7b69c847d5d534a6", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_from", + "source_mapping": { + "start": 7433, + "length": 13, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 208 + ], + "starting_column": 9, + "ending_column": 22 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapVelo", + "source_mapping": { + "start": 7406, + "length": 513, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)._from (lib/vault-v2/src/ReaperSwapper.sol#208) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)._from](lib/vault-v2/src/ReaperSwapper.sol#L208) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L208", + "id": "ca06b4f3961de5f5ca9c9c964e4b25c5f6fb7d6cf7cc27fe3001bbb89c74675f", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "__UUPSUpgradeable_init", + "source_mapping": { + "start": 1042, + "length": 67, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", + "is_dependency": true, + "lines": [ + 23, + 24 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "UUPSUpgradeable", + "source_mapping": { + "start": 928, + "length": 3829, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", + "is_dependency": true, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "__UUPSUpgradeable_init()" + }, + "additional_fields": { + "target": "function", + "convention": "mixedCase" + } + } + ], + "description": "Function UUPSUpgradeable.__UUPSUpgradeable_init() (lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol#23-24) is not in mixedCase\n", + "markdown": "Function [UUPSUpgradeable.__UUPSUpgradeable_init()](lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol#L23-L24) is not in mixedCase\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol#L23-L24", + "id": "cb76c4a025b81b1d34120a39f72a25e8426de1c2f55fbd29d6a5eb8442335219", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_to", + "source_mapping": { + "start": 8302, + "length": 11, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 233 + ], + "starting_column": 9, + "ending_column": 20 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapVelo", + "source_mapping": { + "start": 8252, + "length": 300, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapVelo(address,address,uint256,MinAmountOutData,address)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address)._to (lib/vault-v2/src/ReaperSwapper.sol#233) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address)._to](lib/vault-v2/src/ReaperSwapper.sol#L233) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L233", + "id": "cc2c2d13c5fc96bbb8c8f183cd598ce40909b38213e3148d1f4410feedcdfbf9", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_i", + "source_mapping": { + "start": 302, + "length": 10, + "filename_relative": "lib/vault-v2/src/libraries/ReaperMathUtils.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/ReaperMathUtils.sol", + "filename_short": "lib/vault-v2/src/libraries/ReaperMathUtils.sol", + "is_dependency": true, + "lines": [ + 11 + ], + "starting_column": 27, + "ending_column": 37 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "uncheckedInc", + "source_mapping": { + "start": 280, + "length": 130, + "filename_relative": "lib/vault-v2/src/libraries/ReaperMathUtils.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/ReaperMathUtils.sol", + "filename_short": "lib/vault-v2/src/libraries/ReaperMathUtils.sol", + "is_dependency": true, + "lines": [ + 11, + 12, + 13, + 14, + 15 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperMathUtils", + "source_mapping": { + "start": 63, + "length": 349, + "filename_relative": "lib/vault-v2/src/libraries/ReaperMathUtils.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/ReaperMathUtils.sol", + "filename_short": "lib/vault-v2/src/libraries/ReaperMathUtils.sol", + "is_dependency": true, + "lines": [ + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "uncheckedInc(uint256)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperMathUtils.uncheckedInc(uint256)._i (lib/vault-v2/src/libraries/ReaperMathUtils.sol#11) is not in mixedCase\n", + "markdown": "Parameter [ReaperMathUtils.uncheckedInc(uint256)._i](lib/vault-v2/src/libraries/ReaperMathUtils.sol#L11) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/libraries/ReaperMathUtils.sol#L11", + "id": "cd8dd23a87dae4ac1b0ac22762f0d6ca9a11107161eb11ecc8559a52962999da", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_to", + "source_mapping": { + "start": 6830, + "length": 11, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 188 + ], + "starting_column": 9, + "ending_column": 20 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapBal", + "source_mapping": { + "start": 6781, + "length": 317, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapBal(address,address,uint256,MinAmountOutData,address,uint256)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256)._to (lib/vault-v2/src/ReaperSwapper.sol#188) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256)._to](lib/vault-v2/src/ReaperSwapper.sol#L188) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L188", + "id": "ce9e771782f69e8d3da763e8d0e5d55510b3673e5af35d5030cd3e1f607f698e", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_deadline", + "source_mapping": { + "start": 6951, + "length": 17, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 192 + ], + "starting_column": 9, + "ending_column": 26 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapBal", + "source_mapping": { + "start": 6781, + "length": 317, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapBal(address,address,uint256,MinAmountOutData,address,uint256)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256)._deadline (lib/vault-v2/src/ReaperSwapper.sol#192) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256)._deadline](lib/vault-v2/src/ReaperSwapper.sol#L192) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L192", + "id": "d096162e89d285c6f6eacc550d68dd7057cd03ed9fdd2fbee53da1dacff60853", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_minAmountOutData", + "source_mapping": { + "start": 8348, + "length": 41, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 235 + ], + "starting_column": 9, + "ending_column": 50 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapVelo", + "source_mapping": { + "start": 8252, + "length": 300, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapVelo(address,address,uint256,MinAmountOutData,address)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address)._minAmountOutData (lib/vault-v2/src/ReaperSwapper.sol#235) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address)._minAmountOutData](lib/vault-v2/src/ReaperSwapper.sol#L235) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L235", + "id": "d400a010cfc54a36c2bbabf0d7fedd1ab9a7387ba1f4017fe16eac3e6d19092e", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_vault", + "source_mapping": { + "start": 7250, + "length": 14, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 202 + ], + "starting_column": 9, + "ending_column": 23 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapBal", + "source_mapping": { + "start": 7104, + "length": 296, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapBal(address,address,uint256,MinAmountOutData,address)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address)._vault (lib/vault-v2/src/ReaperSwapper.sol#202) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address)._vault](lib/vault-v2/src/ReaperSwapper.sol#L202) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L202", + "id": "d4fceacb95f86ee83b4bf85da0582077c266098f97e1ce7dbaec2b59cdcef204", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "WETH", + "source_mapping": { + "start": 153, + "length": 48, + "filename_relative": "lib/vault-v2/src/interfaces/IUniswapV2Router01.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IUniswapV2Router01.sol", + "filename_short": "lib/vault-v2/src/interfaces/IUniswapV2Router01.sol", + "is_dependency": true, + "lines": [ + 7 + ], + "starting_column": 5, + "ending_column": 53 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "IUniswapV2Router01", + "source_mapping": { + "start": 61, + "length": 3950, + "filename_relative": "lib/vault-v2/src/interfaces/IUniswapV2Router01.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IUniswapV2Router01.sol", + "filename_short": "lib/vault-v2/src/interfaces/IUniswapV2Router01.sol", + "is_dependency": true, + "lines": [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "WETH()" + }, + "additional_fields": { + "target": "function", + "convention": "mixedCase" + } + } + ], + "description": "Function IUniswapV2Router01.WETH() (lib/vault-v2/src/interfaces/IUniswapV2Router01.sol#7) is not in mixedCase\n", + "markdown": "Function [IUniswapV2Router01.WETH()](lib/vault-v2/src/interfaces/IUniswapV2Router01.sol#L7) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/interfaces/IUniswapV2Router01.sol#L7", + "id": "d51441d319d7710ff998d12e83899a9d644921d950f639a7b86fcc4ddf61e63a", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_router", + "source_mapping": { + "start": 8706, + "length": 15, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 246 + ], + "starting_column": 9, + "ending_column": 24 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV3", + "source_mapping": { + "start": 8558, + "length": 534, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)._router (lib/vault-v2/src/ReaperSwapper.sol#246) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)._router](lib/vault-v2/src/ReaperSwapper.sol#L246) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L246", + "id": "d6dabfed2329ec05b9b11ef9c0aa939f5f9548e1243ac69e7908749887d95f3b", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_minAmountOutData", + "source_mapping": { + "start": 5726, + "length": 41, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 156 + ], + "starting_column": 9, + "ending_column": 50 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV2", + "source_mapping": { + "start": 5629, + "length": 323, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256)._minAmountOutData (lib/vault-v2/src/ReaperSwapper.sol#156) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256)._minAmountOutData](lib/vault-v2/src/ReaperSwapper.sol#L156) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L156", + "id": "dcc6a654dccf15314a4bd6d18240796b3d5a90ad0965512db30fb29fc2d69f4f", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_minAmountOutData", + "source_mapping": { + "start": 6055, + "length": 41, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 167 + ], + "starting_column": 9, + "ending_column": 50 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV2", + "source_mapping": { + "start": 5958, + "length": 302, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address)._minAmountOutData (lib/vault-v2/src/ReaperSwapper.sol#167) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address)._minAmountOutData](lib/vault-v2/src/ReaperSwapper.sol#L167) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L167", + "id": "deeadcde9d8d2a903c85c3e2c9ba0e8b3609ceddae1916e3766e5c84b22c466a", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_minAmountOutData", + "source_mapping": { + "start": 5205, + "length": 41, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 143 + ], + "starting_column": 9, + "ending_column": 50 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV2", + "source_mapping": { + "start": 5108, + "length": 515, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)._minAmountOutData (lib/vault-v2/src/ReaperSwapper.sol#143) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)._minAmountOutData](lib/vault-v2/src/ReaperSwapper.sol#L143) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L143", + "id": "e10ef44a86a407b93bfe33cf20782ef285fd9eb4af3c33bc2e14261b516c0038", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_superAdmin", + "source_mapping": { + "start": 3108, + "length": 19, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 82 + ], + "starting_column": 75, + "ending_column": 94 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "initialize", + "source_mapping": { + "start": 3038, + "length": 562, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "initialize(address[],address,address)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.initialize(address[],address,address)._superAdmin (lib/vault-v2/src/ReaperSwapper.sol#82) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.initialize(address[],address,address)._superAdmin](lib/vault-v2/src/ReaperSwapper.sol#L82) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L82", + "id": "e1f9cb8188c7d2a47d6d3f5f2abd12779ea61cb7f5df57014d8b381dd18519f4", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_amount", + "source_mapping": { + "start": 9170, + "length": 15, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 257 + ], + "starting_column": 9, + "ending_column": 24 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV3", + "source_mapping": { + "start": 9098, + "length": 323, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address,uint256)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256)._amount (lib/vault-v2/src/ReaperSwapper.sol#257) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256)._amount](lib/vault-v2/src/ReaperSwapper.sol#L257) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L257", + "id": "e372392e376217b031464798d9d6768c25b19113dd6cb6674fa902715063982f", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_from", + "source_mapping": { + "start": 6292, + "length": 13, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 174 + ], + "starting_column": 9, + "ending_column": 22 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapBal", + "source_mapping": { + "start": 6266, + "length": 509, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)._from (lib/vault-v2/src/ReaperSwapper.sol#174) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)._from](lib/vault-v2/src/ReaperSwapper.sol#L174) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L174", + "id": "e41b000f65857a61219c2dc0b5d0f4bd15cf77d9dc70e29235aac4739efc28ee", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_address", + "source_mapping": { + "start": 5105, + "length": 16, + "filename_relative": "src/OptionsToken.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", + "filename_short": "src/OptionsToken.sol", + "is_dependency": false, + "lines": [ + 119 + ], + "starting_column": 34, + "ending_column": 50 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setExerciseContract", + "source_mapping": { + "start": 5076, + "length": 200, + "filename_relative": "src/OptionsToken.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", + "filename_short": "src/OptionsToken.sol", + "is_dependency": false, + "lines": [ + 119, + 120, + 121, + 122 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OptionsToken", + "source_mapping": { + "start": 691, + "length": 7138, + "filename_relative": "src/OptionsToken.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", + "filename_short": "src/OptionsToken.sol", + "is_dependency": false, + "lines": [ + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "setExerciseContract(address,bool)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter OptionsToken.setExerciseContract(address,bool)._address (src/OptionsToken.sol#119) is not in mixedCase\n", + "markdown": "Parameter [OptionsToken.setExerciseContract(address,bool)._address](src/OptionsToken.sol#L119) is not in mixedCase\n", + "first_markdown_element": "src/OptionsToken.sol#L119", + "id": "e4c0233eb5b643def437c9c1f7c6853aa2f1fea782bfadf846c2fcb8c3819ad4", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_tokenIn", + "source_mapping": { + "start": 3894, + "length": 16, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 105 + ], + "starting_column": 34, + "ending_column": 50 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "updateBalSwapPoolID", + "source_mapping": { + "start": 3865, + "length": 246, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "updateBalSwapPoolID(address,address,address,bytes32)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.updateBalSwapPoolID(address,address,address,bytes32)._tokenIn (lib/vault-v2/src/ReaperSwapper.sol#105) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.updateBalSwapPoolID(address,address,address,bytes32)._tokenIn](lib/vault-v2/src/ReaperSwapper.sol#L105) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L105", + "id": "e4c97d884fbc8ebc6174dbb08f7148ca0d5d354bbd7673b33287963362a75fac", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_router", + "source_mapping": { + "start": 8072, + "length": 15, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 225 + ], + "starting_column": 9, + "ending_column": 24 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapVelo", + "source_mapping": { + "start": 7925, + "length": 321, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256)._router (lib/vault-v2/src/ReaperSwapper.sol#225) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256)._router](lib/vault-v2/src/ReaperSwapper.sol#L225) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L225", + "id": "e7849af7604ed52e3aba5cc48333f0e4e71b99a0c0eead2614dad5ee6a834648", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_amount", + "source_mapping": { + "start": 6851, + "length": 15, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 189 + ], + "starting_column": 9, + "ending_column": 24 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapBal", + "source_mapping": { + "start": 6781, + "length": 317, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapBal(address,address,uint256,MinAmountOutData,address,uint256)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256)._amount (lib/vault-v2/src/ReaperSwapper.sol#189) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256)._amount](lib/vault-v2/src/ReaperSwapper.sol#L189) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L189", + "id": "ebf15d601b456582fb3fb1f26bfd7094936b95bf6bab66e069b0c047b066a470", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "__Context_init", + "source_mapping": { + "start": 711, + "length": 59, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "is_dependency": true, + "lines": [ + 18, + 19 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ContextUpgradeable", + "source_mapping": { + "start": 651, + "length": 693, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "is_dependency": true, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "__Context_init()" + }, + "additional_fields": { + "target": "function", + "convention": "mixedCase" + } + } + ], + "description": "Function ContextUpgradeable.__Context_init() (lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol#18-19) is not in mixedCase\n", + "markdown": "Function [ContextUpgradeable.__Context_init()](lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol#L18-L19) is not in mixedCase\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol#L18-L19", + "id": "ec47067e22967ab37ddb79c5eae4c225b0c9f1e4e15f1452db70b0a6f86103e0", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_from", + "source_mapping": { + "start": 7130, + "length": 13, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 198 + ], + "starting_column": 9, + "ending_column": 22 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapBal", + "source_mapping": { + "start": 7104, + "length": 296, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapBal(address,address,uint256,MinAmountOutData,address)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address)._from (lib/vault-v2/src/ReaperSwapper.sol#198) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address)._from](lib/vault-v2/src/ReaperSwapper.sol#L198) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L198", + "id": "ee09748ad580f1e17ba44ec7063a9e46e48e09f119e406c49bc6f27fbc52333c", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "__AccessControlEnumerable_init", + "source_mapping": { + "start": 570, + "length": 75, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "is_dependency": true, + "lines": [ + 15, + 16 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AccessControlEnumerableUpgradeable", + "source_mapping": { + "start": 431, + "length": 2605, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", + "is_dependency": true, + "lines": [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "__AccessControlEnumerable_init()" + }, + "additional_fields": { + "target": "function", + "convention": "mixedCase" + } + } + ], + "description": "Function AccessControlEnumerableUpgradeable.__AccessControlEnumerable_init() (lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#15-16) is not in mixedCase\n", + "markdown": "Function [AccessControlEnumerableUpgradeable.__AccessControlEnumerable_init()](lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#L15-L16) is not in mixedCase\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#L15-L16", + "id": "ef5d0800c6abeec9cf95ba22a2b5356b466e7266ac453d3ed2d8d6715e2a485d", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_tokenOut", + "source_mapping": { + "start": 4448, + "length": 17, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 123 + ], + "starting_column": 9, + "ending_column": 26 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "updateUniV3SwapPath", + "source_mapping": { + "start": 4384, + "length": 297, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "updateUniV3SwapPath(address,address,address,UniV3SwapData)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.updateUniV3SwapPath(address,address,address,UniV3SwapData)._tokenOut (lib/vault-v2/src/ReaperSwapper.sol#123) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.updateUniV3SwapPath(address,address,address,UniV3SwapData)._tokenOut](lib/vault-v2/src/ReaperSwapper.sol#L123) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L123", + "id": "ef7fda16f5ed14577f83309fd8ecabd89b0ebc40bb57a21ff7f6bb30ca604ded", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_to", + "source_mapping": { + "start": 7975, + "length": 11, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 222 + ], + "starting_column": 9, + "ending_column": 20 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapVelo", + "source_mapping": { + "start": 7925, + "length": 321, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256)._to (lib/vault-v2/src/ReaperSwapper.sol#222) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256)._to](lib/vault-v2/src/ReaperSwapper.sol#L222) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L222", + "id": "ef99c641c2dfab7b1d3b3387d2ee29b8c2fe143b6573293aa82a96d9e24c4ed8", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "__ERC165_init", + "source_mapping": { + "start": 862, + "length": 58, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "is_dependency": true, + "lines": [ + 24, + 25 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ERC165Upgradeable", + "source_mapping": { + "start": 783, + "length": 736, + "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "is_dependency": true, + "lines": [ + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "__ERC165_init()" + }, + "additional_fields": { + "target": "function", + "convention": "mixedCase" + } + } + ], + "description": "Function ERC165Upgradeable.__ERC165_init() (lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol#24-25) is not in mixedCase\n", + "markdown": "Function [ERC165Upgradeable.__ERC165_init()](lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol#L24-L25) is not in mixedCase\n", + "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol#L24-L25", + "id": "f226b70c0c428d938e421293c43b68d973d744168b94b568e0deb7b189c26f50", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_tryCatchActive", + "source_mapping": { + "start": 7605, + "length": 20, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 214 + ], + "starting_column": 9, + "ending_column": 29 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapVelo", + "source_mapping": { + "start": 7406, + "length": 513, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)._tryCatchActive (lib/vault-v2/src/ReaperSwapper.sol#214) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)._tryCatchActive](lib/vault-v2/src/ReaperSwapper.sol#L214) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L214", + "id": "f3b862d7b6a4c0d902c5505fa61fe589c65b1853823797fa41ecacdd2d9ea250", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_to", + "source_mapping": { + "start": 8609, + "length": 11, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 243 + ], + "starting_column": 9, + "ending_column": 20 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV3", + "source_mapping": { + "start": 8558, + "length": 534, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)._to (lib/vault-v2/src/ReaperSwapper.sol#243) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)._to](lib/vault-v2/src/ReaperSwapper.sol#L243) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L243", + "id": "f5ac32f324cb58d5086f8317679267d629598a093f9744b805224745cd6a4a98", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_tokenOut", + "source_mapping": { + "start": 3912, + "length": 17, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 105 + ], + "starting_column": 52, + "ending_column": 69 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "updateBalSwapPoolID", + "source_mapping": { + "start": 3865, + "length": 246, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "updateBalSwapPoolID(address,address,address,bytes32)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.updateBalSwapPoolID(address,address,address,bytes32)._tokenOut (lib/vault-v2/src/ReaperSwapper.sol#105) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.updateBalSwapPoolID(address,address,address,bytes32)._tokenOut](lib/vault-v2/src/ReaperSwapper.sol#L105) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L105", + "id": "f6df1545fe7e00b5fd2a959284fe6088686751e8c7cc23f57a5cd452cf1d1e58", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_minAmountOutData", + "source_mapping": { + "start": 6361, + "length": 41, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 177 + ], + "starting_column": 9, + "ending_column": 50 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapBal", + "source_mapping": { + "start": 6266, + "length": 509, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)._minAmountOutData (lib/vault-v2/src/ReaperSwapper.sol#177) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)._minAmountOutData](lib/vault-v2/src/ReaperSwapper.sol#L177) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L177", + "id": "f6f24fbb241e4df38de4d7a6812d9589f5ef7dfbf4d14334b09a01a8f35c5d51", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_vault", + "source_mapping": { + "start": 6412, + "length": 14, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 178 + ], + "starting_column": 9, + "ending_column": 23 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapBal", + "source_mapping": { + "start": 6266, + "length": 509, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)._vault (lib/vault-v2/src/ReaperSwapper.sol#178) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)._vault](lib/vault-v2/src/ReaperSwapper.sol#L178) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L178", + "id": "f95934574f1bf834e84810d59234ad1a34504a4e9db16b4ca5622230997341d5", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_strategists", + "source_mapping": { + "start": 3058, + "length": 29, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 82 + ], + "starting_column": 25, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "initialize", + "source_mapping": { + "start": 3038, + "length": 562, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "initialize(address[],address,address)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.initialize(address[],address,address)._strategists (lib/vault-v2/src/ReaperSwapper.sol#82) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.initialize(address[],address,address)._strategists](lib/vault-v2/src/ReaperSwapper.sol#L82) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L82", + "id": "f96d266d8b1835f94a34c648dc6724dfc7f543cfa8fa4a7e942b121681eab748", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_router", + "source_mapping": { + "start": 6106, + "length": 15, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 168 + ], + "starting_column": 9, + "ending_column": 24 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV2", + "source_mapping": { + "start": 5958, + "length": 302, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address)._router (lib/vault-v2/src/ReaperSwapper.sol#168) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address)._router](lib/vault-v2/src/ReaperSwapper.sol#L168) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L168", + "id": "fa6dcd2f29fbd832c383ff7357c474e98aba7ad3fe37aa86aa8c26cf32c98cb8", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_tryCatchActive", + "source_mapping": { + "start": 6463, + "length": 20, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 180 + ], + "starting_column": 9, + "ending_column": 29 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapBal", + "source_mapping": { + "start": 6266, + "length": 509, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)._tryCatchActive (lib/vault-v2/src/ReaperSwapper.sol#180) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)._tryCatchActive](lib/vault-v2/src/ReaperSwapper.sol#L180) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L180", + "id": "fe29d9bfd86c06851a2a3e1b3c0db25699abadca8db8b78c71ae875293417d86", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_instantExitFee", + "source_mapping": { + "start": 6185, + "length": 23, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 168 + ], + "starting_column": 32, + "ending_column": 55 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setInstantExitFee", + "source_mapping": { + "start": 6158, + "length": 123, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 168, + 169, + 170 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DiscountExercise", + "source_mapping": { + "start": 1052, + "length": 9969, + "filename_relative": "src/exercise/DiscountExercise.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", + "filename_short": "src/exercise/DiscountExercise.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "setInstantExitFee(uint256)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter DiscountExercise.setInstantExitFee(uint256)._instantExitFee (src/exercise/DiscountExercise.sol#168) is not in mixedCase\n", + "markdown": "Parameter [DiscountExercise.setInstantExitFee(uint256)._instantExitFee](src/exercise/DiscountExercise.sol#L168) is not in mixedCase\n", + "first_markdown_element": "src/exercise/DiscountExercise.sol#L168", + "id": "ff1617a3413fc4e31072073ea6fc5e0e9bf4ead3476a5cb3e755d52d77461b93", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_tokenOut", + "source_mapping": { + "start": 4163, + "length": 17, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 113 + ], + "starting_column": 51, + "ending_column": 68 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "updateVeloSwapPath", + "source_mapping": { + "start": 4117, + "length": 261, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 113, + 114, + 115, + 116, + 117, + 118, + 119 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "updateVeloSwapPath(address,address,address,IVeloRouter.Route[])" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.updateVeloSwapPath(address,address,address,IVeloRouter.Route[])._tokenOut (lib/vault-v2/src/ReaperSwapper.sol#113) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.updateVeloSwapPath(address,address,address,IVeloRouter.Route[])._tokenOut](lib/vault-v2/src/ReaperSwapper.sol#L113) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L113", + "id": "ff85b7c367841884a8674d678ffff63e31caeb488f05d941ec34479fd6baf50c", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_vault", + "source_mapping": { + "start": 6927, + "length": 14, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 191 + ], + "starting_column": 9, + "ending_column": 23 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapBal", + "source_mapping": { + "start": 6781, + "length": 317, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapBal(address,address,uint256,MinAmountOutData,address,uint256)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256)._vault (lib/vault-v2/src/ReaperSwapper.sol#191) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256)._vault](lib/vault-v2/src/ReaperSwapper.sol#L191) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L191", + "id": "ffc2ede031c84d632d708b92ea1e8bcb081c69066ff3fcc008d2e6cd01e71788", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_amount", + "source_mapping": { + "start": 8630, + "length": 15, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 244 + ], + "starting_column": 9, + "ending_column": 24 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapUniV3", + "source_mapping": { + "start": 8558, + "length": 534, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ReaperSwapper", + "source_mapping": { + "start": 705, + "length": 19366, + "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", + "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", + "is_dependency": true, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)" + } + } + }, + "additional_fields": { + "target": "parameter", + "convention": "mixedCase" + } + } + ], + "description": "Parameter ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)._amount (lib/vault-v2/src/ReaperSwapper.sol#244) is not in mixedCase\n", + "markdown": "Parameter [ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)._amount](lib/vault-v2/src/ReaperSwapper.sol#L244) is not in mixedCase\n", + "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L244", + "id": "ffe58a8a038564f540670c2f6b6c6fa52d43784115d341afa1eba179df2efe8b", + "check": "naming-convention", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "sqrt", + "source_mapping": { + "start": 5746, + "length": 3396, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FixedPointMathLib", + "source_mapping": { + "start": 341, + "length": 9712, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "sqrt(uint256)" + } + }, + { + "type": "node", + "name": "! y_sqrt_asm_0 < 0x1000000000000000000", + "source_mapping": { + "start": 6558, + "length": 119, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 180, + 181, + 182, + 183 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "sqrt", + "source_mapping": { + "start": 5746, + "length": 3396, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FixedPointMathLib", + "source_mapping": { + "start": 341, + "length": 9712, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "sqrt(uint256)" + } + } + } + } + ], + "description": "FixedPointMathLib.sqrt(uint256) (lib/solmate/src/utils/FixedPointMathLib.sol#164-227) uses literals with too many digits:\n\t- ! y_sqrt_asm_0 < 0x1000000000000000000 (lib/solmate/src/utils/FixedPointMathLib.sol#180-183)\n", + "markdown": "[FixedPointMathLib.sqrt(uint256)](lib/solmate/src/utils/FixedPointMathLib.sol#L164-L227) uses literals with too many digits:\n\t- [! y_sqrt_asm_0 < 0x1000000000000000000](lib/solmate/src/utils/FixedPointMathLib.sol#L180-L183)\n", + "first_markdown_element": "lib/solmate/src/utils/FixedPointMathLib.sol#L164-L227", + "id": "0a819fb5f92a6f6a7948d6198a20a71e9693691c915fd452e5b41729e13b3356", + "check": "too-many-digits", + "impact": "Informational", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "sqrt", + "source_mapping": { + "start": 5746, + "length": 3396, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FixedPointMathLib", + "source_mapping": { + "start": 341, + "length": 9712, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "sqrt(uint256)" + } + }, + { + "type": "node", + "name": "! y_sqrt_asm_0 < 0x10000000000000000000000000000000000", + "source_mapping": { + "start": 6409, + "length": 136, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 176, + 177, + 178, + 179 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "sqrt", + "source_mapping": { + "start": 5746, + "length": 3396, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FixedPointMathLib", + "source_mapping": { + "start": 341, + "length": 9712, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "sqrt(uint256)" + } + } + } + } + ], + "description": "FixedPointMathLib.sqrt(uint256) (lib/solmate/src/utils/FixedPointMathLib.sol#164-227) uses literals with too many digits:\n\t- ! y_sqrt_asm_0 < 0x10000000000000000000000000000000000 (lib/solmate/src/utils/FixedPointMathLib.sol#176-179)\n", + "markdown": "[FixedPointMathLib.sqrt(uint256)](lib/solmate/src/utils/FixedPointMathLib.sol#L164-L227) uses literals with too many digits:\n\t- [! y_sqrt_asm_0 < 0x10000000000000000000000000000000000](lib/solmate/src/utils/FixedPointMathLib.sol#L176-L179)\n", + "first_markdown_element": "lib/solmate/src/utils/FixedPointMathLib.sol#L164-L227", + "id": "1356e20c62f39f7e407734298d046498a04468c6b830d2e9f2d11b012ceb8af6", + "check": "too-many-digits", + "impact": "Informational", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "sqrt", + "source_mapping": { + "start": 5746, + "length": 3396, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FixedPointMathLib", + "source_mapping": { + "start": 341, + "length": 9712, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "sqrt(uint256)" + } + }, + { + "type": "node", + "name": "! y_sqrt_asm_0 < 0x10000000000", + "source_mapping": { + "start": 6690, + "length": 111, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 184, + 185, + 186, + 187 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "sqrt", + "source_mapping": { + "start": 5746, + "length": 3396, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FixedPointMathLib", + "source_mapping": { + "start": 341, + "length": 9712, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "sqrt(uint256)" + } + } + } + } + ], + "description": "FixedPointMathLib.sqrt(uint256) (lib/solmate/src/utils/FixedPointMathLib.sol#164-227) uses literals with too many digits:\n\t- ! y_sqrt_asm_0 < 0x10000000000 (lib/solmate/src/utils/FixedPointMathLib.sol#184-187)\n", + "markdown": "[FixedPointMathLib.sqrt(uint256)](lib/solmate/src/utils/FixedPointMathLib.sol#L164-L227) uses literals with too many digits:\n\t- [! y_sqrt_asm_0 < 0x10000000000](lib/solmate/src/utils/FixedPointMathLib.sol#L184-L187)\n", + "first_markdown_element": "lib/solmate/src/utils/FixedPointMathLib.sol#L164-L227", + "id": "4547466ed7b7e6105f203a76bcd6ab35e0154e0fc16f7c2ed0cf4f753cbcbb6d", + "check": "too-many-digits", + "impact": "Informational", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + }, + { + "type": "node", + "name": "ratio = 0x100000000000000000000000000000000", + "source_mapping": { + "start": 1659, + "length": 141, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 31, + 32, + 33 + ], + "starting_column": 13, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getSqrtRatioAtTick", + "source_mapping": { + "start": 1385, + "length": 2759, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TickMath", + "source_mapping": { + "start": 305, + "length": 9112, + "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", + "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "getSqrtRatioAtTick(int24)" + } + } + } + } + ], + "description": "TickMath.getSqrtRatioAtTick(int24) (lib/v3-core/contracts/libraries/TickMath.sol#26-61) uses literals with too many digits:\n\t- ratio = 0x100000000000000000000000000000000 (lib/v3-core/contracts/libraries/TickMath.sol#31-33)\n", + "markdown": "[TickMath.getSqrtRatioAtTick(int24)](lib/v3-core/contracts/libraries/TickMath.sol#L26-L61) uses literals with too many digits:\n\t- [ratio = 0x100000000000000000000000000000000](lib/v3-core/contracts/libraries/TickMath.sol#L31-L33)\n", + "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L26-L61", + "id": "756616de9aca12ab02acf2bbcd459f0074cea7de1b8fbd815a63cf4473e1d454", + "check": "too-many-digits", + "impact": "Informational", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "sqrt", + "source_mapping": { + "start": 373, + "length": 1221, + "filename_relative": "lib/vault-v2/src/libraries/Babylonian.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/Babylonian.sol", + "filename_short": "lib/vault-v2/src/libraries/Babylonian.sol", + "is_dependency": true, + "lines": [ + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Babylonian", + "source_mapping": { + "start": 201, + "length": 1395, + "filename_relative": "lib/vault-v2/src/libraries/Babylonian.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/Babylonian.sol", + "filename_short": "lib/vault-v2/src/libraries/Babylonian.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "sqrt(uint256)" + } + }, + { + "type": "node", + "name": "xx >= 0x100000000000000000000000000000000", + "source_mapping": { + "start": 697, + "length": 41, + "filename_relative": "lib/vault-v2/src/libraries/Babylonian.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/Babylonian.sol", + "filename_short": "lib/vault-v2/src/libraries/Babylonian.sol", + "is_dependency": true, + "lines": [ + 18 + ], + "starting_column": 13, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "sqrt", + "source_mapping": { + "start": 373, + "length": 1221, + "filename_relative": "lib/vault-v2/src/libraries/Babylonian.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/Babylonian.sol", + "filename_short": "lib/vault-v2/src/libraries/Babylonian.sol", + "is_dependency": true, + "lines": [ + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Babylonian", + "source_mapping": { + "start": 201, + "length": 1395, + "filename_relative": "lib/vault-v2/src/libraries/Babylonian.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/Babylonian.sol", + "filename_short": "lib/vault-v2/src/libraries/Babylonian.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "sqrt(uint256)" + } + } + } + } + ], + "description": "Babylonian.sqrt(uint256) (lib/vault-v2/src/libraries/Babylonian.sol#10-54) uses literals with too many digits:\n\t- xx >= 0x100000000000000000000000000000000 (lib/vault-v2/src/libraries/Babylonian.sol#18)\n", + "markdown": "[Babylonian.sqrt(uint256)](lib/vault-v2/src/libraries/Babylonian.sol#L10-L54) uses literals with too many digits:\n\t- [xx >= 0x100000000000000000000000000000000](lib/vault-v2/src/libraries/Babylonian.sol#L18)\n", + "first_markdown_element": "lib/vault-v2/src/libraries/Babylonian.sol#L10-L54", + "id": "a0fba3455384ac1e6d71c40190239592f39a24734f29beb5951cfa0d1eac9cca", + "check": "too-many-digits", + "impact": "Informational", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "sqrt", + "source_mapping": { + "start": 373, + "length": 1221, + "filename_relative": "lib/vault-v2/src/libraries/Babylonian.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/Babylonian.sol", + "filename_short": "lib/vault-v2/src/libraries/Babylonian.sol", + "is_dependency": true, + "lines": [ + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Babylonian", + "source_mapping": { + "start": 201, + "length": 1395, + "filename_relative": "lib/vault-v2/src/libraries/Babylonian.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/Babylonian.sol", + "filename_short": "lib/vault-v2/src/libraries/Babylonian.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "sqrt(uint256)" + } + }, + { + "type": "node", + "name": "xx >= 0x10000000000000000", + "source_mapping": { + "start": 810, + "length": 25, + "filename_relative": "lib/vault-v2/src/libraries/Babylonian.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/Babylonian.sol", + "filename_short": "lib/vault-v2/src/libraries/Babylonian.sol", + "is_dependency": true, + "lines": [ + 22 + ], + "starting_column": 13, + "ending_column": 38 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "sqrt", + "source_mapping": { + "start": 373, + "length": 1221, + "filename_relative": "lib/vault-v2/src/libraries/Babylonian.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/Babylonian.sol", + "filename_short": "lib/vault-v2/src/libraries/Babylonian.sol", + "is_dependency": true, + "lines": [ + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Babylonian", + "source_mapping": { + "start": 201, + "length": 1395, + "filename_relative": "lib/vault-v2/src/libraries/Babylonian.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/Babylonian.sol", + "filename_short": "lib/vault-v2/src/libraries/Babylonian.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "sqrt(uint256)" + } + } + } + } + ], + "description": "Babylonian.sqrt(uint256) (lib/vault-v2/src/libraries/Babylonian.sol#10-54) uses literals with too many digits:\n\t- xx >= 0x10000000000000000 (lib/vault-v2/src/libraries/Babylonian.sol#22)\n", + "markdown": "[Babylonian.sqrt(uint256)](lib/vault-v2/src/libraries/Babylonian.sol#L10-L54) uses literals with too many digits:\n\t- [xx >= 0x10000000000000000](lib/vault-v2/src/libraries/Babylonian.sol#L22)\n", + "first_markdown_element": "lib/vault-v2/src/libraries/Babylonian.sol#L10-L54", + "id": "e5cea88aa35e144390464a50cd74e5ef0814fa17832eaacde7698aa0a1c5c98f", + "check": "too-many-digits", + "impact": "Informational", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "sqrt", + "source_mapping": { + "start": 373, + "length": 1221, + "filename_relative": "lib/vault-v2/src/libraries/Babylonian.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/Babylonian.sol", + "filename_short": "lib/vault-v2/src/libraries/Babylonian.sol", + "is_dependency": true, + "lines": [ + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Babylonian", + "source_mapping": { + "start": 201, + "length": 1395, + "filename_relative": "lib/vault-v2/src/libraries/Babylonian.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/Babylonian.sol", + "filename_short": "lib/vault-v2/src/libraries/Babylonian.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "sqrt(uint256)" + } + }, + { + "type": "node", + "name": "xx >= 0x100000000", + "source_mapping": { + "start": 906, + "length": 17, + "filename_relative": "lib/vault-v2/src/libraries/Babylonian.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/Babylonian.sol", + "filename_short": "lib/vault-v2/src/libraries/Babylonian.sol", + "is_dependency": true, + "lines": [ + 26 + ], + "starting_column": 13, + "ending_column": 30 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "sqrt", + "source_mapping": { + "start": 373, + "length": 1221, + "filename_relative": "lib/vault-v2/src/libraries/Babylonian.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/Babylonian.sol", + "filename_short": "lib/vault-v2/src/libraries/Babylonian.sol", + "is_dependency": true, + "lines": [ + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Babylonian", + "source_mapping": { + "start": 201, + "length": 1395, + "filename_relative": "lib/vault-v2/src/libraries/Babylonian.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/Babylonian.sol", + "filename_short": "lib/vault-v2/src/libraries/Babylonian.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "sqrt(uint256)" + } + } + } + } + ], + "description": "Babylonian.sqrt(uint256) (lib/vault-v2/src/libraries/Babylonian.sol#10-54) uses literals with too many digits:\n\t- xx >= 0x100000000 (lib/vault-v2/src/libraries/Babylonian.sol#26)\n", + "markdown": "[Babylonian.sqrt(uint256)](lib/vault-v2/src/libraries/Babylonian.sol#L10-L54) uses literals with too many digits:\n\t- [xx >= 0x100000000](lib/vault-v2/src/libraries/Babylonian.sol#L26)\n", + "first_markdown_element": "lib/vault-v2/src/libraries/Babylonian.sol#L10-L54", + "id": "e8d06912ce8ea156a58638083700c8eb9591c4bd2968b12ff93038bc775de738", + "check": "too-many-digits", + "impact": "Informational", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "sqrt", + "source_mapping": { + "start": 5746, + "length": 3396, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FixedPointMathLib", + "source_mapping": { + "start": 341, + "length": 9712, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "sqrt(uint256)" + } + }, + { + "type": "node", + "name": "! y_sqrt_asm_0 < 0x1000000", + "source_mapping": { + "start": 6814, + "length": 106, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 188, + 189, + 190, + 191 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "sqrt", + "source_mapping": { + "start": 5746, + "length": 3396, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "FixedPointMathLib", + "source_mapping": { + "start": 341, + "length": 9712, + "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", + "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", + "is_dependency": true, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "sqrt(uint256)" + } + } + } + } + ], + "description": "FixedPointMathLib.sqrt(uint256) (lib/solmate/src/utils/FixedPointMathLib.sol#164-227) uses literals with too many digits:\n\t- ! y_sqrt_asm_0 < 0x1000000 (lib/solmate/src/utils/FixedPointMathLib.sol#188-191)\n", + "markdown": "[FixedPointMathLib.sqrt(uint256)](lib/solmate/src/utils/FixedPointMathLib.sol#L164-L227) uses literals with too many digits:\n\t- [! y_sqrt_asm_0 < 0x1000000](lib/solmate/src/utils/FixedPointMathLib.sol#L188-L191)\n", + "first_markdown_element": "lib/solmate/src/utils/FixedPointMathLib.sol#L164-L227", + "id": "f28694d3e6e5fcf9a2f3366378ebef6a30892b6367b9ade09d2faca0f8828b17", + "check": "too-many-digits", + "impact": "Informational", + "confidence": "Medium" + }, + { + "elements": [], + "description": "The following unused import(s) in src/helpers/SwapHelper.sol should be removed:\n\t-import \"forge-std/console.sol\"; (src/helpers/SwapHelper.sol#9)\n", + "markdown": "The following unused import(s) in src/helpers/SwapHelper.sol should be removed:\n\t-import \"forge-std/console.sol\"; (src/helpers/SwapHelper.sol#9)\n", + "first_markdown_element": "", + "id": "6f50be6825ed38206d4fb51dd6876afc1476363bb114f0ef2ebff4c45cde45e0", + "check": "unused-import", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "isToken0", + "source_mapping": { + "start": 2441, + "length": 20, + "filename_relative": "src/oracles/ThenaOracle.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/ThenaOracle.sol", + "filename_short": "src/oracles/ThenaOracle.sol", + "is_dependency": false, + "lines": [ + 60 + ], + "starting_column": 5, + "ending_column": 25 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ThenaOracle", + "source_mapping": { + "start": 587, + "length": 5996, + "filename_relative": "src/oracles/ThenaOracle.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/ThenaOracle.sol", + "filename_short": "src/oracles/ThenaOracle.sol", + "is_dependency": false, + "lines": [ + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152 + ], + "starting_column": 1, + "ending_column": 2 + } + } + } + } + ], + "description": "ThenaOracle.isToken0 (src/oracles/ThenaOracle.sol#60) should be immutable \n", + "markdown": "[ThenaOracle.isToken0](src/oracles/ThenaOracle.sol#L60) should be immutable \n", + "first_markdown_element": "src/oracles/ThenaOracle.sol#L60", + "id": "e0b61928eb6070b87873ce63ac8b19811c80ba5bc00753317605d06c2cac17ae", + "check": "immutable-states", + "impact": "Optimization", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "isToken0", + "source_mapping": { + "start": 2701, + "length": 20, + "filename_relative": "src/oracles/UniswapV3Oracle.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/UniswapV3Oracle.sol", + "filename_short": "src/oracles/UniswapV3Oracle.sol", + "is_dependency": false, + "lines": [ + 65 + ], + "starting_column": 5, + "ending_column": 25 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "UniswapV3Oracle", + "source_mapping": { + "start": 729, + "length": 6210, + "filename_relative": "src/oracles/UniswapV3Oracle.sol", + "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/UniswapV3Oracle.sol", + "filename_short": "src/oracles/UniswapV3Oracle.sol", + "is_dependency": false, + "lines": [ + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155 + ], + "starting_column": 1, + "ending_column": 2 + } + } + } + } + ], + "description": "UniswapV3Oracle.isToken0 (src/oracles/UniswapV3Oracle.sol#65) should be immutable \n", + "markdown": "[UniswapV3Oracle.isToken0](src/oracles/UniswapV3Oracle.sol#L65) should be immutable \n", + "first_markdown_element": "src/oracles/UniswapV3Oracle.sol#L65", + "id": "fe23c04d02b78e9e124d8ab8aa13ce54ede2783408d0e75877e7375466537adc", + "check": "immutable-states", + "impact": "Optimization", + "confidence": "High" + } + ] + } +} \ No newline at end of file diff --git a/src/exercise/BaseExercise.sol b/src/exercise/BaseExercise.sol index 9de0cc6..31b6b50 100644 --- a/src/exercise/BaseExercise.sol +++ b/src/exercise/BaseExercise.sol @@ -8,6 +8,8 @@ import {IERC20} from "oz/token/ERC20/IERC20.sol"; import {FixedPointMathLib} from "solmate/utils/FixedPointMathLib.sol"; import {Owned} from "solmate/auth/Owned.sol"; +import "forge-std/console.sol"; + abstract contract BaseExercise is IExercise, Owned { using SafeERC20 for IERC20; using FixedPointMathLib for uint256; @@ -86,7 +88,9 @@ abstract contract BaseExercise is IExercise, Owned { function distributeFees(uint256 totalAmount, IERC20 token) internal virtual { uint256 remaining = totalAmount; for (uint256 i = 0; i < feeRecipients.length - 1; i++) { + uint256 feeAmount = totalAmount * feeBPS[i] / FEE_DENOMINATOR; + console.log("feeBPS: %e feeAmount: %e", feeBPS[i], feeAmount); token.safeTransfer(feeRecipients[i], feeAmount); remaining -= feeAmount; } diff --git a/src/exercise/DiscountExercise.sol b/src/exercise/DiscountExercise.sol index 5417f45..17295ad 100644 --- a/src/exercise/DiscountExercise.sol +++ b/src/exercise/DiscountExercise.sol @@ -40,12 +40,16 @@ contract DiscountExercise is BaseExercise, SwapHelper, Pausable { error Exercise__SlippageGreaterThanMax(); error Exercise__ParamHasAddressZero(); error Exercise__InvalidExchangeType(uint256); + error Exercise__FeeDistributionFailed(); /// Events event Exercised(address indexed sender, address indexed recipient, uint256 amount, uint256 paymentAmount); event SetOracle(IOracle indexed newOracle); event SetTreasury(address indexed newTreasury); event SetMultiplier(uint256 indexed newMultiplier); + event Claimed(uint256 indexed amount); + event SetInstantFee(uint256 indexed instantFee); + event SetMinAmountToTrigger(uint256 minAmountToTrigger); /// Constants /// Immutable parameters @@ -114,6 +118,7 @@ contract DiscountExercise is BaseExercise, SwapHelper, Pausable { virtual override onlyOToken + whenNotPaused returns (uint256 paymentAmount, address, uint256, uint256) { DiscountExerciseParams memory _params = abi.decode(params, (DiscountExerciseParams)); @@ -124,11 +129,12 @@ contract DiscountExercise is BaseExercise, SwapHelper, Pausable { } } - function claim(address to) external { + function claim(address to) external whenNotPaused { uint256 amount = credit[msg.sender]; if (amount == 0) return; credit[msg.sender] = 0; underlyingToken.safeTransfer(to, amount); + emit Claimed(amount); } /// Owner functions @@ -172,10 +178,20 @@ contract DiscountExercise is BaseExercise, SwapHelper, Pausable { revert Exercise__FeeGreaterThanMax(); } instantExitFee = _instantExitFee; + emit SetInstantFee(_instantExitFee); } function setMinAmountToTriggerSwap(uint256 _minAmountToTriggerSwap) external onlyOwner { minAmountToTriggerSwap = _minAmountToTriggerSwap; + emit SetMinAmountToTrigger(_minAmountToTriggerSwap); + } + + function pause() external onlyOwner { + _pause(); + } + + function unpause() external onlyOwner { + _unpause(); } /// Internal functions @@ -185,13 +201,13 @@ contract DiscountExercise is BaseExercise, SwapHelper, Pausable { returns (uint256 paymentAmount, address, uint256, uint256) { if (block.timestamp > params.deadline) revert Exercise__PastDeadline(); - + console.log("[IN] Amount: %e\tmultiplier: %e", amount, multiplier); uint256 discountedUnderlying = amount.mulDivUp(multiplier, BPS_DENOM); uint256 fee = discountedUnderlying.mulDivUp(instantExitFee, BPS_DENOM); uint256 underlyingAmount = discountedUnderlying - fee; console.log("Discounted: %e \t fee: %e", discountedUnderlying, fee); - + console.log("Fee amount before: %e", feeAmount); // Fee amount in underlying tokens which is effect of not having redeem bonus feeAmount += fee; console.log("feeAmount: %s vs minAmountToTriggerSwap: %s", feeAmount, minAmountToTriggerSwap); @@ -200,7 +216,7 @@ contract DiscountExercise is BaseExercise, SwapHelper, Pausable { uint256 minAmountOut = _getMinAmountOutData(feeAmount, swapProps.maxSwapSlippage, address(oracle)); console.log("minAmountOut: ", minAmountOut); /* Approve the underlying token to make swap */ - underlyingToken.approve(swapProps.swapper, feeAmount); + underlyingToken.safeApprove(swapProps.swapper, feeAmount); /* Swap underlying token to payment token (asset) */ console.log("under before: %e", underlyingToken.balanceOf(address(this))); _generalSwap(swapProps.exchangeTypes, address(underlyingToken), address(paymentToken), feeAmount, minAmountOut, swapProps.exchangeAddress); @@ -208,10 +224,12 @@ contract DiscountExercise is BaseExercise, SwapHelper, Pausable { // transfer payment tokens from user to the set receivers console.log("Fee recipients: ", feeRecipients.length); distributeFees(paymentToken.balanceOf(address(this)), paymentToken); + if (paymentToken.balanceOf(feeRecipients[0]) == 0 || paymentToken.balanceOf(feeRecipients[1]) == 0) { + revert Exercise__FeeDistributionFailed(); + } } // transfer underlying tokens to recipient without the bonus - console.log("Transferring underlying : %e", underlyingAmount); _pay(recipient, underlyingAmount); emit Exercised(from, recipient, underlyingAmount, paymentAmount); diff --git a/src/helpers/SwapHelper.sol b/src/helpers/SwapHelper.sol index bea68e7..02534c4 100644 --- a/src/helpers/SwapHelper.sol +++ b/src/helpers/SwapHelper.sol @@ -72,15 +72,12 @@ abstract contract SwapHelper { ISwapperSwaps _swapper = ISwapperSwaps(swapProps.swapper); MinAmountOutData memory minAmountOutData = MinAmountOutData(MinAmountOutKind.Absolute, minAmountOut); if (exType == ExchangeType.UniV2) { - console.log("Calling Univ2"); _swapper.swapUniV2(tokenIn, tokenOut, amount, minAmountOutData, exchangeAddress); } else if (exType == ExchangeType.Bal) { _swapper.swapBal(tokenIn, tokenOut, amount, minAmountOutData, exchangeAddress); - console.log("HERE"); } else if (exType == ExchangeType.VeloSolid) { _swapper.swapVelo(tokenIn, tokenOut, amount, minAmountOutData, exchangeAddress); } else if (exType == ExchangeType.UniV3) { - console.log("Calling Univ3"); _swapper.swapUniV3(tokenIn, tokenOut, amount, minAmountOutData, exchangeAddress); } else { revert SwapHelper__InvalidExchangeType(uint256(exType)); diff --git a/test/Common.sol b/test/Common.sol index 843f5fe..c606486 100644 --- a/test/Common.sol +++ b/test/Common.sol @@ -98,6 +98,7 @@ address constant MODE_WETH = 0x4200000000000000000000000000000000000006; address constant MODE_VELO_USDC_MODE_PAIR = 0x283bA4E204DFcB6381BCBf2cb5d0e765A2B57bC2; // DECIMALS ISSUE address constant MODE_VELO_WETH_MODE_PAIR = 0x0fba984c97539B3fb49ACDA6973288D0EFA903DB; address constant MODE_VELO_ROUTER = 0x3a63171DD9BebF4D07BC782FECC7eb0b890C2A45; +address constant MODE_VELO_FACTORY = 0x31832f2a97Fd20664D76Cc421207669b55CE4BC0; contract Common is Test { IERC20 nativeToken; @@ -115,6 +116,7 @@ contract Common is Test { bytes32 paymentUnderlyingBpt; bytes32 paymentWantBpt; + address veloFactory; address pool; address addressProvider; address dataProvider; @@ -177,9 +179,9 @@ contract Common is Test { } else if (exchangeType == ExchangeType.VeloSolid) { /* Configure thena ram like dexes */ IVeloRouter.Route[] memory veloPath = new IVeloRouter.Route[](1); - veloPath[0] = IVeloRouter.Route(paths[0], paths[1], false, OP_VELO_FACTORY); + veloPath[0] = IVeloRouter.Route(paths[0], paths[1], false, veloFactory); reaperSwapper.updateVeloSwapPath(paths[0], paths[1], address(veloRouter), veloPath); - veloPath[0] = IVeloRouter.Route(paths[1], paths[0], false, OP_VELO_FACTORY); + veloPath[0] = IVeloRouter.Route(paths[1], paths[0], false, veloFactory); reaperSwapper.updateVeloSwapPath(paths[1], paths[0], address(veloRouter), veloPath); } else if (exchangeType == ExchangeType.UniV3) { /* Configure univ3 like dexes */ diff --git a/test/ItModeOptionsToken.t.sol b/test/ItModeOptionsToken.t.sol index 8287b09..1119cf1 100644 --- a/test/ItModeOptionsToken.t.sol +++ b/test/ItModeOptionsToken.t.sol @@ -92,6 +92,7 @@ contract ModeOptionsTokenTest is Test, Common { // swapRouter = ISwapRouter(OP_BEETX_VAULT); // univ3Factory = IUniswapV3Factory(OP_UNIV3_FACTORY); veloRouter = IVeloRouter(MODE_VELO_ROUTER); + veloFactory = MODE_VELO_FACTORY; /* Setup network */ uint256 fork = vm.createFork(MAINNET_URL, FORK_BLOCK); @@ -189,8 +190,8 @@ contract ModeOptionsTokenTest is Test, Common { } function test_modeZapPositiveScenario(uint256 amount, address recipient) public { - amount = bound(amount, 1e10, 1e18 - 1); - vm.assume(recipient != address(0)); + amount = bound(amount, 1e16, 1e18 - 1); + address recipient = makeAddr("recipient"); // mint options tokens vm.prank(tokenAdmin); @@ -202,15 +203,12 @@ contract ModeOptionsTokenTest is Test, Common { uint256 expectedUnderlyingAmount = discountedUnderlying - discountedUnderlying.mulDivUp(INSTANT_EXIT_FEE, 10_000); deal(address(paymentToken), address(this), expectedPaymentAmount); - console.log("discountedUnderlying:", discountedUnderlying); - console.log("expectedUnderlyingAmount:", expectedUnderlyingAmount); - // Calculate total fee from zapping uint256 calcPaymentAmount = exerciser.getPaymentAmount(amount); uint256 totalFee = calcPaymentAmount.mulDivUp(INSTANT_EXIT_FEE, 10_000); vm.prank(owner); - exerciser.setMinAmountToTriggerSwap(totalFee + 1); + exerciser.setMinAmountToTriggerSwap(discountedUnderlying.mulDivUp(INSTANT_EXIT_FEE, BPS_DENOM) + 1); // exercise options tokens DiscountExerciseParams memory params = @@ -230,7 +228,7 @@ contract ModeOptionsTokenTest is Test, Common { assertApproxEqAbs(balanceAfterFirstExercise, expectedUnderlyingAmount, 1, "Recipient got wrong amount of underlying token"); /*---------- Second call -----------*/ - amount = bound(amount, 1e18, 1e24); + amount = bound(amount, 1e18, 2e18); // mint options tokens vm.prank(tokenAdmin); optionsToken.mint(address(this), amount); @@ -262,8 +260,8 @@ contract ModeOptionsTokenTest is Test, Common { assertApproxEqRel(IERC20(paymentToken).balanceOf(feeRecipients_[1]), fee2, 5e16, "fee recipient 2 didn't receive payment tokens"); assertEqDecimal(paymentAmount, 0, 18, "exercise returned wrong value"); assertApproxEqAbs( - underlyingToken.balanceOf(recipient) + balanceAfterFirstExercise, - expectedUnderlyingAmount, + underlyingToken.balanceOf(recipient), + expectedUnderlyingAmount + balanceAfterFirstExercise, 1, "Recipient got wrong amount of underlying token" ); diff --git a/test/ItOpOptionsToken.t copy.sol b/test/ItOpOptionsToken.t.sol similarity index 73% rename from test/ItOpOptionsToken.t copy.sol rename to test/ItOpOptionsToken.t.sol index 3d93c04..9f33caa 100644 --- a/test/ItOpOptionsToken.t copy.sol +++ b/test/ItOpOptionsToken.t.sol @@ -92,6 +92,7 @@ contract OpOptionsTokenTest is Test, Common { swapRouter = ISwapRouter(OP_BEETX_VAULT); univ3Factory = IUniswapV3Factory(OP_UNIV3_FACTORY); veloRouter = IVeloRouter(OP_VELO_ROUTER); + veloFactory = OP_VELO_FACTORY; /* Setup network */ uint256 fork = vm.createFork(MAINNET_URL, FORK_BLOCK); @@ -188,16 +189,20 @@ contract OpOptionsTokenTest is Test, Common { assertEqDecimal(expectedPaymentAmount, paymentAmount, 18, "exercise returned wrong value"); } - function test_opZapPositiveScenario(uint256 amount, address recipient) public { + function test_opZapPositiveScenario(uint256 amount) public { amount = bound(amount, 1e10, 1e18 - 1); - vm.assume(recipient != address(0)); + address recipient = makeAddr("recipient"); // mint options tokens vm.prank(tokenAdmin); optionsToken.mint(address(this), amount); + console.log("Fee recipient1 balance: ", IERC20(paymentToken).balanceOf(feeRecipients_[0])); + console.log("Fee recipient2 balance: ", IERC20(paymentToken).balanceOf(feeRecipients_[1])); + // mint payment tokens uint256 expectedPaymentAmount = amount.mulWadUp(oracle.getPrice().mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); + console.log("[OUT] Amount: %e\tmultiplier: %e", amount, PRICE_MULTIPLIER); uint256 discountedUnderlying = amount.mulDivUp(PRICE_MULTIPLIER, 10_000); uint256 expectedUnderlyingAmount = discountedUnderlying - discountedUnderlying.mulDivUp(INSTANT_EXIT_FEE, 10_000); deal(address(paymentToken), address(this), expectedPaymentAmount); @@ -210,7 +215,7 @@ contract OpOptionsTokenTest is Test, Common { uint256 totalFee = calcPaymentAmount.mulDivUp(INSTANT_EXIT_FEE, 10_000); vm.prank(owner); - exerciser.setMinAmountToTriggerSwap(totalFee + 1); + exerciser.setMinAmountToTriggerSwap(discountedUnderlying.mulDivUp(INSTANT_EXIT_FEE, BPS_DENOM) + 1); // exercise options tokens DiscountExerciseParams memory params = @@ -262,116 +267,13 @@ contract OpOptionsTokenTest is Test, Common { assertApproxEqRel(IERC20(paymentToken).balanceOf(feeRecipients_[1]), fee2, 5e16, "fee recipient 2 didn't receive payment tokens"); assertEqDecimal(paymentAmount, 0, 18, "exercise returned wrong value"); assertApproxEqAbs( - underlyingToken.balanceOf(recipient) + balanceAfterFirstExercise, - expectedUnderlyingAmount, + underlyingToken.balanceOf(recipient), + expectedUnderlyingAmount + balanceAfterFirstExercise, 1, "Recipient got wrong amount of underlying token" ); } - function test_opExerciseMinPrice(uint256 amount, address recipient) public { - amount = bound(amount, 1, MAX_SUPPLY); - vm.assume(recipient != address(0)); - - // mint options tokens - vm.prank(tokenAdmin); - optionsToken.mint(address(this), amount); - - // set TWAP value such that the strike price is below the oracle's minPrice value - balancerTwapOracle.setTwapValue(ORACLE_MIN_PRICE - 1); - - // mint payment tokens - uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_MIN_PRICE); - deal(address(paymentToken), address(this), expectedPaymentAmount); - - // exercise options tokens - DiscountExerciseParams memory params = - DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: false}); - vm.expectRevert(bytes4(keccak256("ThenaOracle__BelowMinPrice()"))); - optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); - } - - // function test_priceMultiplier(uint256 amount, uint256 multiplier) public { - // amount = bound(amount, 1, MAX_SUPPLY / 2); - - // vm.prank(owner); - // exerciser.setMultiplier(10000); // full price - - // // mint options tokens - // vm.prank(tokenAdmin); - // optionsToken.mint(address(this), amount * 2); - - // // mint payment tokens - // uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_INIT_TWAP_VALUE); - // deal(address(paymentToken), address(this), expectedPaymentAmount); - - // // exercise options tokens - // DiscountExerciseParams memory params = - // DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: false}); - // (uint256 paidAmount,,,) = optionsToken.exercise(amount, address(this), address(exerciser), abi.encode(params)); - - // // update multiplier - // multiplier = bound(multiplier, 1000, 20000); - // vm.prank(owner); - // exerciser.setMultiplier(multiplier); - - // // exercise options tokens - // uint256 newPrice = oracle.getPrice().mulDivUp(multiplier, 10000); - // uint256 newExpectedPaymentAmount = amount.mulWadUp(newPrice); - // params.maxPaymentAmount = newExpectedPaymentAmount; - - // deal(address(paymentToken), address(this), newExpectedPaymentAmount); - // (uint256 newPaidAmount,,,) = optionsToken.exercise(amount, address(this), address(exerciser), abi.encode(params)); - // // verify payment tokens were transferred - // assertEqDecimal(paymentToken.balanceOf(address(this)), 0, 18, "user still has payment tokens"); - // assertEq(newPaidAmount, paidAmount.mulDivUp(multiplier, 10000), "incorrect discount"); - // } - - // function test_exerciseTwapOracleNotReady(uint256 amount, address recipient) public { - // amount = bound(amount, 1, MAX_SUPPLY); - - // // mint options tokens - // vm.prank(tokenAdmin); - // optionsToken.mint(address(this), amount); - - // // mint payment tokens - // uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); - // deal(address(paymentToken), address(this), expectedPaymentAmount); - - // // update oracle params - // // such that the TWAP window becomes (block.timestamp - ORACLE_LARGEST_SAFETY_WINDOW - ORACLE_SECS, block.timestamp - ORACLE_LARGEST_SAFETY_WINDOW] - // // which is outside of the largest safety window - // // vm.prank(owner); - // // oracle.setParams(ORACLE_SECS, ORACLE_LARGEST_SAFETY_WINDOW, ORACLE_MIN_PRICE); - - // // exercise options tokens which should fail - // DiscountExerciseParams memory params = - // DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: false}); - // vm.expectRevert(ThenaOracle.ThenaOracle__TWAPOracleNotReady.selector); - // optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); - // } - - // function test_exercisePastDeadline(uint256 amount, address recipient, uint256 deadline) public { - // amount = bound(amount, 0, MAX_SUPPLY); - // deadline = bound(deadline, 0, block.timestamp - 1); - - // // mint options tokens - // vm.prank(tokenAdmin); - // optionsToken.mint(address(this), amount); - - // // mint payment tokens - // uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); - // deal(address(paymentToken), address(this), expectedPaymentAmount); - - // // exercise options tokens - // DiscountExerciseParams memory params = - // DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: deadline, isInstantExit: false}); - // if (amount != 0) { - // vm.expectRevert(DiscountExercise.Exercise__PastDeadline.selector); - // } - // optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); - // } - function test_exerciseNotOToken(uint256 amount, address recipient) public { amount = bound(amount, 0, MAX_SUPPLY); diff --git a/test/OptionsToken.t.sol b/test/OptionsToken.t.sol index 5f72a23..20b776a 100644 --- a/test/OptionsToken.t.sol +++ b/test/OptionsToken.t.sol @@ -356,4 +356,37 @@ contract OptionsTokenTest is Test { vm.expectRevert(OptionsToken.OptionsToken__NotExerciseContract.selector); optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); } + + function test_exerciseWhenPaused(uint256 amount) public { + amount = bound(amount, 100, 1 ether); + address recipient = makeAddr("recipient"); + + // mint options tokens + vm.prank(tokenAdmin); + optionsToken.mint(address(this), 3 * amount); + + // mint payment tokens + uint256 expectedPaymentAmount = 3 * amount.mulWadUp(oracle.getPrice().mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); + deal(address(paymentToken), address(this), expectedPaymentAmount); + + // exercise options tokens + DiscountExerciseParams memory params = + DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: false}); + optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); + + /* Only owner can pause */ + vm.startPrank(recipient); + vm.expectRevert(bytes("UNAUTHORIZED")); // Ownable: caller is not the owner + exerciser.pause(); + vm.stopPrank(); + + vm.prank(owner); + exerciser.pause(); + vm.expectRevert(bytes("Pausable: paused")); + optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); + + vm.prank(owner); + exerciser.unpause(); + optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); + } } From 14c385714d179abbc46998387030d38193f4ba65 Mon Sep 17 00:00:00 2001 From: xRave110 Date: Mon, 24 Jun 2024 10:28:55 +0200 Subject: [PATCH 51/64] Additional comments --- src/exercise/DiscountExercise.sol | 15 +-------------- test/Common.sol | 6 +++--- ...tionsToken.t.sol => ItOpOptionsToken.t.solNOT} | 0 3 files changed, 4 insertions(+), 17 deletions(-) rename test/{ItOpOptionsToken.t.sol => ItOpOptionsToken.t.solNOT} (100%) diff --git a/src/exercise/DiscountExercise.sol b/src/exercise/DiscountExercise.sol index 17295ad..5aa9b09 100644 --- a/src/exercise/DiscountExercise.sol +++ b/src/exercise/DiscountExercise.sol @@ -13,8 +13,6 @@ import {OptionsToken} from "../OptionsToken.sol"; import {ExchangeType, SwapProps, SwapHelper} from "../helpers/SwapHelper.sol"; -import "forge-std/console.sol"; - struct DiscountExerciseParams { uint256 maxPaymentAmount; uint256 deadline; @@ -201,28 +199,21 @@ contract DiscountExercise is BaseExercise, SwapHelper, Pausable { returns (uint256 paymentAmount, address, uint256, uint256) { if (block.timestamp > params.deadline) revert Exercise__PastDeadline(); - console.log("[IN] Amount: %e\tmultiplier: %e", amount, multiplier); uint256 discountedUnderlying = amount.mulDivUp(multiplier, BPS_DENOM); uint256 fee = discountedUnderlying.mulDivUp(instantExitFee, BPS_DENOM); uint256 underlyingAmount = discountedUnderlying - fee; - console.log("Discounted: %e \t fee: %e", discountedUnderlying, fee); - console.log("Fee amount before: %e", feeAmount); - // Fee amount in underlying tokens which is effect of not having redeem bonus + // Fee amount in underlying tokens for zapping feeAmount += fee; - console.log("feeAmount: %s vs minAmountToTriggerSwap: %s", feeAmount, minAmountToTriggerSwap); if (feeAmount >= minAmountToTriggerSwap) { uint256 minAmountOut = _getMinAmountOutData(feeAmount, swapProps.maxSwapSlippage, address(oracle)); - console.log("minAmountOut: ", minAmountOut); /* Approve the underlying token to make swap */ underlyingToken.safeApprove(swapProps.swapper, feeAmount); /* Swap underlying token to payment token (asset) */ - console.log("under before: %e", underlyingToken.balanceOf(address(this))); _generalSwap(swapProps.exchangeTypes, address(underlyingToken), address(paymentToken), feeAmount, minAmountOut, swapProps.exchangeAddress); feeAmount = 0; // transfer payment tokens from user to the set receivers - console.log("Fee recipients: ", feeRecipients.length); distributeFees(paymentToken.balanceOf(address(this)), paymentToken); if (paymentToken.balanceOf(feeRecipients[0]) == 0 || paymentToken.balanceOf(feeRecipients[1]) == 0) { revert Exercise__FeeDistributionFailed(); @@ -242,11 +233,9 @@ contract DiscountExercise is BaseExercise, SwapHelper, Pausable { returns (uint256 paymentAmount, address, uint256, uint256) { if (block.timestamp > params.deadline) revert Exercise__PastDeadline(); - // apply multiplier to price paymentAmount = _getPaymentAmount(amount); if (paymentAmount > params.maxPaymentAmount) revert Exercise__SlippageTooHigh(); - // transfer payment tokens from user to the set receivers distributeFeesFrom(paymentAmount, paymentToken, from); // transfer underlying tokens to recipient @@ -275,8 +264,6 @@ contract DiscountExercise is BaseExercise, SwapHelper, Pausable { } function _getPaymentAmount(uint256 amount) private view returns (uint256 paymentAmount) { - console.log("Price inside: ", oracle.getPrice()); paymentAmount = amount.mulWadUp(oracle.getPrice().mulDivUp(multiplier, BPS_DENOM)); - // paymentAmount -= paymentAmount.mulDivUp(redeemBonus, BPS_DENOM); // redeem bonus applied } } diff --git a/test/Common.sol b/test/Common.sol index c606486..3043853 100644 --- a/test/Common.sol +++ b/test/Common.sol @@ -179,9 +179,9 @@ contract Common is Test { } else if (exchangeType == ExchangeType.VeloSolid) { /* Configure thena ram like dexes */ IVeloRouter.Route[] memory veloPath = new IVeloRouter.Route[](1); - veloPath[0] = IVeloRouter.Route(paths[0], paths[1], false, veloFactory); + veloPath[0] = IVeloRouter.Route(paths[0], paths[1], false); reaperSwapper.updateVeloSwapPath(paths[0], paths[1], address(veloRouter), veloPath); - veloPath[0] = IVeloRouter.Route(paths[1], paths[0], false, veloFactory); + veloPath[0] = IVeloRouter.Route(paths[1], paths[0], false); reaperSwapper.updateVeloSwapPath(paths[1], paths[0], address(veloRouter), veloPath); } else if (exchangeType == ExchangeType.UniV3) { /* Configure univ3 like dexes */ @@ -212,7 +212,7 @@ contract Common is Test { } else if (exchangeType == ExchangeType.VeloSolid) { IVeloRouter router = IVeloRouter(payable(address(veloRouter))); ThenaOracle underlyingPaymentOracle; - address pair = router.pairFor(address(underlyingToken), address(paymentToken), false, OP_VELO_FACTORY); + address pair = router.poolFor(address(underlyingToken), address(paymentToken), false); underlyingPaymentOracle = new ThenaOracle(IThenaPair(pair), address(underlyingToken), owner, ORACLE_SECS, ORACLE_MIN_PRICE); oracle = IOracle(address(underlyingPaymentOracle)); } else if (exchangeType == ExchangeType.UniV3) { diff --git a/test/ItOpOptionsToken.t.sol b/test/ItOpOptionsToken.t.solNOT similarity index 100% rename from test/ItOpOptionsToken.t.sol rename to test/ItOpOptionsToken.t.solNOT From 14f02156b5a4cd523e550f7444d8dc3f3df306af Mon Sep 17 00:00:00 2001 From: xRave110 Date: Fri, 28 Jun 2024 11:43:22 +0200 Subject: [PATCH 52/64] Improvements after review --- .gitignore | 3 + .gitmodules | 3 - .vscode/settings.json | 4 - foundry.toml | 2 +- hardhat.config.ts | 38 +- lib/tarot-price-oracle | 1 - lib/vault-v2 | 2 +- output.json | 228363 --------------------------- src/OptionsToken.sol | 15 +- src/exercise/DiscountExercise.sol | 23 +- src/helpers/SwapHelper.sol | 19 +- test/OptionsToken.t.sol | 38 +- 12 files changed, 98 insertions(+), 228413 deletions(-) delete mode 100644 .vscode/settings.json delete mode 160000 lib/tarot-price-oracle delete mode 100644 output.json diff --git a/.gitignore b/.gitignore index 9c3c7dc..1cdc36d 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,6 @@ node_modules/ artifacts/ cache_hardhat/ typechain-types/ + +*settings.json + diff --git a/.gitmodules b/.gitmodules index c75bf00..f324d8b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -16,9 +16,6 @@ [submodule "lib/openzeppelin-contracts"] path = lib/openzeppelin-contracts url = https://github.com/OpenZeppelin/openzeppelin-contracts -[submodule "lib/tarot-price-oracle"] - path = lib/tarot-price-oracle - url = https://github.com/xrave110/tarot-price-oracle [submodule "lib/vault-v2"] path = lib/vault-v2 url = https://github.com/Byte-Masons/vault-v2 diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 2306f3c..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "solidity.formatter": "forge", - "editor.formatOnSave": true -} \ No newline at end of file diff --git a/foundry.toml b/foundry.toml index 2362c36..8129a9c 100644 --- a/foundry.toml +++ b/foundry.toml @@ -1,7 +1,7 @@ [profile.default] optimizer_runs = 1000000 verbosity = 1 -via_ir = true +via_ir = false [fmt] line_length = 150 diff --git a/hardhat.config.ts b/hardhat.config.ts index f5f1364..f54029d 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -18,10 +18,10 @@ const PRIVATE_KEY = process.env.PRIVATE_KEY || ""; const config: HardhatUserConfig = { solidity: { - version: "0.8.20", - // settings: { - // optimizer: { enabled: true, runs: 200 } - // } + version: "0.8.19", + settings: { + optimizer: { enabled: true, runs: 9999 } + } }, sourcify: { enabled: true @@ -47,21 +47,21 @@ const config: HardhatUserConfig = { accounts: [`0x${PRIVATE_KEY}`], }, }, - // etherscan: { - // apiKey: { - // bsc: process.env.ETHERSCAN_KEY || "", - // }, - // customChains: [ - // { - // network: "mode", - // chainId: 34443, - // urls: { - // apiURL: "https://explorer.mode.network", - // browserURL: "https://explorer.mode.network" - // } - // } - // ] - // }, + etherscan: { + apiKey: { + bsc: process.env.ETHERSCAN_KEY || "", + }, + // customChains: [ + // { + // network: "mode", + // chainId: 34443, + // urls: { + // apiURL: "https://explorer.mode.network", + // browserURL: "https://explorer.mode.network" + // } + // } + // ] + }, }; diff --git a/lib/tarot-price-oracle b/lib/tarot-price-oracle deleted file mode 160000 index 483959c..0000000 --- a/lib/tarot-price-oracle +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 483959c501ddab57e5215e47bbb257f04aa02b76 diff --git a/lib/vault-v2 b/lib/vault-v2 index 23df243..6cbaea2 160000 --- a/lib/vault-v2 +++ b/lib/vault-v2 @@ -1 +1 @@ -Subproject commit 23df243595d358986708544e03229501fc82b595 +Subproject commit 6cbaea2c6d3f6fbfa3aebab182f9a75d056f7a43 diff --git a/output.json b/output.json deleted file mode 100644 index 5a04500..0000000 --- a/output.json +++ /dev/null @@ -1,228363 +0,0 @@ -{ - "success": true, - "error": null, - "results": { - "detectors": [ - { - "elements": [ - { - "type": "function", - "name": "distributeFeesFrom", - "source_mapping": { - "start": 3017, - "length": 554, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseExercise", - "source_mapping": { - "start": 432, - "length": 3936, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "distributeFeesFrom(uint256,IERC20,address)" - } - }, - { - "type": "node", - "name": "token.safeTransferFrom(from,feeRecipients[i],feeAmount)", - "source_mapping": { - "start": 3306, - "length": 57, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 79 - ], - "starting_column": 13, - "ending_column": 70 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "distributeFeesFrom", - "source_mapping": { - "start": 3017, - "length": 554, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseExercise", - "source_mapping": { - "start": 432, - "length": 3936, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "distributeFeesFrom(uint256,IERC20,address)" - } - } - } - } - ], - "description": "BaseExercise.distributeFeesFrom(uint256,IERC20,address) (src/exercise/BaseExercise.sol#75-84) uses arbitrary from in transferFrom: token.safeTransferFrom(from,feeRecipients[i],feeAmount) (src/exercise/BaseExercise.sol#79)\n", - "markdown": "[BaseExercise.distributeFeesFrom(uint256,IERC20,address)](src/exercise/BaseExercise.sol#L75-L84) uses arbitrary from in transferFrom: [token.safeTransferFrom(from,feeRecipients[i],feeAmount)](src/exercise/BaseExercise.sol#L79)\n", - "first_markdown_element": "src/exercise/BaseExercise.sol#L75-L84", - "id": "446a1cb33ebfad0d0a709c03c1c0cd849aceed537bd0183c5297524327e3aaf2", - "check": "arbitrary-send-erc20", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "distributeFeesFrom", - "source_mapping": { - "start": 3017, - "length": 554, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseExercise", - "source_mapping": { - "start": 432, - "length": 3936, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "distributeFeesFrom(uint256,IERC20,address)" - } - }, - { - "type": "node", - "name": "token.safeTransferFrom(from,feeRecipients[feeRecipients.length - 1],remaining)", - "source_mapping": { - "start": 3419, - "length": 80, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 82 - ], - "starting_column": 9, - "ending_column": 89 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "distributeFeesFrom", - "source_mapping": { - "start": 3017, - "length": 554, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseExercise", - "source_mapping": { - "start": 432, - "length": 3936, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "distributeFeesFrom(uint256,IERC20,address)" - } - } - } - } - ], - "description": "BaseExercise.distributeFeesFrom(uint256,IERC20,address) (src/exercise/BaseExercise.sol#75-84) uses arbitrary from in transferFrom: token.safeTransferFrom(from,feeRecipients[feeRecipients.length - 1],remaining) (src/exercise/BaseExercise.sol#82)\n", - "markdown": "[BaseExercise.distributeFeesFrom(uint256,IERC20,address)](src/exercise/BaseExercise.sol#L75-L84) uses arbitrary from in transferFrom: [token.safeTransferFrom(from,feeRecipients[feeRecipients.length - 1],remaining)](src/exercise/BaseExercise.sol#L82)\n", - "first_markdown_element": "src/exercise/BaseExercise.sol#L75-L84", - "id": "e527a176c279777711a8a43d5feac81d7390657a451efca4aa421633e06d9680", - "check": "arbitrary-send-erc20", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "_functionDelegateCall", - "source_mapping": { - "start": 6780, - "length": 455, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "is_dependency": true, - "lines": [ - 184, - 185, - 186, - 187, - 188, - 189, - 190 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC1967UpgradeUpgradeable", - "source_mapping": { - "start": 661, - "length": 6867, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "is_dependency": true, - "lines": [ - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_functionDelegateCall(address,bytes)" - } - }, - { - "type": "node", - "name": "(success,returndata) = target.delegatecall(data)", - "source_mapping": { - "start": 7045, - "length": 67, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "is_dependency": true, - "lines": [ - 188 - ], - "starting_column": 9, - "ending_column": 76 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_functionDelegateCall", - "source_mapping": { - "start": 6780, - "length": 455, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "is_dependency": true, - "lines": [ - 184, - 185, - 186, - 187, - 188, - 189, - 190 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC1967UpgradeUpgradeable", - "source_mapping": { - "start": 661, - "length": 6867, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "is_dependency": true, - "lines": [ - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_functionDelegateCall(address,bytes)" - } - } - } - } - ], - "description": "ERC1967UpgradeUpgradeable._functionDelegateCall(address,bytes) (lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#184-190) uses delegatecall to a input-controlled function id\n\t- (success,returndata) = target.delegatecall(data) (lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#188)\n", - "markdown": "[ERC1967UpgradeUpgradeable._functionDelegateCall(address,bytes)](lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#L184-L190) uses delegatecall to a input-controlled function id\n\t- [(success,returndata) = target.delegatecall(data)](lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#L188)\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#L184-L190", - "id": "674611239cacd3d3adbcbfab671c0ebaf9c020827cfd91cca0f58d74c0873e7d", - "check": "controlled-delegatecall", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 741, - "length": 4127, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FullMath", - "source_mapping": { - "start": 354, - "length": 5163, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - }, - { - "type": "node", - "name": "inv = (3 * denominator) ^ 2", - "source_mapping": { - "start": 3729, - "length": 35, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 88 - ], - "starting_column": 13, - "ending_column": 48 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 741, - "length": 4127, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FullMath", - "source_mapping": { - "start": 354, - "length": 5163, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - } - ], - "description": "FullMath.mulDiv(uint256,uint256,uint256) (lib/v3-core/contracts/libraries/FullMath.sol#14-108) has bitwise-xor operator ^ instead of the exponentiation operator **: \n\t - inv = (3 * denominator) ^ 2 (lib/v3-core/contracts/libraries/FullMath.sol#88)\n", - "markdown": "[FullMath.mulDiv(uint256,uint256,uint256)](lib/v3-core/contracts/libraries/FullMath.sol#L14-L108) has bitwise-xor operator ^ instead of the exponentiation operator **: \n\t - [inv = (3 * denominator) ^ 2](lib/v3-core/contracts/libraries/FullMath.sol#L88)\n", - "first_markdown_element": "lib/v3-core/contracts/libraries/FullMath.sol#L14-L108", - "id": "3ebcee10c38dd4a235616a4d9d6a9aaf00fe1db39529893efe57c283a4b73d3f", - "check": "incorrect-exp", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 1678, - "length": 3925, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MathUpgradeable", - "source_mapping": { - "start": 202, - "length": 12313, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - }, - { - "type": "node", - "name": "inverse = (3 * denominator) ^ 2", - "source_mapping": { - "start": 4459, - "length": 39, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 117 - ], - "starting_column": 13, - "ending_column": 52 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 1678, - "length": 3925, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MathUpgradeable", - "source_mapping": { - "start": 202, - "length": 12313, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - } - ], - "description": "MathUpgradeable.mulDiv(uint256,uint256,uint256) (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#55-135) has bitwise-xor operator ^ instead of the exponentiation operator **: \n\t - inverse = (3 * denominator) ^ 2 (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#117)\n", - "markdown": "[MathUpgradeable.mulDiv(uint256,uint256,uint256)](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L55-L135) has bitwise-xor operator ^ instead of the exponentiation operator **: \n\t - [inverse = (3 * denominator) ^ 2](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L117)\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L55-L135", - "id": "d5757e6727c1fd979b03f6138f32befb52a3a53c3f8e23a9970145a5973d779a", - "check": "incorrect-exp", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 1678, - "length": 3925, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MathUpgradeable", - "source_mapping": { - "start": 202, - "length": 12313, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - }, - { - "type": "node", - "name": "denominator = denominator / twos", - "source_mapping": { - "start": 3757, - "length": 37, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 102 - ], - "starting_column": 17, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 1678, - "length": 3925, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MathUpgradeable", - "source_mapping": { - "start": 202, - "length": 12313, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - }, - { - "type": "node", - "name": "inverse *= 2 - denominator * inverse", - "source_mapping": { - "start": 4715, - "length": 36, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 121 - ], - "starting_column": 13, - "ending_column": 49 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 1678, - "length": 3925, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MathUpgradeable", - "source_mapping": { - "start": 202, - "length": 12313, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - } - ], - "description": "MathUpgradeable.mulDiv(uint256,uint256,uint256) (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#55-135) performs a multiplication on the result of a division:\n\t- denominator = denominator / twos (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#102)\n\t- inverse *= 2 - denominator * inverse (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#121)\n", - "markdown": "[MathUpgradeable.mulDiv(uint256,uint256,uint256)](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L55-L135) performs a multiplication on the result of a division:\n\t- [denominator = denominator / twos](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L102)\n\t- [inverse *= 2 - denominator * inverse](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L121)\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L55-L135", - "id": "00b65e3a8fb42b635c27a085eb3b8c89d7b14ad83a5429e7ccfde9497a23828c", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - }, - { - "type": "node", - "name": "ratio = (ratio * 0x48a170391f7dc42444e8fa2) >> 128", - "source_mapping": { - "start": 3617, - "length": 50, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 52 - ], - "starting_column": 41, - "ending_column": 91 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - } - } - }, - { - "type": "node", - "name": "ratio = type()(uint256).max / ratio", - "source_mapping": { - "start": 3696, - "length": 33, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 54 - ], - "starting_column": 27, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - } - } - } - ], - "description": "TickMath.getSqrtRatioAtTick(int24) (lib/v3-core/contracts/libraries/TickMath.sol#26-61) performs a multiplication on the result of a division:\n\t- ratio = (ratio * 0x48a170391f7dc42444e8fa2) >> 128 (lib/v3-core/contracts/libraries/TickMath.sol#52)\n\t- ratio = type()(uint256).max / ratio (lib/v3-core/contracts/libraries/TickMath.sol#54)\n", - "markdown": "[TickMath.getSqrtRatioAtTick(int24)](lib/v3-core/contracts/libraries/TickMath.sol#L26-L61) performs a multiplication on the result of a division:\n\t- [ratio = (ratio * 0x48a170391f7dc42444e8fa2) >> 128](lib/v3-core/contracts/libraries/TickMath.sol#L52)\n\t- [ratio = type()(uint256).max / ratio](lib/v3-core/contracts/libraries/TickMath.sol#L54)\n", - "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L26-L61", - "id": "049b0eee893d521c098e8106c37a596606789cb5437746aaf101d87bfb81347e", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 1678, - "length": 3925, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MathUpgradeable", - "source_mapping": { - "start": 202, - "length": 12313, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - }, - { - "type": "node", - "name": "denominator = denominator / twos", - "source_mapping": { - "start": 3757, - "length": 37, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 102 - ], - "starting_column": 17, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 1678, - "length": 3925, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MathUpgradeable", - "source_mapping": { - "start": 202, - "length": 12313, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - }, - { - "type": "node", - "name": "inverse *= 2 - denominator * inverse", - "source_mapping": { - "start": 4924, - "length": 36, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 124 - ], - "starting_column": 13, - "ending_column": 49 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 1678, - "length": 3925, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MathUpgradeable", - "source_mapping": { - "start": 202, - "length": 12313, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - } - ], - "description": "MathUpgradeable.mulDiv(uint256,uint256,uint256) (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#55-135) performs a multiplication on the result of a division:\n\t- denominator = denominator / twos (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#102)\n\t- inverse *= 2 - denominator * inverse (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#124)\n", - "markdown": "[MathUpgradeable.mulDiv(uint256,uint256,uint256)](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L55-L135) performs a multiplication on the result of a division:\n\t- [denominator = denominator / twos](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L102)\n\t- [inverse *= 2 - denominator * inverse](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L124)\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L55-L135", - "id": "063a41726141c0824417315356cff50b71c19049fcd88cdabef685c7b2284446", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 741, - "length": 4127, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FullMath", - "source_mapping": { - "start": 354, - "length": 5163, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - }, - { - "type": "node", - "name": "prod0 = prod0 / twos", - "source_mapping": { - "start": 3023, - "length": 25, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 73 - ], - "starting_column": 17, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 741, - "length": 4127, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FullMath", - "source_mapping": { - "start": 354, - "length": 5163, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - }, - { - "type": "node", - "name": "result = prod0 * inv", - "source_mapping": { - "start": 4804, - "length": 20, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 105 - ], - "starting_column": 13, - "ending_column": 33 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 741, - "length": 4127, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FullMath", - "source_mapping": { - "start": 354, - "length": 5163, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - } - ], - "description": "FullMath.mulDiv(uint256,uint256,uint256) (lib/v3-core/contracts/libraries/FullMath.sol#14-108) performs a multiplication on the result of a division:\n\t- prod0 = prod0 / twos (lib/v3-core/contracts/libraries/FullMath.sol#73)\n\t- result = prod0 * inv (lib/v3-core/contracts/libraries/FullMath.sol#105)\n", - "markdown": "[FullMath.mulDiv(uint256,uint256,uint256)](lib/v3-core/contracts/libraries/FullMath.sol#L14-L108) performs a multiplication on the result of a division:\n\t- [prod0 = prod0 / twos](lib/v3-core/contracts/libraries/FullMath.sol#L73)\n\t- [result = prod0 * inv](lib/v3-core/contracts/libraries/FullMath.sol#L105)\n", - "first_markdown_element": "lib/v3-core/contracts/libraries/FullMath.sol#L14-L108", - "id": "0fc34c55fb2fcbf643d5ba90b5756e4d089643e6ad30eeea71f5c709781c9e32", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - }, - { - "type": "node", - "name": "ratio = (ratio * 0xa9f746462d870fdf8a65dc1f90e061e5) >> 128", - "source_mapping": { - "start": 3020, - "length": 59, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 46 - ], - "starting_column": 40, - "ending_column": 99 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - } - } - }, - { - "type": "node", - "name": "ratio = type()(uint256).max / ratio", - "source_mapping": { - "start": 3696, - "length": 33, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 54 - ], - "starting_column": 27, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - } - } - } - ], - "description": "TickMath.getSqrtRatioAtTick(int24) (lib/v3-core/contracts/libraries/TickMath.sol#26-61) performs a multiplication on the result of a division:\n\t- ratio = (ratio * 0xa9f746462d870fdf8a65dc1f90e061e5) >> 128 (lib/v3-core/contracts/libraries/TickMath.sol#46)\n\t- ratio = type()(uint256).max / ratio (lib/v3-core/contracts/libraries/TickMath.sol#54)\n", - "markdown": "[TickMath.getSqrtRatioAtTick(int24)](lib/v3-core/contracts/libraries/TickMath.sol#L26-L61) performs a multiplication on the result of a division:\n\t- [ratio = (ratio * 0xa9f746462d870fdf8a65dc1f90e061e5) >> 128](lib/v3-core/contracts/libraries/TickMath.sol#L46)\n\t- [ratio = type()(uint256).max / ratio](lib/v3-core/contracts/libraries/TickMath.sol#L54)\n", - "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L26-L61", - "id": "10d5f7f6961892bd6462b79f7f63ffdeb9ccdad321a21b8302ef6d4d68d57be6", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 741, - "length": 4127, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FullMath", - "source_mapping": { - "start": 354, - "length": 5163, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - }, - { - "type": "node", - "name": "denominator = denominator / twos", - "source_mapping": { - "start": 2873, - "length": 37, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 68 - ], - "starting_column": 17, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 741, - "length": 4127, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FullMath", - "source_mapping": { - "start": 354, - "length": 5163, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - }, - { - "type": "node", - "name": "inv *= 2 - denominator * inv", - "source_mapping": { - "start": 4310, - "length": 28, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 97 - ], - "starting_column": 13, - "ending_column": 41 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 741, - "length": 4127, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FullMath", - "source_mapping": { - "start": 354, - "length": 5163, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - } - ], - "description": "FullMath.mulDiv(uint256,uint256,uint256) (lib/v3-core/contracts/libraries/FullMath.sol#14-108) performs a multiplication on the result of a division:\n\t- denominator = denominator / twos (lib/v3-core/contracts/libraries/FullMath.sol#68)\n\t- inv *= 2 - denominator * inv (lib/v3-core/contracts/libraries/FullMath.sol#97)\n", - "markdown": "[FullMath.mulDiv(uint256,uint256,uint256)](lib/v3-core/contracts/libraries/FullMath.sol#L14-L108) performs a multiplication on the result of a division:\n\t- [denominator = denominator / twos](lib/v3-core/contracts/libraries/FullMath.sol#L68)\n\t- [inv *= 2 - denominator * inv](lib/v3-core/contracts/libraries/FullMath.sol#L97)\n", - "first_markdown_element": "lib/v3-core/contracts/libraries/FullMath.sol#L14-L108", - "id": "1ef88f8244a181a35e0f07c86dd3dbcd47a08f4e7344a3aa2246ce952b3c4782", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_calculateMinAmountOut", - "source_mapping": { - "start": 9735, - "length": 1525, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_calculateMinAmountOut(address,address,uint256,MinAmountOutData)" - } - }, - { - "type": "node", - "name": "toAmountUsdTargetDigits = (fromAmountUsdTargetDigits * _minAmountOutData.absoluteOrBPSValue) / PERCENT_DIVISOR", - "source_mapping": { - "start": 11000, - "length": 130, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 299, - 300 - ], - "starting_column": 9, - "ending_column": 97 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_calculateMinAmountOut", - "source_mapping": { - "start": 9735, - "length": 1525, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_calculateMinAmountOut(address,address,uint256,MinAmountOutData)" - } - } - } - }, - { - "type": "node", - "name": "minAmountOut = (toAmountUsdTargetDigits * 10 ** IERC20MetadataUpgradeable(_to).decimals()) / toPriceTargetDigits", - "source_mapping": { - "start": 11141, - "length": 112, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 302 - ], - "starting_column": 9, - "ending_column": 121 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_calculateMinAmountOut", - "source_mapping": { - "start": 9735, - "length": 1525, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_calculateMinAmountOut(address,address,uint256,MinAmountOutData)" - } - } - } - } - ], - "description": "ReaperSwapper._calculateMinAmountOut(address,address,uint256,MinAmountOutData) (lib/vault-v2/src/ReaperSwapper.sol#275-303) performs a multiplication on the result of a division:\n\t- toAmountUsdTargetDigits = (fromAmountUsdTargetDigits * _minAmountOutData.absoluteOrBPSValue) / PERCENT_DIVISOR (lib/vault-v2/src/ReaperSwapper.sol#299-300)\n\t- minAmountOut = (toAmountUsdTargetDigits * 10 ** IERC20MetadataUpgradeable(_to).decimals()) / toPriceTargetDigits (lib/vault-v2/src/ReaperSwapper.sol#302)\n", - "markdown": "[ReaperSwapper._calculateMinAmountOut(address,address,uint256,MinAmountOutData)](lib/vault-v2/src/ReaperSwapper.sol#L275-L303) performs a multiplication on the result of a division:\n\t- [toAmountUsdTargetDigits = (fromAmountUsdTargetDigits * _minAmountOutData.absoluteOrBPSValue) / PERCENT_DIVISOR](lib/vault-v2/src/ReaperSwapper.sol#L299-L300)\n\t- [minAmountOut = (toAmountUsdTargetDigits * 10 ** IERC20MetadataUpgradeable(_to).decimals()) / toPriceTargetDigits](lib/vault-v2/src/ReaperSwapper.sol#L302)\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L275-L303", - "id": "242b2c5d9da698fd1345e7823ad59a8dae0b459dab01039556e362d5ac2acd45", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_calculateMinAmountOut", - "source_mapping": { - "start": 9735, - "length": 1525, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_calculateMinAmountOut(address,address,uint256,MinAmountOutData)" - } - }, - { - "type": "node", - "name": "fromAmountUsdTargetDigits = (_amountIn * fromPriceTargetDigits) / 10 ** IERC20MetadataUpgradeable(_from).decimals()", - "source_mapping": { - "start": 10855, - "length": 135, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 297, - 298 - ], - "starting_column": 9, - "ending_column": 100 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_calculateMinAmountOut", - "source_mapping": { - "start": 9735, - "length": 1525, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_calculateMinAmountOut(address,address,uint256,MinAmountOutData)" - } - } - } - }, - { - "type": "node", - "name": "toAmountUsdTargetDigits = (fromAmountUsdTargetDigits * _minAmountOutData.absoluteOrBPSValue) / PERCENT_DIVISOR", - "source_mapping": { - "start": 11000, - "length": 130, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 299, - 300 - ], - "starting_column": 9, - "ending_column": 97 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_calculateMinAmountOut", - "source_mapping": { - "start": 9735, - "length": 1525, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_calculateMinAmountOut(address,address,uint256,MinAmountOutData)" - } - } - } - } - ], - "description": "ReaperSwapper._calculateMinAmountOut(address,address,uint256,MinAmountOutData) (lib/vault-v2/src/ReaperSwapper.sol#275-303) performs a multiplication on the result of a division:\n\t- fromAmountUsdTargetDigits = (_amountIn * fromPriceTargetDigits) / 10 ** IERC20MetadataUpgradeable(_from).decimals() (lib/vault-v2/src/ReaperSwapper.sol#297-298)\n\t- toAmountUsdTargetDigits = (fromAmountUsdTargetDigits * _minAmountOutData.absoluteOrBPSValue) / PERCENT_DIVISOR (lib/vault-v2/src/ReaperSwapper.sol#299-300)\n", - "markdown": "[ReaperSwapper._calculateMinAmountOut(address,address,uint256,MinAmountOutData)](lib/vault-v2/src/ReaperSwapper.sol#L275-L303) performs a multiplication on the result of a division:\n\t- [fromAmountUsdTargetDigits = (_amountIn * fromPriceTargetDigits) / 10 ** IERC20MetadataUpgradeable(_from).decimals()](lib/vault-v2/src/ReaperSwapper.sol#L297-L298)\n\t- [toAmountUsdTargetDigits = (fromAmountUsdTargetDigits * _minAmountOutData.absoluteOrBPSValue) / PERCENT_DIVISOR](lib/vault-v2/src/ReaperSwapper.sol#L299-L300)\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L275-L303", - "id": "2a964692a2c1e433645c4386705e83f412d01ced4ff15e6a7ed9f220abf91751", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 1678, - "length": 3925, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MathUpgradeable", - "source_mapping": { - "start": 202, - "length": 12313, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - }, - { - "type": "node", - "name": "denominator = denominator / twos", - "source_mapping": { - "start": 3757, - "length": 37, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 102 - ], - "starting_column": 17, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 1678, - "length": 3925, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MathUpgradeable", - "source_mapping": { - "start": 202, - "length": 12313, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - }, - { - "type": "node", - "name": "inverse *= 2 - denominator * inverse", - "source_mapping": { - "start": 4784, - "length": 36, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 122 - ], - "starting_column": 13, - "ending_column": 49 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 1678, - "length": 3925, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MathUpgradeable", - "source_mapping": { - "start": 202, - "length": 12313, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - } - ], - "description": "MathUpgradeable.mulDiv(uint256,uint256,uint256) (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#55-135) performs a multiplication on the result of a division:\n\t- denominator = denominator / twos (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#102)\n\t- inverse *= 2 - denominator * inverse (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#122)\n", - "markdown": "[MathUpgradeable.mulDiv(uint256,uint256,uint256)](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L55-L135) performs a multiplication on the result of a division:\n\t- [denominator = denominator / twos](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L102)\n\t- [inverse *= 2 - denominator * inverse](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L122)\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L55-L135", - "id": "333a89f3a8f64c59b998db6ddea224f5e5b6a3e18adc1cc4fe33353a9161141a", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - }, - { - "type": "node", - "name": "ratio = (ratio * 0xff2ea16466c96a3843ec78b326b52861) >> 128", - "source_mapping": { - "start": 2326, - "length": 59, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 39 - ], - "starting_column": 38, - "ending_column": 97 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - } - } - }, - { - "type": "node", - "name": "ratio = type()(uint256).max / ratio", - "source_mapping": { - "start": 3696, - "length": 33, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 54 - ], - "starting_column": 27, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - } - } - } - ], - "description": "TickMath.getSqrtRatioAtTick(int24) (lib/v3-core/contracts/libraries/TickMath.sol#26-61) performs a multiplication on the result of a division:\n\t- ratio = (ratio * 0xff2ea16466c96a3843ec78b326b52861) >> 128 (lib/v3-core/contracts/libraries/TickMath.sol#39)\n\t- ratio = type()(uint256).max / ratio (lib/v3-core/contracts/libraries/TickMath.sol#54)\n", - "markdown": "[TickMath.getSqrtRatioAtTick(int24)](lib/v3-core/contracts/libraries/TickMath.sol#L26-L61) performs a multiplication on the result of a division:\n\t- [ratio = (ratio * 0xff2ea16466c96a3843ec78b326b52861) >> 128](lib/v3-core/contracts/libraries/TickMath.sol#L39)\n\t- [ratio = type()(uint256).max / ratio](lib/v3-core/contracts/libraries/TickMath.sol#L54)\n", - "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L26-L61", - "id": "38c735599b34bd5dd6042b2b9001323fbfb2770b8c54e5257f95d17e496b58bc", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - }, - { - "type": "node", - "name": "ratio = (ratio * 0xf987a7253ac413176f2b074cf7815e54) >> 128", - "source_mapping": { - "start": 2622, - "length": 59, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 42 - ], - "starting_column": 39, - "ending_column": 98 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - } - } - }, - { - "type": "node", - "name": "ratio = type()(uint256).max / ratio", - "source_mapping": { - "start": 3696, - "length": 33, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 54 - ], - "starting_column": 27, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - } - } - } - ], - "description": "TickMath.getSqrtRatioAtTick(int24) (lib/v3-core/contracts/libraries/TickMath.sol#26-61) performs a multiplication on the result of a division:\n\t- ratio = (ratio * 0xf987a7253ac413176f2b074cf7815e54) >> 128 (lib/v3-core/contracts/libraries/TickMath.sol#42)\n\t- ratio = type()(uint256).max / ratio (lib/v3-core/contracts/libraries/TickMath.sol#54)\n", - "markdown": "[TickMath.getSqrtRatioAtTick(int24)](lib/v3-core/contracts/libraries/TickMath.sol#L26-L61) performs a multiplication on the result of a division:\n\t- [ratio = (ratio * 0xf987a7253ac413176f2b074cf7815e54) >> 128](lib/v3-core/contracts/libraries/TickMath.sol#L42)\n\t- [ratio = type()(uint256).max / ratio](lib/v3-core/contracts/libraries/TickMath.sol#L54)\n", - "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L26-L61", - "id": "3b44809d05674d486bb9e43f2b5c6a6f1b3cfbf822a51d78672a6efcaaf27060", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_getSwapAmountUniV2", - "source_mapping": { - "start": 3579, - "length": 603, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "UniV2Mixin", - "source_mapping": { - "start": 234, - "length": 4634, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_getSwapAmountUniV2(uint256,uint256,uint256,address)" - } - }, - { - "type": "node", - "name": "halfInvestment = _investmentA / 2", - "source_mapping": { - "start": 3766, - "length": 41, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 96 - ], - "starting_column": 9, - "ending_column": 50 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_getSwapAmountUniV2", - "source_mapping": { - "start": 3579, - "length": 603, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "UniV2Mixin", - "source_mapping": { - "start": 234, - "length": 4634, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_getSwapAmountUniV2(uint256,uint256,uint256,address)" - } - } - } - }, - { - "type": "node", - "name": "swapAmount = _investmentA - (Babylonian.sqrt((halfInvestment * halfInvestment * nominator) / denominator))", - "source_mapping": { - "start": 4069, - "length": 106, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 100 - ], - "starting_column": 9, - "ending_column": 115 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_getSwapAmountUniV2", - "source_mapping": { - "start": 3579, - "length": 603, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "UniV2Mixin", - "source_mapping": { - "start": 234, - "length": 4634, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_getSwapAmountUniV2(uint256,uint256,uint256,address)" - } - } - } - } - ], - "description": "UniV2Mixin._getSwapAmountUniV2(uint256,uint256,uint256,address) (lib/vault-v2/src/mixins/UniV2Mixin.sol#91-101) performs a multiplication on the result of a division:\n\t- halfInvestment = _investmentA / 2 (lib/vault-v2/src/mixins/UniV2Mixin.sol#96)\n\t- swapAmount = _investmentA - (Babylonian.sqrt((halfInvestment * halfInvestment * nominator) / denominator)) (lib/vault-v2/src/mixins/UniV2Mixin.sol#100)\n", - "markdown": "[UniV2Mixin._getSwapAmountUniV2(uint256,uint256,uint256,address)](lib/vault-v2/src/mixins/UniV2Mixin.sol#L91-L101) performs a multiplication on the result of a division:\n\t- [halfInvestment = _investmentA / 2](lib/vault-v2/src/mixins/UniV2Mixin.sol#L96)\n\t- [swapAmount = _investmentA - (Babylonian.sqrt((halfInvestment * halfInvestment * nominator) / denominator))](lib/vault-v2/src/mixins/UniV2Mixin.sol#L100)\n", - "first_markdown_element": "lib/vault-v2/src/mixins/UniV2Mixin.sol#L91-L101", - "id": "3bdf8bff47fabfb38bc200b9841d43ccc92af4d55144953616bc8b804bbb4190", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - }, - { - "type": "node", - "name": "ratio = (ratio * 0xfe5dee046a99a2a811c461f1969c3053) >> 128", - "source_mapping": { - "start": 2424, - "length": 59, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 40 - ], - "starting_column": 38, - "ending_column": 97 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - } - } - }, - { - "type": "node", - "name": "ratio = type()(uint256).max / ratio", - "source_mapping": { - "start": 3696, - "length": 33, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 54 - ], - "starting_column": 27, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - } - } - } - ], - "description": "TickMath.getSqrtRatioAtTick(int24) (lib/v3-core/contracts/libraries/TickMath.sol#26-61) performs a multiplication on the result of a division:\n\t- ratio = (ratio * 0xfe5dee046a99a2a811c461f1969c3053) >> 128 (lib/v3-core/contracts/libraries/TickMath.sol#40)\n\t- ratio = type()(uint256).max / ratio (lib/v3-core/contracts/libraries/TickMath.sol#54)\n", - "markdown": "[TickMath.getSqrtRatioAtTick(int24)](lib/v3-core/contracts/libraries/TickMath.sol#L26-L61) performs a multiplication on the result of a division:\n\t- [ratio = (ratio * 0xfe5dee046a99a2a811c461f1969c3053) >> 128](lib/v3-core/contracts/libraries/TickMath.sol#L40)\n\t- [ratio = type()(uint256).max / ratio](lib/v3-core/contracts/libraries/TickMath.sol#L54)\n", - "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L26-L61", - "id": "3fe811ee3f7a15306c799d900ce83ea25b94a798fc2fbdbeff7c41a9d44104eb", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 1678, - "length": 3925, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MathUpgradeable", - "source_mapping": { - "start": 202, - "length": 12313, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - }, - { - "type": "node", - "name": "denominator = denominator / twos", - "source_mapping": { - "start": 3757, - "length": 37, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 102 - ], - "starting_column": 17, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 1678, - "length": 3925, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MathUpgradeable", - "source_mapping": { - "start": 202, - "length": 12313, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - }, - { - "type": "node", - "name": "inverse *= 2 - denominator * inverse", - "source_mapping": { - "start": 4854, - "length": 36, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 123 - ], - "starting_column": 13, - "ending_column": 49 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 1678, - "length": 3925, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MathUpgradeable", - "source_mapping": { - "start": 202, - "length": 12313, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - } - ], - "description": "MathUpgradeable.mulDiv(uint256,uint256,uint256) (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#55-135) performs a multiplication on the result of a division:\n\t- denominator = denominator / twos (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#102)\n\t- inverse *= 2 - denominator * inverse (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#123)\n", - "markdown": "[MathUpgradeable.mulDiv(uint256,uint256,uint256)](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L55-L135) performs a multiplication on the result of a division:\n\t- [denominator = denominator / twos](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L102)\n\t- [inverse *= 2 - denominator * inverse](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L123)\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L55-L135", - "id": "4bd78131744a4ae01deecf9f70f7caa639f217aabb6958b7502762971ed7992c", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - }, - { - "type": "node", - "name": "ratio = (ratio * 0xfff2e50f5f656932ef12357cf3c7fdcc) >> 128", - "source_mapping": { - "start": 1935, - "length": 59, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 35 - ], - "starting_column": 37, - "ending_column": 96 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - } - } - }, - { - "type": "node", - "name": "ratio = type()(uint256).max / ratio", - "source_mapping": { - "start": 3696, - "length": 33, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 54 - ], - "starting_column": 27, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - } - } - } - ], - "description": "TickMath.getSqrtRatioAtTick(int24) (lib/v3-core/contracts/libraries/TickMath.sol#26-61) performs a multiplication on the result of a division:\n\t- ratio = (ratio * 0xfff2e50f5f656932ef12357cf3c7fdcc) >> 128 (lib/v3-core/contracts/libraries/TickMath.sol#35)\n\t- ratio = type()(uint256).max / ratio (lib/v3-core/contracts/libraries/TickMath.sol#54)\n", - "markdown": "[TickMath.getSqrtRatioAtTick(int24)](lib/v3-core/contracts/libraries/TickMath.sol#L26-L61) performs a multiplication on the result of a division:\n\t- [ratio = (ratio * 0xfff2e50f5f656932ef12357cf3c7fdcc) >> 128](lib/v3-core/contracts/libraries/TickMath.sol#L35)\n\t- [ratio = type()(uint256).max / ratio](lib/v3-core/contracts/libraries/TickMath.sol#L54)\n", - "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L26-L61", - "id": "4c4b17533f204364045c6f68db370e77b5ad7364eba97f64430b1d06a53fcec5", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - }, - { - "type": "node", - "name": "ratio = (ratio * 0xfff97272373d413259a46990580e213a) >> 128", - "source_mapping": { - "start": 1838, - "length": 59, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 34 - ], - "starting_column": 37, - "ending_column": 96 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - } - } - }, - { - "type": "node", - "name": "ratio = type()(uint256).max / ratio", - "source_mapping": { - "start": 3696, - "length": 33, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 54 - ], - "starting_column": 27, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - } - } - } - ], - "description": "TickMath.getSqrtRatioAtTick(int24) (lib/v3-core/contracts/libraries/TickMath.sol#26-61) performs a multiplication on the result of a division:\n\t- ratio = (ratio * 0xfff97272373d413259a46990580e213a) >> 128 (lib/v3-core/contracts/libraries/TickMath.sol#34)\n\t- ratio = type()(uint256).max / ratio (lib/v3-core/contracts/libraries/TickMath.sol#54)\n", - "markdown": "[TickMath.getSqrtRatioAtTick(int24)](lib/v3-core/contracts/libraries/TickMath.sol#L26-L61) performs a multiplication on the result of a division:\n\t- [ratio = (ratio * 0xfff97272373d413259a46990580e213a) >> 128](lib/v3-core/contracts/libraries/TickMath.sol#L34)\n\t- [ratio = type()(uint256).max / ratio](lib/v3-core/contracts/libraries/TickMath.sol#L54)\n", - "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L26-L61", - "id": "4fc11cac2f6896d1fd2ae2941701fcab0e310d7f0867ed97cc5b3e8c23efcba4", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_getSwapAmountVelo", - "source_mapping": { - "start": 2636, - "length": 541, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VeloSolidMixin", - "source_mapping": { - "start": 313, - "length": 4635, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_getSwapAmountVelo(IVeloPair,uint256,uint256,uint256,address)" - } - }, - { - "type": "node", - "name": "halfInvestment = investmentA / 2", - "source_mapping": { - "start": 2834, - "length": 40, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 78 - ], - "starting_column": 9, - "ending_column": 49 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_getSwapAmountVelo", - "source_mapping": { - "start": 2636, - "length": 541, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VeloSolidMixin", - "source_mapping": { - "start": 313, - "length": 4635, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_getSwapAmountVelo(IVeloPair,uint256,uint256,uint256,address)" - } - } - } - }, - { - "type": "node", - "name": "swapAmount = investmentA - Babylonian.sqrt((halfInvestment * halfInvestment * numerator) / denominator)", - "source_mapping": { - "start": 3067, - "length": 103, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 81 - ], - "starting_column": 9, - "ending_column": 112 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_getSwapAmountVelo", - "source_mapping": { - "start": 2636, - "length": 541, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VeloSolidMixin", - "source_mapping": { - "start": 313, - "length": 4635, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_getSwapAmountVelo(IVeloPair,uint256,uint256,uint256,address)" - } - } - } - } - ], - "description": "VeloSolidMixin._getSwapAmountVelo(IVeloPair,uint256,uint256,uint256,address) (lib/vault-v2/src/mixins/VeloSolidMixin.sol#73-82) performs a multiplication on the result of a division:\n\t- halfInvestment = investmentA / 2 (lib/vault-v2/src/mixins/VeloSolidMixin.sol#78)\n\t- swapAmount = investmentA - Babylonian.sqrt((halfInvestment * halfInvestment * numerator) / denominator) (lib/vault-v2/src/mixins/VeloSolidMixin.sol#81)\n", - "markdown": "[VeloSolidMixin._getSwapAmountVelo(IVeloPair,uint256,uint256,uint256,address)](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L73-L82) performs a multiplication on the result of a division:\n\t- [halfInvestment = investmentA / 2](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L78)\n\t- [swapAmount = investmentA - Babylonian.sqrt((halfInvestment * halfInvestment * numerator) / denominator)](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L81)\n", - "first_markdown_element": "lib/vault-v2/src/mixins/VeloSolidMixin.sol#L73-L82", - "id": "634d14708bdcf209cb732dd2453064bc4232343cec20e4c4af1d0a5345cc9d11", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - }, - { - "type": "node", - "name": "ratio = (ratio * 0x31be135f97d08fd981231505542fcfa6) >> 128", - "source_mapping": { - "start": 3220, - "length": 59, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 48 - ], - "starting_column": 40, - "ending_column": 99 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - } - } - }, - { - "type": "node", - "name": "ratio = type()(uint256).max / ratio", - "source_mapping": { - "start": 3696, - "length": 33, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 54 - ], - "starting_column": 27, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - } - } - } - ], - "description": "TickMath.getSqrtRatioAtTick(int24) (lib/v3-core/contracts/libraries/TickMath.sol#26-61) performs a multiplication on the result of a division:\n\t- ratio = (ratio * 0x31be135f97d08fd981231505542fcfa6) >> 128 (lib/v3-core/contracts/libraries/TickMath.sol#48)\n\t- ratio = type()(uint256).max / ratio (lib/v3-core/contracts/libraries/TickMath.sol#54)\n", - "markdown": "[TickMath.getSqrtRatioAtTick(int24)](lib/v3-core/contracts/libraries/TickMath.sol#L26-L61) performs a multiplication on the result of a division:\n\t- [ratio = (ratio * 0x31be135f97d08fd981231505542fcfa6) >> 128](lib/v3-core/contracts/libraries/TickMath.sol#L48)\n\t- [ratio = type()(uint256).max / ratio](lib/v3-core/contracts/libraries/TickMath.sol#L54)\n", - "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L26-L61", - "id": "7236a33a1c38547e2d6016c50a0cff9ccffeabd09475c57376ecb4a0f0d579fa", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 1678, - "length": 3925, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MathUpgradeable", - "source_mapping": { - "start": 202, - "length": 12313, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - }, - { - "type": "node", - "name": "denominator = denominator / twos", - "source_mapping": { - "start": 3757, - "length": 37, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 102 - ], - "starting_column": 17, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 1678, - "length": 3925, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MathUpgradeable", - "source_mapping": { - "start": 202, - "length": 12313, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - }, - { - "type": "node", - "name": "inverse *= 2 - denominator * inverse", - "source_mapping": { - "start": 4994, - "length": 36, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 125 - ], - "starting_column": 13, - "ending_column": 49 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 1678, - "length": 3925, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MathUpgradeable", - "source_mapping": { - "start": 202, - "length": 12313, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - } - ], - "description": "MathUpgradeable.mulDiv(uint256,uint256,uint256) (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#55-135) performs a multiplication on the result of a division:\n\t- denominator = denominator / twos (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#102)\n\t- inverse *= 2 - denominator * inverse (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#125)\n", - "markdown": "[MathUpgradeable.mulDiv(uint256,uint256,uint256)](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L55-L135) performs a multiplication on the result of a division:\n\t- [denominator = denominator / twos](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L102)\n\t- [inverse *= 2 - denominator * inverse](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L125)\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L55-L135", - "id": "8e550aa740cfcf771bd2bf114b325d4e59d89cb74eda337db615a02086ec0332", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - }, - { - "type": "node", - "name": "ratio = (ratio * 0x5d6af8dedb81196699c329225ee604) >> 128", - "source_mapping": { - "start": 3421, - "length": 57, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 50 - ], - "starting_column": 41, - "ending_column": 98 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - } - } - }, - { - "type": "node", - "name": "ratio = type()(uint256).max / ratio", - "source_mapping": { - "start": 3696, - "length": 33, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 54 - ], - "starting_column": 27, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - } - } - } - ], - "description": "TickMath.getSqrtRatioAtTick(int24) (lib/v3-core/contracts/libraries/TickMath.sol#26-61) performs a multiplication on the result of a division:\n\t- ratio = (ratio * 0x5d6af8dedb81196699c329225ee604) >> 128 (lib/v3-core/contracts/libraries/TickMath.sol#50)\n\t- ratio = type()(uint256).max / ratio (lib/v3-core/contracts/libraries/TickMath.sol#54)\n", - "markdown": "[TickMath.getSqrtRatioAtTick(int24)](lib/v3-core/contracts/libraries/TickMath.sol#L26-L61) performs a multiplication on the result of a division:\n\t- [ratio = (ratio * 0x5d6af8dedb81196699c329225ee604) >> 128](lib/v3-core/contracts/libraries/TickMath.sol#L50)\n\t- [ratio = type()(uint256).max / ratio](lib/v3-core/contracts/libraries/TickMath.sol#L54)\n", - "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L26-L61", - "id": "976e6f1a5489c4b684ba80b7f2991c4f073a52e0a02f101aff98abe7c966e58b", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 741, - "length": 4127, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FullMath", - "source_mapping": { - "start": 354, - "length": 5163, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - }, - { - "type": "node", - "name": "denominator = denominator / twos", - "source_mapping": { - "start": 2873, - "length": 37, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 68 - ], - "starting_column": 17, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 741, - "length": 4127, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FullMath", - "source_mapping": { - "start": 354, - "length": 5163, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - }, - { - "type": "node", - "name": "inv *= 2 - denominator * inv", - "source_mapping": { - "start": 4183, - "length": 28, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 95 - ], - "starting_column": 13, - "ending_column": 41 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 741, - "length": 4127, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FullMath", - "source_mapping": { - "start": 354, - "length": 5163, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - } - ], - "description": "FullMath.mulDiv(uint256,uint256,uint256) (lib/v3-core/contracts/libraries/FullMath.sol#14-108) performs a multiplication on the result of a division:\n\t- denominator = denominator / twos (lib/v3-core/contracts/libraries/FullMath.sol#68)\n\t- inv *= 2 - denominator * inv (lib/v3-core/contracts/libraries/FullMath.sol#95)\n", - "markdown": "[FullMath.mulDiv(uint256,uint256,uint256)](lib/v3-core/contracts/libraries/FullMath.sol#L14-L108) performs a multiplication on the result of a division:\n\t- [denominator = denominator / twos](lib/v3-core/contracts/libraries/FullMath.sol#L68)\n\t- [inv *= 2 - denominator * inv](lib/v3-core/contracts/libraries/FullMath.sol#L95)\n", - "first_markdown_element": "lib/v3-core/contracts/libraries/FullMath.sol#L14-L108", - "id": "9c4b77f30035cd07f16f5da3c7df4ce22186d431383be67fc63102f53f1778be", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - }, - { - "type": "node", - "name": "ratio = (ratio * 0xffe5caca7e10e4e61c3624eaa0941cd0) >> 128", - "source_mapping": { - "start": 2032, - "length": 59, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 36 - ], - "starting_column": 37, - "ending_column": 96 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - } - } - }, - { - "type": "node", - "name": "ratio = type()(uint256).max / ratio", - "source_mapping": { - "start": 3696, - "length": 33, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 54 - ], - "starting_column": 27, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - } - } - } - ], - "description": "TickMath.getSqrtRatioAtTick(int24) (lib/v3-core/contracts/libraries/TickMath.sol#26-61) performs a multiplication on the result of a division:\n\t- ratio = (ratio * 0xffe5caca7e10e4e61c3624eaa0941cd0) >> 128 (lib/v3-core/contracts/libraries/TickMath.sol#36)\n\t- ratio = type()(uint256).max / ratio (lib/v3-core/contracts/libraries/TickMath.sol#54)\n", - "markdown": "[TickMath.getSqrtRatioAtTick(int24)](lib/v3-core/contracts/libraries/TickMath.sol#L26-L61) performs a multiplication on the result of a division:\n\t- [ratio = (ratio * 0xffe5caca7e10e4e61c3624eaa0941cd0) >> 128](lib/v3-core/contracts/libraries/TickMath.sol#L36)\n\t- [ratio = type()(uint256).max / ratio](lib/v3-core/contracts/libraries/TickMath.sol#L54)\n", - "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L26-L61", - "id": "9d5a00343fb3299a12df278a7fcc4e8bba171415a0cddc32a3c8b1292da5e020", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "rpow", - "source_mapping": { - "start": 2774, - "length": 2778, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FixedPointMathLib", - "source_mapping": { - "start": 341, - "length": 9712, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "rpow(uint256,uint256,uint256)" - } - }, - { - "type": "node", - "name": "x = xxRound_rpow_asm_0 / scalar", - "source_mapping": { - "start": 4594, - "length": 25, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 129 - ], - "starting_column": 21, - "ending_column": 46 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "rpow", - "source_mapping": { - "start": 2774, - "length": 2778, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FixedPointMathLib", - "source_mapping": { - "start": 341, - "length": 9712, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "rpow(uint256,uint256,uint256)" - } - } - } - }, - { - "type": "node", - "name": "zx_rpow_asm_0 = z * x", - "source_mapping": { - "start": 4759, - "length": 19, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 134 - ], - "starting_column": 25, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "rpow", - "source_mapping": { - "start": 2774, - "length": 2778, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FixedPointMathLib", - "source_mapping": { - "start": 341, - "length": 9712, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "rpow(uint256,uint256,uint256)" - } - } - } - } - ], - "description": "FixedPointMathLib.rpow(uint256,uint256,uint256) (lib/solmate/src/utils/FixedPointMathLib.sol#71-158) performs a multiplication on the result of a division:\n\t- x = xxRound_rpow_asm_0 / scalar (lib/solmate/src/utils/FixedPointMathLib.sol#129)\n\t- zx_rpow_asm_0 = z * x (lib/solmate/src/utils/FixedPointMathLib.sol#134)\n", - "markdown": "[FixedPointMathLib.rpow(uint256,uint256,uint256)](lib/solmate/src/utils/FixedPointMathLib.sol#L71-L158) performs a multiplication on the result of a division:\n\t- [x = xxRound_rpow_asm_0 / scalar](lib/solmate/src/utils/FixedPointMathLib.sol#L129)\n\t- [zx_rpow_asm_0 = z * x](lib/solmate/src/utils/FixedPointMathLib.sol#L134)\n", - "first_markdown_element": "lib/solmate/src/utils/FixedPointMathLib.sol#L71-L158", - "id": "a6857f603efc155f5d59590b122e576c03098950016b0ca7391a75409969c72a", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - }, - { - "type": "node", - "name": "ratio = (ratio * 0xffcb9843d60f6159c9db58835c926644) >> 128", - "source_mapping": { - "start": 2130, - "length": 59, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 37 - ], - "starting_column": 38, - "ending_column": 97 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - } - } - }, - { - "type": "node", - "name": "ratio = type()(uint256).max / ratio", - "source_mapping": { - "start": 3696, - "length": 33, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 54 - ], - "starting_column": 27, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - } - } - } - ], - "description": "TickMath.getSqrtRatioAtTick(int24) (lib/v3-core/contracts/libraries/TickMath.sol#26-61) performs a multiplication on the result of a division:\n\t- ratio = (ratio * 0xffcb9843d60f6159c9db58835c926644) >> 128 (lib/v3-core/contracts/libraries/TickMath.sol#37)\n\t- ratio = type()(uint256).max / ratio (lib/v3-core/contracts/libraries/TickMath.sol#54)\n", - "markdown": "[TickMath.getSqrtRatioAtTick(int24)](lib/v3-core/contracts/libraries/TickMath.sol#L26-L61) performs a multiplication on the result of a division:\n\t- [ratio = (ratio * 0xffcb9843d60f6159c9db58835c926644) >> 128](lib/v3-core/contracts/libraries/TickMath.sol#L37)\n\t- [ratio = type()(uint256).max / ratio](lib/v3-core/contracts/libraries/TickMath.sol#L54)\n", - "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L26-L61", - "id": "a91bd7bdec9d229a2e8b7757852ccf6bfbb0c1b82e2f213c0e87ea7d1501339c", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 1678, - "length": 3925, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MathUpgradeable", - "source_mapping": { - "start": 202, - "length": 12313, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - }, - { - "type": "node", - "name": "prod0 = prod0 / twos", - "source_mapping": { - "start": 3861, - "length": 25, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 105 - ], - "starting_column": 17, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 1678, - "length": 3925, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MathUpgradeable", - "source_mapping": { - "start": 202, - "length": 12313, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - }, - { - "type": "node", - "name": "result = prod0 * inverse", - "source_mapping": { - "start": 5535, - "length": 24, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 132 - ], - "starting_column": 13, - "ending_column": 37 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 1678, - "length": 3925, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MathUpgradeable", - "source_mapping": { - "start": 202, - "length": 12313, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - } - ], - "description": "MathUpgradeable.mulDiv(uint256,uint256,uint256) (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#55-135) performs a multiplication on the result of a division:\n\t- prod0 = prod0 / twos (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#105)\n\t- result = prod0 * inverse (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#132)\n", - "markdown": "[MathUpgradeable.mulDiv(uint256,uint256,uint256)](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L55-L135) performs a multiplication on the result of a division:\n\t- [prod0 = prod0 / twos](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L105)\n\t- [result = prod0 * inverse](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L132)\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L55-L135", - "id": "b87038aa85530f57d3c926dfb00303da9021db0b4df6e6e2a16775cb835b5245", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 741, - "length": 4127, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FullMath", - "source_mapping": { - "start": 354, - "length": 5163, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - }, - { - "type": "node", - "name": "denominator = denominator / twos", - "source_mapping": { - "start": 2873, - "length": 37, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 68 - ], - "starting_column": 17, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 741, - "length": 4127, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FullMath", - "source_mapping": { - "start": 354, - "length": 5163, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - }, - { - "type": "node", - "name": "inv *= 2 - denominator * inv", - "source_mapping": { - "start": 4120, - "length": 28, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 94 - ], - "starting_column": 13, - "ending_column": 41 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 741, - "length": 4127, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FullMath", - "source_mapping": { - "start": 354, - "length": 5163, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - } - ], - "description": "FullMath.mulDiv(uint256,uint256,uint256) (lib/v3-core/contracts/libraries/FullMath.sol#14-108) performs a multiplication on the result of a division:\n\t- denominator = denominator / twos (lib/v3-core/contracts/libraries/FullMath.sol#68)\n\t- inv *= 2 - denominator * inv (lib/v3-core/contracts/libraries/FullMath.sol#94)\n", - "markdown": "[FullMath.mulDiv(uint256,uint256,uint256)](lib/v3-core/contracts/libraries/FullMath.sol#L14-L108) performs a multiplication on the result of a division:\n\t- [denominator = denominator / twos](lib/v3-core/contracts/libraries/FullMath.sol#L68)\n\t- [inv *= 2 - denominator * inv](lib/v3-core/contracts/libraries/FullMath.sol#L94)\n", - "first_markdown_element": "lib/v3-core/contracts/libraries/FullMath.sol#L14-L108", - "id": "bab014d5399775b500e5a02bedb24be936428d7c221c43ea46172f1944c25875", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 741, - "length": 4127, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FullMath", - "source_mapping": { - "start": 354, - "length": 5163, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - }, - { - "type": "node", - "name": "denominator = denominator / twos", - "source_mapping": { - "start": 2873, - "length": 37, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 68 - ], - "starting_column": 17, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 741, - "length": 4127, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FullMath", - "source_mapping": { - "start": 354, - "length": 5163, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - }, - { - "type": "node", - "name": "inv = (3 * denominator) ^ 2", - "source_mapping": { - "start": 3729, - "length": 35, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 88 - ], - "starting_column": 13, - "ending_column": 48 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 741, - "length": 4127, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FullMath", - "source_mapping": { - "start": 354, - "length": 5163, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - } - ], - "description": "FullMath.mulDiv(uint256,uint256,uint256) (lib/v3-core/contracts/libraries/FullMath.sol#14-108) performs a multiplication on the result of a division:\n\t- denominator = denominator / twos (lib/v3-core/contracts/libraries/FullMath.sol#68)\n\t- inv = (3 * denominator) ^ 2 (lib/v3-core/contracts/libraries/FullMath.sol#88)\n", - "markdown": "[FullMath.mulDiv(uint256,uint256,uint256)](lib/v3-core/contracts/libraries/FullMath.sol#L14-L108) performs a multiplication on the result of a division:\n\t- [denominator = denominator / twos](lib/v3-core/contracts/libraries/FullMath.sol#L68)\n\t- [inv = (3 * denominator) ^ 2](lib/v3-core/contracts/libraries/FullMath.sol#L88)\n", - "first_markdown_element": "lib/v3-core/contracts/libraries/FullMath.sol#L14-L108", - "id": "bb1576372add81b6d335a9795a84d6f47581915cf81761e1130215f4fffec15f", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 741, - "length": 4127, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FullMath", - "source_mapping": { - "start": 354, - "length": 5163, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - }, - { - "type": "node", - "name": "denominator = denominator / twos", - "source_mapping": { - "start": 2873, - "length": 37, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 68 - ], - "starting_column": 17, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 741, - "length": 4127, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FullMath", - "source_mapping": { - "start": 354, - "length": 5163, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - }, - { - "type": "node", - "name": "inv *= 2 - denominator * inv", - "source_mapping": { - "start": 3995, - "length": 28, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 92 - ], - "starting_column": 13, - "ending_column": 41 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 741, - "length": 4127, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FullMath", - "source_mapping": { - "start": 354, - "length": 5163, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - } - ], - "description": "FullMath.mulDiv(uint256,uint256,uint256) (lib/v3-core/contracts/libraries/FullMath.sol#14-108) performs a multiplication on the result of a division:\n\t- denominator = denominator / twos (lib/v3-core/contracts/libraries/FullMath.sol#68)\n\t- inv *= 2 - denominator * inv (lib/v3-core/contracts/libraries/FullMath.sol#92)\n", - "markdown": "[FullMath.mulDiv(uint256,uint256,uint256)](lib/v3-core/contracts/libraries/FullMath.sol#L14-L108) performs a multiplication on the result of a division:\n\t- [denominator = denominator / twos](lib/v3-core/contracts/libraries/FullMath.sol#L68)\n\t- [inv *= 2 - denominator * inv](lib/v3-core/contracts/libraries/FullMath.sol#L92)\n", - "first_markdown_element": "lib/v3-core/contracts/libraries/FullMath.sol#L14-L108", - "id": "c0ce32fa53af66ddd6aa23871a339ee9773df422e6ee599a3a5394cf32887501", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - }, - { - "type": "node", - "name": "ratio = (ratio * 0xe7159475a2c29b7443b29c7fa6e889d9) >> 128", - "source_mapping": { - "start": 2820, - "length": 59, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 44 - ], - "starting_column": 39, - "ending_column": 98 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - } - } - }, - { - "type": "node", - "name": "ratio = type()(uint256).max / ratio", - "source_mapping": { - "start": 3696, - "length": 33, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 54 - ], - "starting_column": 27, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - } - } - } - ], - "description": "TickMath.getSqrtRatioAtTick(int24) (lib/v3-core/contracts/libraries/TickMath.sol#26-61) performs a multiplication on the result of a division:\n\t- ratio = (ratio * 0xe7159475a2c29b7443b29c7fa6e889d9) >> 128 (lib/v3-core/contracts/libraries/TickMath.sol#44)\n\t- ratio = type()(uint256).max / ratio (lib/v3-core/contracts/libraries/TickMath.sol#54)\n", - "markdown": "[TickMath.getSqrtRatioAtTick(int24)](lib/v3-core/contracts/libraries/TickMath.sol#L26-L61) performs a multiplication on the result of a division:\n\t- [ratio = (ratio * 0xe7159475a2c29b7443b29c7fa6e889d9) >> 128](lib/v3-core/contracts/libraries/TickMath.sol#L44)\n\t- [ratio = type()(uint256).max / ratio](lib/v3-core/contracts/libraries/TickMath.sol#L54)\n", - "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L26-L61", - "id": "c7038675fff7d70121645d78c43c65fcb0265d0211269a5f5d8cae28f85688e8", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - }, - { - "type": "node", - "name": "ratio = (ratio * 0xf3392b0822b70005940c7a398e4b70f3) >> 128", - "source_mapping": { - "start": 2721, - "length": 59, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 43 - ], - "starting_column": 39, - "ending_column": 98 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - } - } - }, - { - "type": "node", - "name": "ratio = type()(uint256).max / ratio", - "source_mapping": { - "start": 3696, - "length": 33, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 54 - ], - "starting_column": 27, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - } - } - } - ], - "description": "TickMath.getSqrtRatioAtTick(int24) (lib/v3-core/contracts/libraries/TickMath.sol#26-61) performs a multiplication on the result of a division:\n\t- ratio = (ratio * 0xf3392b0822b70005940c7a398e4b70f3) >> 128 (lib/v3-core/contracts/libraries/TickMath.sol#43)\n\t- ratio = type()(uint256).max / ratio (lib/v3-core/contracts/libraries/TickMath.sol#54)\n", - "markdown": "[TickMath.getSqrtRatioAtTick(int24)](lib/v3-core/contracts/libraries/TickMath.sol#L26-L61) performs a multiplication on the result of a division:\n\t- [ratio = (ratio * 0xf3392b0822b70005940c7a398e4b70f3) >> 128](lib/v3-core/contracts/libraries/TickMath.sol#L43)\n\t- [ratio = type()(uint256).max / ratio](lib/v3-core/contracts/libraries/TickMath.sol#L54)\n", - "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L26-L61", - "id": "cb6b982337b1749cacc0e54aa2a12b46da2952e9f90b918464706a96e177d317", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 741, - "length": 4127, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FullMath", - "source_mapping": { - "start": 354, - "length": 5163, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - }, - { - "type": "node", - "name": "denominator = denominator / twos", - "source_mapping": { - "start": 2873, - "length": 37, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 68 - ], - "starting_column": 17, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 741, - "length": 4127, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FullMath", - "source_mapping": { - "start": 354, - "length": 5163, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - }, - { - "type": "node", - "name": "inv *= 2 - denominator * inv", - "source_mapping": { - "start": 4246, - "length": 28, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 96 - ], - "starting_column": 13, - "ending_column": 41 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 741, - "length": 4127, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FullMath", - "source_mapping": { - "start": 354, - "length": 5163, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - } - ], - "description": "FullMath.mulDiv(uint256,uint256,uint256) (lib/v3-core/contracts/libraries/FullMath.sol#14-108) performs a multiplication on the result of a division:\n\t- denominator = denominator / twos (lib/v3-core/contracts/libraries/FullMath.sol#68)\n\t- inv *= 2 - denominator * inv (lib/v3-core/contracts/libraries/FullMath.sol#96)\n", - "markdown": "[FullMath.mulDiv(uint256,uint256,uint256)](lib/v3-core/contracts/libraries/FullMath.sol#L14-L108) performs a multiplication on the result of a division:\n\t- [denominator = denominator / twos](lib/v3-core/contracts/libraries/FullMath.sol#L68)\n\t- [inv *= 2 - denominator * inv](lib/v3-core/contracts/libraries/FullMath.sol#L96)\n", - "first_markdown_element": "lib/v3-core/contracts/libraries/FullMath.sol#L14-L108", - "id": "d1dea53850dd9403825e78e37c8a0b863bfe4a7587d2b6caa6f92988c30f6d65", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - }, - { - "type": "node", - "name": "ratio = (ratio * 0x2216e584f5fa1ea926041bedfe98) >> 128", - "source_mapping": { - "start": 3520, - "length": 55, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 51 - ], - "starting_column": 41, - "ending_column": 96 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - } - } - }, - { - "type": "node", - "name": "ratio = type()(uint256).max / ratio", - "source_mapping": { - "start": 3696, - "length": 33, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 54 - ], - "starting_column": 27, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - } - } - } - ], - "description": "TickMath.getSqrtRatioAtTick(int24) (lib/v3-core/contracts/libraries/TickMath.sol#26-61) performs a multiplication on the result of a division:\n\t- ratio = (ratio * 0x2216e584f5fa1ea926041bedfe98) >> 128 (lib/v3-core/contracts/libraries/TickMath.sol#51)\n\t- ratio = type()(uint256).max / ratio (lib/v3-core/contracts/libraries/TickMath.sol#54)\n", - "markdown": "[TickMath.getSqrtRatioAtTick(int24)](lib/v3-core/contracts/libraries/TickMath.sol#L26-L61) performs a multiplication on the result of a division:\n\t- [ratio = (ratio * 0x2216e584f5fa1ea926041bedfe98) >> 128](lib/v3-core/contracts/libraries/TickMath.sol#L51)\n\t- [ratio = type()(uint256).max / ratio](lib/v3-core/contracts/libraries/TickMath.sol#L54)\n", - "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L26-L61", - "id": "d2ed7da21b17178cd05780daf6db15d5eecc0d32e25943b91c66207f259ed6c1", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 1678, - "length": 3925, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MathUpgradeable", - "source_mapping": { - "start": 202, - "length": 12313, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - }, - { - "type": "node", - "name": "denominator = denominator / twos", - "source_mapping": { - "start": 3757, - "length": 37, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 102 - ], - "starting_column": 17, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 1678, - "length": 3925, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MathUpgradeable", - "source_mapping": { - "start": 202, - "length": 12313, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - }, - { - "type": "node", - "name": "inverse *= 2 - denominator * inverse", - "source_mapping": { - "start": 5065, - "length": 36, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 126 - ], - "starting_column": 13, - "ending_column": 49 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 1678, - "length": 3925, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MathUpgradeable", - "source_mapping": { - "start": 202, - "length": 12313, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - } - ], - "description": "MathUpgradeable.mulDiv(uint256,uint256,uint256) (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#55-135) performs a multiplication on the result of a division:\n\t- denominator = denominator / twos (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#102)\n\t- inverse *= 2 - denominator * inverse (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#126)\n", - "markdown": "[MathUpgradeable.mulDiv(uint256,uint256,uint256)](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L55-L135) performs a multiplication on the result of a division:\n\t- [denominator = denominator / twos](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L102)\n\t- [inverse *= 2 - denominator * inverse](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L126)\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L55-L135", - "id": "d3e6e10c122886674b1e5fd2ce413eb882f00fdadbc0ea78e283dc622c1e9768", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - }, - { - "type": "node", - "name": "ratio = (ratio * 0x70d869a156d2a1b890bb3df62baf32f7) >> 128", - "source_mapping": { - "start": 3120, - "length": 59, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 47 - ], - "starting_column": 40, - "ending_column": 99 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - } - } - }, - { - "type": "node", - "name": "ratio = type()(uint256).max / ratio", - "source_mapping": { - "start": 3696, - "length": 33, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 54 - ], - "starting_column": 27, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - } - } - } - ], - "description": "TickMath.getSqrtRatioAtTick(int24) (lib/v3-core/contracts/libraries/TickMath.sol#26-61) performs a multiplication on the result of a division:\n\t- ratio = (ratio * 0x70d869a156d2a1b890bb3df62baf32f7) >> 128 (lib/v3-core/contracts/libraries/TickMath.sol#47)\n\t- ratio = type()(uint256).max / ratio (lib/v3-core/contracts/libraries/TickMath.sol#54)\n", - "markdown": "[TickMath.getSqrtRatioAtTick(int24)](lib/v3-core/contracts/libraries/TickMath.sol#L26-L61) performs a multiplication on the result of a division:\n\t- [ratio = (ratio * 0x70d869a156d2a1b890bb3df62baf32f7) >> 128](lib/v3-core/contracts/libraries/TickMath.sol#L47)\n\t- [ratio = type()(uint256).max / ratio](lib/v3-core/contracts/libraries/TickMath.sol#L54)\n", - "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L26-L61", - "id": "da6dbcc8d396a8ea28bf63c4bac1f6e08ad3a685e6fc8a653d02f87b541253e3", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 1678, - "length": 3925, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MathUpgradeable", - "source_mapping": { - "start": 202, - "length": 12313, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - }, - { - "type": "node", - "name": "denominator = denominator / twos", - "source_mapping": { - "start": 3757, - "length": 37, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 102 - ], - "starting_column": 17, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 1678, - "length": 3925, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MathUpgradeable", - "source_mapping": { - "start": 202, - "length": 12313, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - }, - { - "type": "node", - "name": "inverse = (3 * denominator) ^ 2", - "source_mapping": { - "start": 4459, - "length": 39, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 117 - ], - "starting_column": 13, - "ending_column": 52 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 1678, - "length": 3925, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MathUpgradeable", - "source_mapping": { - "start": 202, - "length": 12313, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - } - ], - "description": "MathUpgradeable.mulDiv(uint256,uint256,uint256) (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#55-135) performs a multiplication on the result of a division:\n\t- denominator = denominator / twos (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#102)\n\t- inverse = (3 * denominator) ^ 2 (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#117)\n", - "markdown": "[MathUpgradeable.mulDiv(uint256,uint256,uint256)](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L55-L135) performs a multiplication on the result of a division:\n\t- [denominator = denominator / twos](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L102)\n\t- [inverse = (3 * denominator) ^ 2](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L117)\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L55-L135", - "id": "dafd46d4f8c4625c4f3a256e1ea93a0fee8d450f2b6dead5825ba39094f116c8", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - }, - { - "type": "node", - "name": "ratio = (ratio * 0xd097f3bdfd2022b8845ad8f792aa5825) >> 128", - "source_mapping": { - "start": 2920, - "length": 59, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 45 - ], - "starting_column": 40, - "ending_column": 99 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - } - } - }, - { - "type": "node", - "name": "ratio = type()(uint256).max / ratio", - "source_mapping": { - "start": 3696, - "length": 33, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 54 - ], - "starting_column": 27, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - } - } - } - ], - "description": "TickMath.getSqrtRatioAtTick(int24) (lib/v3-core/contracts/libraries/TickMath.sol#26-61) performs a multiplication on the result of a division:\n\t- ratio = (ratio * 0xd097f3bdfd2022b8845ad8f792aa5825) >> 128 (lib/v3-core/contracts/libraries/TickMath.sol#45)\n\t- ratio = type()(uint256).max / ratio (lib/v3-core/contracts/libraries/TickMath.sol#54)\n", - "markdown": "[TickMath.getSqrtRatioAtTick(int24)](lib/v3-core/contracts/libraries/TickMath.sol#L26-L61) performs a multiplication on the result of a division:\n\t- [ratio = (ratio * 0xd097f3bdfd2022b8845ad8f792aa5825) >> 128](lib/v3-core/contracts/libraries/TickMath.sol#L45)\n\t- [ratio = type()(uint256).max / ratio](lib/v3-core/contracts/libraries/TickMath.sol#L54)\n", - "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L26-L61", - "id": "e426a7f18a2489b8e0f9cfe771bcab135619bec93fef6dd0e19f27e2e7d1464f", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - }, - { - "type": "node", - "name": "ratio = (ratio * 0xfcbe86c7900a88aedcffc83b479aa3a4) >> 128", - "source_mapping": { - "start": 2523, - "length": 59, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 41 - ], - "starting_column": 39, - "ending_column": 98 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - } - } - }, - { - "type": "node", - "name": "ratio = type()(uint256).max / ratio", - "source_mapping": { - "start": 3696, - "length": 33, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 54 - ], - "starting_column": 27, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - } - } - } - ], - "description": "TickMath.getSqrtRatioAtTick(int24) (lib/v3-core/contracts/libraries/TickMath.sol#26-61) performs a multiplication on the result of a division:\n\t- ratio = (ratio * 0xfcbe86c7900a88aedcffc83b479aa3a4) >> 128 (lib/v3-core/contracts/libraries/TickMath.sol#41)\n\t- ratio = type()(uint256).max / ratio (lib/v3-core/contracts/libraries/TickMath.sol#54)\n", - "markdown": "[TickMath.getSqrtRatioAtTick(int24)](lib/v3-core/contracts/libraries/TickMath.sol#L26-L61) performs a multiplication on the result of a division:\n\t- [ratio = (ratio * 0xfcbe86c7900a88aedcffc83b479aa3a4) >> 128](lib/v3-core/contracts/libraries/TickMath.sol#L41)\n\t- [ratio = type()(uint256).max / ratio](lib/v3-core/contracts/libraries/TickMath.sol#L54)\n", - "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L26-L61", - "id": "e88cd4d371f5afbf49191d8304a8f6d8ad7f24d19ebcdcf46e6f324c2ffb1c7a", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - }, - { - "type": "node", - "name": "ratio = (ratio * 0x9aa508b5b7a84e1c677de54f3e99bc9) >> 128", - "source_mapping": { - "start": 3321, - "length": 58, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 49 - ], - "starting_column": 41, - "ending_column": 99 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - } - } - }, - { - "type": "node", - "name": "ratio = type()(uint256).max / ratio", - "source_mapping": { - "start": 3696, - "length": 33, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 54 - ], - "starting_column": 27, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - } - } - } - ], - "description": "TickMath.getSqrtRatioAtTick(int24) (lib/v3-core/contracts/libraries/TickMath.sol#26-61) performs a multiplication on the result of a division:\n\t- ratio = (ratio * 0x9aa508b5b7a84e1c677de54f3e99bc9) >> 128 (lib/v3-core/contracts/libraries/TickMath.sol#49)\n\t- ratio = type()(uint256).max / ratio (lib/v3-core/contracts/libraries/TickMath.sol#54)\n", - "markdown": "[TickMath.getSqrtRatioAtTick(int24)](lib/v3-core/contracts/libraries/TickMath.sol#L26-L61) performs a multiplication on the result of a division:\n\t- [ratio = (ratio * 0x9aa508b5b7a84e1c677de54f3e99bc9) >> 128](lib/v3-core/contracts/libraries/TickMath.sol#L49)\n\t- [ratio = type()(uint256).max / ratio](lib/v3-core/contracts/libraries/TickMath.sol#L54)\n", - "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L26-L61", - "id": "f64d093eb85f9a8f731041983d2bb0bf07289d63f153e7b794e434881e924193", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - }, - { - "type": "node", - "name": "ratio = (ratio * 0xff973b41fa98c081472e6896dfb254c0) >> 128", - "source_mapping": { - "start": 2228, - "length": 59, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 38 - ], - "starting_column": 38, - "ending_column": 97 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - } - } - }, - { - "type": "node", - "name": "ratio = type()(uint256).max / ratio", - "source_mapping": { - "start": 3696, - "length": 33, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 54 - ], - "starting_column": 27, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - } - } - } - ], - "description": "TickMath.getSqrtRatioAtTick(int24) (lib/v3-core/contracts/libraries/TickMath.sol#26-61) performs a multiplication on the result of a division:\n\t- ratio = (ratio * 0xff973b41fa98c081472e6896dfb254c0) >> 128 (lib/v3-core/contracts/libraries/TickMath.sol#38)\n\t- ratio = type()(uint256).max / ratio (lib/v3-core/contracts/libraries/TickMath.sol#54)\n", - "markdown": "[TickMath.getSqrtRatioAtTick(int24)](lib/v3-core/contracts/libraries/TickMath.sol#L26-L61) performs a multiplication on the result of a division:\n\t- [ratio = (ratio * 0xff973b41fa98c081472e6896dfb254c0) >> 128](lib/v3-core/contracts/libraries/TickMath.sol#L38)\n\t- [ratio = type()(uint256).max / ratio](lib/v3-core/contracts/libraries/TickMath.sol#L54)\n", - "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L26-L61", - "id": "f69dca7a8c89e196d377b110003ab7978a3e4c70f8beb0f4a5f5ab9b6e6e9253", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 741, - "length": 4127, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FullMath", - "source_mapping": { - "start": 354, - "length": 5163, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - }, - { - "type": "node", - "name": "denominator = denominator / twos", - "source_mapping": { - "start": 2873, - "length": 37, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 68 - ], - "starting_column": 17, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 741, - "length": 4127, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FullMath", - "source_mapping": { - "start": 354, - "length": 5163, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - }, - { - "type": "node", - "name": "inv *= 2 - denominator * inv", - "source_mapping": { - "start": 4057, - "length": 28, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 93 - ], - "starting_column": 13, - "ending_column": 41 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 741, - "length": 4127, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FullMath", - "source_mapping": { - "start": 354, - "length": 5163, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - } - ], - "description": "FullMath.mulDiv(uint256,uint256,uint256) (lib/v3-core/contracts/libraries/FullMath.sol#14-108) performs a multiplication on the result of a division:\n\t- denominator = denominator / twos (lib/v3-core/contracts/libraries/FullMath.sol#68)\n\t- inv *= 2 - denominator * inv (lib/v3-core/contracts/libraries/FullMath.sol#93)\n", - "markdown": "[FullMath.mulDiv(uint256,uint256,uint256)](lib/v3-core/contracts/libraries/FullMath.sol#L14-L108) performs a multiplication on the result of a division:\n\t- [denominator = denominator / twos](lib/v3-core/contracts/libraries/FullMath.sol#L68)\n\t- [inv *= 2 - denominator * inv](lib/v3-core/contracts/libraries/FullMath.sol#L93)\n", - "first_markdown_element": "lib/v3-core/contracts/libraries/FullMath.sol#L14-L108", - "id": "fc5782d775af920a34f30dc7ed31f6d5a4bbf29cb1109a6103908410aba5b1de", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_zap", - "source_mapping": { - "start": 6830, - "length": 2292, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_zap(address,uint256,address,DiscountExerciseParams)" - } - }, - { - "type": "node", - "name": "paymentToken.balanceOf(feeRecipients[0]) == 0 || paymentToken.balanceOf(feeRecipients[1]) == 0", - "source_mapping": { - "start": 8678, - "length": 94, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 221 - ], - "starting_column": 17, - "ending_column": 111 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_zap", - "source_mapping": { - "start": 6830, - "length": 2292, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_zap(address,uint256,address,DiscountExerciseParams)" - } - } - } - } - ], - "description": "DiscountExercise._zap(address,uint256,address,DiscountExerciseParams) (src/exercise/DiscountExercise.sol#192-231) uses a dangerous strict equality:\n\t- paymentToken.balanceOf(feeRecipients[0]) == 0 || paymentToken.balanceOf(feeRecipients[1]) == 0 (src/exercise/DiscountExercise.sol#221)\n", - "markdown": "[DiscountExercise._zap(address,uint256,address,DiscountExerciseParams)](src/exercise/DiscountExercise.sol#L192-L231) uses a dangerous strict equality:\n\t- [paymentToken.balanceOf(feeRecipients[0]) == 0 || paymentToken.balanceOf(feeRecipients[1]) == 0](src/exercise/DiscountExercise.sol#L221)\n", - "first_markdown_element": "src/exercise/DiscountExercise.sol#L192-L231", - "id": "5a880060efcc31cb1efa41190002e874acfb1476c6f4163acb1fb73776ec92a2", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "_swapUniV3", - "source_mapping": { - "start": 1138, - "length": 1499, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "UniV3Mixin", - "source_mapping": { - "start": 269, - "length": 4771, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapUniV3(UniV3Mixin.Params__swapUniV3)" - } - }, - { - "type": "node", - "name": "_params.from == _params.to || _params.amount == 0", - "source_mapping": { - "start": 1243, - "length": 49, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 39 - ], - "starting_column": 13, - "ending_column": 62 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapUniV3", - "source_mapping": { - "start": 1138, - "length": 1499, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "UniV3Mixin", - "source_mapping": { - "start": 269, - "length": 4771, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapUniV3(UniV3Mixin.Params__swapUniV3)" - } - } - } - } - ], - "description": "UniV3Mixin._swapUniV3(UniV3Mixin.Params__swapUniV3) (lib/vault-v2/src/mixins/UniV3Mixin.sol#38-69) uses a dangerous strict equality:\n\t- _params.from == _params.to || _params.amount == 0 (lib/vault-v2/src/mixins/UniV3Mixin.sol#39)\n", - "markdown": "[UniV3Mixin._swapUniV3(UniV3Mixin.Params__swapUniV3)](lib/vault-v2/src/mixins/UniV3Mixin.sol#L38-L69) uses a dangerous strict equality:\n\t- [_params.from == _params.to || _params.amount == 0](lib/vault-v2/src/mixins/UniV3Mixin.sol#L39)\n", - "first_markdown_element": "lib/vault-v2/src/mixins/UniV3Mixin.sol#L38-L69", - "id": "fc396b078296f5d4c0c3927e14de36cf6a3ad91f938e9e10d2e8fa0e437962fc", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "_zap", - "source_mapping": { - "start": 6830, - "length": 2292, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_zap(address,uint256,address,DiscountExerciseParams)" - } - }, - { - "type": "node", - "name": "underlyingToken.approve(swapProps.swapper,feeAmount)", - "source_mapping": { - "start": 8058, - "length": 53, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 213 - ], - "starting_column": 13, - "ending_column": 66 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_zap", - "source_mapping": { - "start": 6830, - "length": 2292, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_zap(address,uint256,address,DiscountExerciseParams)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "_generalSwap(swapProps.exchangeTypes,address(underlyingToken),address(paymentToken),feeAmount,minAmountOut,swapProps.exchangeAddress)", - "source_mapping": { - "start": 8277, - "length": 138, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 216 - ], - "starting_column": 13, - "ending_column": 151 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_zap", - "source_mapping": { - "start": 6830, - "length": 2292, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_zap(address,uint256,address,DiscountExerciseParams)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "_swapper.swapUniV2(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)", - "source_mapping": { - "start": 2488, - "length": 80, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 75 - ], - "starting_column": 13, - "ending_column": 93 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_generalSwap", - "source_mapping": { - "start": 2091, - "length": 1014, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "SwapHelper", - "source_mapping": { - "start": 514, - "length": 3269, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_generalSwap(ExchangeType,address,address,uint256,uint256,address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "_swapper.swapBal(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)", - "source_mapping": { - "start": 2631, - "length": 78, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 77 - ], - "starting_column": 13, - "ending_column": 91 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_generalSwap", - "source_mapping": { - "start": 2091, - "length": 1014, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "SwapHelper", - "source_mapping": { - "start": 514, - "length": 3269, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_generalSwap(ExchangeType,address,address,uint256,uint256,address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "_swapper.swapVelo(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)", - "source_mapping": { - "start": 2778, - "length": 79, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 79 - ], - "starting_column": 13, - "ending_column": 92 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_generalSwap", - "source_mapping": { - "start": 2091, - "length": 1014, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "SwapHelper", - "source_mapping": { - "start": 514, - "length": 3269, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_generalSwap(ExchangeType,address,address,uint256,uint256,address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "_swapper.swapUniV3(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)", - "source_mapping": { - "start": 2922, - "length": 80, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 81 - ], - "starting_column": 13, - "ending_column": 93 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_generalSwap", - "source_mapping": { - "start": 2091, - "length": 1014, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "SwapHelper", - "source_mapping": { - "start": 514, - "length": 3269, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_generalSwap(ExchangeType,address,address,uint256,uint256,address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "feeAmount = 0", - "source_mapping": { - "start": 8429, - "length": 13, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 217 - ], - "starting_column": 13, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_zap", - "source_mapping": { - "start": 6830, - "length": 2292, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_zap(address,uint256,address,DiscountExerciseParams)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "feeAmount" - } - } - ], - "description": "Reentrancy in DiscountExercise._zap(address,uint256,address,DiscountExerciseParams) (src/exercise/DiscountExercise.sol#192-231):\n\tExternal calls:\n\t- underlyingToken.approve(swapProps.swapper,feeAmount) (src/exercise/DiscountExercise.sol#213)\n\t- _generalSwap(swapProps.exchangeTypes,address(underlyingToken),address(paymentToken),feeAmount,minAmountOut,swapProps.exchangeAddress) (src/exercise/DiscountExercise.sol#216)\n\t\t- _swapper.swapUniV2(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress) (src/helpers/SwapHelper.sol#75)\n\t\t- _swapper.swapBal(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress) (src/helpers/SwapHelper.sol#77)\n\t\t- _swapper.swapVelo(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress) (src/helpers/SwapHelper.sol#79)\n\t\t- _swapper.swapUniV3(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress) (src/helpers/SwapHelper.sol#81)\n\tState variables written after the call(s):\n\t- feeAmount = 0 (src/exercise/DiscountExercise.sol#217)\n\tDiscountExercise.feeAmount (src/exercise/DiscountExercise.sol#75) can be used in cross function reentrancies:\n\t- DiscountExercise._zap(address,uint256,address,DiscountExerciseParams) (src/exercise/DiscountExercise.sol#192-231)\n", - "markdown": "Reentrancy in [DiscountExercise._zap(address,uint256,address,DiscountExerciseParams)](src/exercise/DiscountExercise.sol#L192-L231):\n\tExternal calls:\n\t- [underlyingToken.approve(swapProps.swapper,feeAmount)](src/exercise/DiscountExercise.sol#L213)\n\t- [_generalSwap(swapProps.exchangeTypes,address(underlyingToken),address(paymentToken),feeAmount,minAmountOut,swapProps.exchangeAddress)](src/exercise/DiscountExercise.sol#L216)\n\t\t- [_swapper.swapUniV2(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L75)\n\t\t- [_swapper.swapBal(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L77)\n\t\t- [_swapper.swapVelo(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L79)\n\t\t- [_swapper.swapUniV3(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L81)\n\tState variables written after the call(s):\n\t- [feeAmount = 0](src/exercise/DiscountExercise.sol#L217)\n\t[DiscountExercise.feeAmount](src/exercise/DiscountExercise.sol#L75) can be used in cross function reentrancies:\n\t- [DiscountExercise._zap(address,uint256,address,DiscountExerciseParams)](src/exercise/DiscountExercise.sol#L192-L231)\n", - "first_markdown_element": "src/exercise/DiscountExercise.sol#L192-L231", - "id": "a3da78c5bd6d087b6122e2bce93b85b2799e2ef18234c8a2ad47ba8fa7e94f24", - "check": "reentrancy-no-eth", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "price", - "source_mapping": { - "start": 17664, - "length": 13, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 438 - ], - "starting_column": 9, - "ending_column": 22 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_scaleChainlinkPriceByDigits", - "source_mapping": { - "start": 17460, - "length": 642, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_scaleChainlinkPriceByDigits(uint256,uint256)" - } - } - } - } - ], - "description": "ReaperSwapper._scaleChainlinkPriceByDigits(uint256,uint256).price (lib/vault-v2/src/ReaperSwapper.sol#438) is a local variable never initialized\n", - "markdown": "[ReaperSwapper._scaleChainlinkPriceByDigits(uint256,uint256).price](lib/vault-v2/src/ReaperSwapper.sol#L438) is a local variable never initialized\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L438", - "id": "27cbde03367f30635d8b77371e7fe0b61d5b5de3c5ad430c3fe3e8002aed8a7d", - "check": "uninitialized-local", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "tokenInFound", - "source_mapping": { - "start": 3290, - "length": 17, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 83 - ], - "starting_column": 9, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_updateBalSwapPoolID", - "source_mapping": { - "start": 2960, - "length": 817, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BalMixin", - "source_mapping": { - "start": 307, - "length": 3662, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_updateBalSwapPoolID(address,address,address,bytes32)" - } - } - } - } - ], - "description": "BalMixin._updateBalSwapPoolID(address,address,address,bytes32).tokenInFound (lib/vault-v2/src/mixins/BalMixin.sol#83) is a local variable never initialized\n", - "markdown": "[BalMixin._updateBalSwapPoolID(address,address,address,bytes32).tokenInFound](lib/vault-v2/src/mixins/BalMixin.sol#L83) is a local variable never initialized\n", - "first_markdown_element": "lib/vault-v2/src/mixins/BalMixin.sol#L83", - "id": "48805492cb64113a3a35ed5ba8c0a2076b664bcd2d067470ba0a3252ebba42b4", - "check": "uninitialized-local", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "funds", - "source_mapping": { - "start": 1661, - "length": 38, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 49 - ], - "starting_column": 9, - "ending_column": 47 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapBal", - "source_mapping": { - "start": 895, - "length": 1974, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BalMixin", - "source_mapping": { - "start": 307, - "length": 3662, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapBal(address,address,uint256,uint256,address,uint256,bool)" - } - } - } - } - ], - "description": "BalMixin._swapBal(address,address,uint256,uint256,address,uint256,bool).funds (lib/vault-v2/src/mixins/BalMixin.sol#49) is a local variable never initialized\n", - "markdown": "[BalMixin._swapBal(address,address,uint256,uint256,address,uint256,bool).funds](lib/vault-v2/src/mixins/BalMixin.sol#L49) is a local variable never initialized\n", - "first_markdown_element": "lib/vault-v2/src/mixins/BalMixin.sol#L49", - "id": "4c14c7b594bf15697ba30539c9ac4c614c10333e52070092d201336e75377b3e", - "check": "uninitialized-local", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "singleSwap", - "source_mapping": { - "start": 1350, - "length": 39, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 41 - ], - "starting_column": 9, - "ending_column": 48 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapBal", - "source_mapping": { - "start": 895, - "length": 1974, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BalMixin", - "source_mapping": { - "start": 307, - "length": 3662, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapBal(address,address,uint256,uint256,address,uint256,bool)" - } - } - } - } - ], - "description": "BalMixin._swapBal(address,address,uint256,uint256,address,uint256,bool).singleSwap (lib/vault-v2/src/mixins/BalMixin.sol#41) is a local variable never initialized\n", - "markdown": "[BalMixin._swapBal(address,address,uint256,uint256,address,uint256,bool).singleSwap](lib/vault-v2/src/mixins/BalMixin.sol#L41) is a local variable never initialized\n", - "first_markdown_element": "lib/vault-v2/src/mixins/BalMixin.sol#L41", - "id": "509fe1a6ba376f87af1d863abc8d6ee153c0a98eb4717a73f4e55d593f047ad6", - "check": "uninitialized-local", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "predictedOutput", - "source_mapping": { - "start": 1332, - "length": 23, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 39 - ], - "starting_column": 9, - "ending_column": 32 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapVelo", - "source_mapping": { - "start": 862, - "length": 1768, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VeloSolidMixin", - "source_mapping": { - "start": 313, - "length": 4635, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapVelo(address,address,uint256,uint256,address,uint256,bool)" - } - } - } - } - ], - "description": "VeloSolidMixin._swapVelo(address,address,uint256,uint256,address,uint256,bool).predictedOutput (lib/vault-v2/src/mixins/VeloSolidMixin.sol#39) is a local variable never initialized\n", - "markdown": "[VeloSolidMixin._swapVelo(address,address,uint256,uint256,address,uint256,bool).predictedOutput](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L39) is a local variable never initialized\n", - "first_markdown_element": "lib/vault-v2/src/mixins/VeloSolidMixin.sol#L39", - "id": "938d047c5ec8d17161f658c71b9aa0d91ba330139bbace224c8a03181655b082", - "check": "uninitialized-local", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "tokenOutFound", - "source_mapping": { - "start": 3317, - "length": 18, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 84 - ], - "starting_column": 9, - "ending_column": 27 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_updateBalSwapPoolID", - "source_mapping": { - "start": 2960, - "length": 817, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BalMixin", - "source_mapping": { - "start": 307, - "length": 3662, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_updateBalSwapPoolID(address,address,address,bytes32)" - } - } - } - } - ], - "description": "BalMixin._updateBalSwapPoolID(address,address,address,bytes32).tokenOutFound (lib/vault-v2/src/mixins/BalMixin.sol#84) is a local variable never initialized\n", - "markdown": "[BalMixin._updateBalSwapPoolID(address,address,address,bytes32).tokenOutFound](lib/vault-v2/src/mixins/BalMixin.sol#L84) is a local variable never initialized\n", - "first_markdown_element": "lib/vault-v2/src/mixins/BalMixin.sol#L84", - "id": "c74cd6285af530132a8fd4c04509ac76724208d2ddf2f11af35efb8fcc996c55", - "check": "uninitialized-local", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_revokeRole", - "source_mapping": { - "start": 2572, - "length": 171, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "is_dependency": true, - "lines": [ - 66, - 67, - 68, - 69 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AccessControlEnumerableUpgradeable", - "source_mapping": { - "start": 431, - "length": 2605, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "is_dependency": true, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_revokeRole(bytes32,address)" - } - }, - { - "type": "node", - "name": "_roleMembers[role].remove(account)", - "source_mapping": { - "start": 2702, - "length": 34, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "is_dependency": true, - "lines": [ - 68 - ], - "starting_column": 9, - "ending_column": 43 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_revokeRole", - "source_mapping": { - "start": 2572, - "length": 171, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "is_dependency": true, - "lines": [ - 66, - 67, - 68, - 69 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AccessControlEnumerableUpgradeable", - "source_mapping": { - "start": 431, - "length": 2605, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "is_dependency": true, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_revokeRole(bytes32,address)" - } - } - } - } - ], - "description": "AccessControlEnumerableUpgradeable._revokeRole(bytes32,address) (lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#66-69) ignores return value by _roleMembers[role].remove(account) (lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#68)\n", - "markdown": "[AccessControlEnumerableUpgradeable._revokeRole(bytes32,address)](lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#L66-L69) ignores return value by [_roleMembers[role].remove(account)](lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#L68)\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#L66-L69", - "id": "076f76790b4c8e077be1617bcc82f2d4381a7a10e8cf41bc646d5208e1b6869d", - "check": "unused-return", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "getPrice", - "source_mapping": { - "start": 3653, - "length": 2015, - "filename_relative": "src/oracles/UniswapV3Oracle.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/UniswapV3Oracle.sol", - "filename_short": "src/oracles/UniswapV3Oracle.sol", - "is_dependency": false, - "lines": [ - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "UniswapV3Oracle", - "source_mapping": { - "start": 729, - "length": 6210, - "filename_relative": "src/oracles/UniswapV3Oracle.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/UniswapV3Oracle.sol", - "filename_short": "src/oracles/UniswapV3Oracle.sol", - "is_dependency": false, - "lines": [ - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getPrice()" - } - }, - { - "type": "node", - "name": "(tickCumulatives,None) = uniswapPool.observe(secondsAgo)", - "source_mapping": { - "start": 4489, - "length": 67, - "filename_relative": "src/oracles/UniswapV3Oracle.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/UniswapV3Oracle.sol", - "filename_short": "src/oracles/UniswapV3Oracle.sol", - "is_dependency": false, - "lines": [ - 107 - ], - "starting_column": 13, - "ending_column": 80 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getPrice", - "source_mapping": { - "start": 3653, - "length": 2015, - "filename_relative": "src/oracles/UniswapV3Oracle.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/UniswapV3Oracle.sol", - "filename_short": "src/oracles/UniswapV3Oracle.sol", - "is_dependency": false, - "lines": [ - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "UniswapV3Oracle", - "source_mapping": { - "start": 729, - "length": 6210, - "filename_relative": "src/oracles/UniswapV3Oracle.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/UniswapV3Oracle.sol", - "filename_short": "src/oracles/UniswapV3Oracle.sol", - "is_dependency": false, - "lines": [ - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getPrice()" - } - } - } - } - ], - "description": "UniswapV3Oracle.getPrice() (src/oracles/UniswapV3Oracle.sol#88-127) ignores return value by (tickCumulatives,None) = uniswapPool.observe(secondsAgo) (src/oracles/UniswapV3Oracle.sol#107)\n", - "markdown": "[UniswapV3Oracle.getPrice()](src/oracles/UniswapV3Oracle.sol#L88-L127) ignores return value by [(tickCumulatives,None) = uniswapPool.observe(secondsAgo)](src/oracles/UniswapV3Oracle.sol#L107)\n", - "first_markdown_element": "src/oracles/UniswapV3Oracle.sol#L88-L127", - "id": "15eb9ed8c87b71a5d2ecedd3aa7b4a47cffcd9c5e79ee7bd0e04e3b4eaa86f54", - "check": "unused-return", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_updateBalSwapPoolID", - "source_mapping": { - "start": 2960, - "length": 817, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BalMixin", - "source_mapping": { - "start": 307, - "length": 3662, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_updateBalSwapPoolID(address,address,address,bytes32)" - } - }, - { - "type": "node", - "name": "(poolTokens,None,None) = IBeetVault(_vault).getPoolTokens(_poolID)", - "source_mapping": { - "start": 3222, - "length": 58, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 82 - ], - "starting_column": 9, - "ending_column": 67 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_updateBalSwapPoolID", - "source_mapping": { - "start": 2960, - "length": 817, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BalMixin", - "source_mapping": { - "start": 307, - "length": 3662, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_updateBalSwapPoolID(address,address,address,bytes32)" - } - } - } - } - ], - "description": "BalMixin._updateBalSwapPoolID(address,address,address,bytes32) (lib/vault-v2/src/mixins/BalMixin.sol#79-94) ignores return value by (poolTokens,None,None) = IBeetVault(_vault).getPoolTokens(_poolID) (lib/vault-v2/src/mixins/BalMixin.sol#82)\n", - "markdown": "[BalMixin._updateBalSwapPoolID(address,address,address,bytes32)](lib/vault-v2/src/mixins/BalMixin.sol#L79-L94) ignores return value by [(poolTokens,None,None) = IBeetVault(_vault).getPoolTokens(_poolID)](lib/vault-v2/src/mixins/BalMixin.sol#L82)\n", - "first_markdown_element": "lib/vault-v2/src/mixins/BalMixin.sol#L79-L94", - "id": "22489e462e2576b06930c1d8cbfbae2e2b553f01d03f9ecb4dda6fe8f67db3c9", - "check": "unused-return", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_getCurrentChainlinkResponse", - "source_mapping": { - "start": 13273, - "length": 1334, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_getCurrentChainlinkResponse(address)" - } - }, - { - "type": "node", - "name": "(roundId,answer,timestamp) = aggregatorData[_token].aggregator.latestRoundData()", - "source_mapping": { - "start": 13924, - "length": 677, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372 - ], - "starting_column": 9, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_getCurrentChainlinkResponse", - "source_mapping": { - "start": 13273, - "length": 1334, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_getCurrentChainlinkResponse(address)" - } - } - } - } - ], - "description": "ReaperSwapper._getCurrentChainlinkResponse(address) (lib/vault-v2/src/ReaperSwapper.sol#345-373) ignores return value by (roundId,answer,timestamp) = aggregatorData[_token].aggregator.latestRoundData() (lib/vault-v2/src/ReaperSwapper.sol#360-372)\n", - "markdown": "[ReaperSwapper._getCurrentChainlinkResponse(address)](lib/vault-v2/src/ReaperSwapper.sol#L345-L373) ignores return value by [(roundId,answer,timestamp) = aggregatorData[_token].aggregator.latestRoundData()](lib/vault-v2/src/ReaperSwapper.sol#L360-L372)\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L345-L373", - "id": "30b0452c36c12660b86348533df68749bf1fea5021fb22dbd899a99575905585", - "check": "unused-return", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_getPrevChainlinkResponse", - "source_mapping": { - "start": 14613, - "length": 1317, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_getPrevChainlinkResponse(address,uint80,uint8)" - } - }, - { - "type": "node", - "name": "(roundId,answer,timestamp) = aggregatorData[_token].aggregator.getRoundData(_currentRoundId - 1)", - "source_mapping": { - "start": 15144, - "length": 780, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399 - ], - "starting_column": 9, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_getPrevChainlinkResponse", - "source_mapping": { - "start": 14613, - "length": 1317, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_getPrevChainlinkResponse(address,uint80,uint8)" - } - } - } - } - ], - "description": "ReaperSwapper._getPrevChainlinkResponse(address,uint80,uint8) (lib/vault-v2/src/ReaperSwapper.sol#375-400) ignores return value by (roundId,answer,timestamp) = aggregatorData[_token].aggregator.getRoundData(_currentRoundId - 1) (lib/vault-v2/src/ReaperSwapper.sol#386-399)\n", - "markdown": "[ReaperSwapper._getPrevChainlinkResponse(address,uint80,uint8)](lib/vault-v2/src/ReaperSwapper.sol#L375-L400) ignores return value by [(roundId,answer,timestamp) = aggregatorData[_token].aggregator.getRoundData(_currentRoundId - 1)](lib/vault-v2/src/ReaperSwapper.sol#L386-L399)\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L375-L400", - "id": "3fb1d4622d7ea931b3c26311ca8702c2ec8cb0af6eb5ecafd74d274ba139f513", - "check": "unused-return", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_grantRole", - "source_mapping": { - "start": 2317, - "length": 166, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "is_dependency": true, - "lines": [ - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AccessControlEnumerableUpgradeable", - "source_mapping": { - "start": 431, - "length": 2605, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "is_dependency": true, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_grantRole(bytes32,address)" - } - }, - { - "type": "node", - "name": "_roleMembers[role].add(account)", - "source_mapping": { - "start": 2445, - "length": 31, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "is_dependency": true, - "lines": [ - 60 - ], - "starting_column": 9, - "ending_column": 40 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_grantRole", - "source_mapping": { - "start": 2317, - "length": 166, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "is_dependency": true, - "lines": [ - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AccessControlEnumerableUpgradeable", - "source_mapping": { - "start": 431, - "length": 2605, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "is_dependency": true, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_grantRole(bytes32,address)" - } - } - } - } - ], - "description": "AccessControlEnumerableUpgradeable._grantRole(bytes32,address) (lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#58-61) ignores return value by _roleMembers[role].add(account) (lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#60)\n", - "markdown": "[AccessControlEnumerableUpgradeable._grantRole(bytes32,address)](lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#L58-L61) ignores return value by [_roleMembers[role].add(account)](lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#L60)\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#L58-L61", - "id": "620dfa605cb7ea36269a8d3b9fa9056080aa44ef8b103b528893398de697d7d3", - "check": "unused-return", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_zap", - "source_mapping": { - "start": 6830, - "length": 2292, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_zap(address,uint256,address,DiscountExerciseParams)" - } - }, - { - "type": "node", - "name": "underlyingToken.approve(swapProps.swapper,feeAmount)", - "source_mapping": { - "start": 8058, - "length": 53, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 213 - ], - "starting_column": 13, - "ending_column": 66 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_zap", - "source_mapping": { - "start": 6830, - "length": 2292, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_zap(address,uint256,address,DiscountExerciseParams)" - } - } - } - } - ], - "description": "DiscountExercise._zap(address,uint256,address,DiscountExerciseParams) (src/exercise/DiscountExercise.sol#192-231) ignores return value by underlyingToken.approve(swapProps.swapper,feeAmount) (src/exercise/DiscountExercise.sol#213)\n", - "markdown": "[DiscountExercise._zap(address,uint256,address,DiscountExerciseParams)](src/exercise/DiscountExercise.sol#L192-L231) ignores return value by [underlyingToken.approve(swapProps.swapper,feeAmount)](src/exercise/DiscountExercise.sol#L213)\n", - "first_markdown_element": "src/exercise/DiscountExercise.sol#L192-L231", - "id": "684b7ed11ac84490d20969fb21d74aa2d08d45cf6922ba41e4132debc88f1a3e", - "check": "unused-return", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 3156, - "length": 831, - "filename_relative": "src/oracles/BalancerOracle.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/BalancerOracle.sol", - "filename_short": "src/oracles/BalancerOracle.sol", - "is_dependency": false, - "lines": [ - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BalancerOracle", - "source_mapping": { - "start": 892, - "length": 6454, - "filename_relative": "src/oracles/BalancerOracle.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/BalancerOracle.sol", - "filename_short": "src/oracles/BalancerOracle.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "constructor(IBalancerTwapOracle,address,address,uint56,uint56,uint128)" - } - }, - { - "type": "node", - "name": "(poolTokens,None,None) = vault.getPoolTokens(balancerTwapOracle_.getPoolId())", - "source_mapping": { - "start": 3415, - "length": 86, - "filename_relative": "src/oracles/BalancerOracle.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/BalancerOracle.sol", - "filename_short": "src/oracles/BalancerOracle.sol", - "is_dependency": false, - "lines": [ - 78 - ], - "starting_column": 9, - "ending_column": 95 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 3156, - "length": 831, - "filename_relative": "src/oracles/BalancerOracle.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/BalancerOracle.sol", - "filename_short": "src/oracles/BalancerOracle.sol", - "is_dependency": false, - "lines": [ - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BalancerOracle", - "source_mapping": { - "start": 892, - "length": 6454, - "filename_relative": "src/oracles/BalancerOracle.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/BalancerOracle.sol", - "filename_short": "src/oracles/BalancerOracle.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "constructor(IBalancerTwapOracle,address,address,uint56,uint56,uint128)" - } - } - } - } - ], - "description": "BalancerOracle.constructor(IBalancerTwapOracle,address,address,uint56,uint56,uint128) (src/oracles/BalancerOracle.sol#74-91) ignores return value by (poolTokens,None,None) = vault.getPoolTokens(balancerTwapOracle_.getPoolId()) (src/oracles/BalancerOracle.sol#78)\n", - "markdown": "[BalancerOracle.constructor(IBalancerTwapOracle,address,address,uint56,uint56,uint128)](src/oracles/BalancerOracle.sol#L74-L91) ignores return value by [(poolTokens,None,None) = vault.getPoolTokens(balancerTwapOracle_.getPoolId())](src/oracles/BalancerOracle.sol#L78)\n", - "first_markdown_element": "src/oracles/BalancerOracle.sol#L74-L91", - "id": "7fd9ee00c28427211778cf2546b458bdf9a14aa5bafb1c4e696c75da94161789", - "check": "unused-return", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_generalSwap", - "source_mapping": { - "start": 2091, - "length": 1014, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "SwapHelper", - "source_mapping": { - "start": 514, - "length": 3269, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_generalSwap(ExchangeType,address,address,uint256,uint256,address)" - } - }, - { - "type": "node", - "name": "_swapper.swapVelo(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)", - "source_mapping": { - "start": 2778, - "length": 79, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 79 - ], - "starting_column": 13, - "ending_column": 92 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_generalSwap", - "source_mapping": { - "start": 2091, - "length": 1014, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "SwapHelper", - "source_mapping": { - "start": 514, - "length": 3269, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_generalSwap(ExchangeType,address,address,uint256,uint256,address)" - } - } - } - } - ], - "description": "SwapHelper._generalSwap(ExchangeType,address,address,uint256,uint256,address) (src/helpers/SwapHelper.sol#69-85) ignores return value by _swapper.swapVelo(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress) (src/helpers/SwapHelper.sol#79)\n", - "markdown": "[SwapHelper._generalSwap(ExchangeType,address,address,uint256,uint256,address)](src/helpers/SwapHelper.sol#L69-L85) ignores return value by [_swapper.swapVelo(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L79)\n", - "first_markdown_element": "src/helpers/SwapHelper.sol#L69-L85", - "id": "905ebf5e0a77bb5ce6a9956a5a938b3fb57ccd447db79e52f28c190ad2b098fc", - "check": "unused-return", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_generalSwap", - "source_mapping": { - "start": 2091, - "length": 1014, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "SwapHelper", - "source_mapping": { - "start": 514, - "length": 3269, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_generalSwap(ExchangeType,address,address,uint256,uint256,address)" - } - }, - { - "type": "node", - "name": "_swapper.swapUniV2(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)", - "source_mapping": { - "start": 2488, - "length": 80, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 75 - ], - "starting_column": 13, - "ending_column": 93 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_generalSwap", - "source_mapping": { - "start": 2091, - "length": 1014, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "SwapHelper", - "source_mapping": { - "start": 514, - "length": 3269, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_generalSwap(ExchangeType,address,address,uint256,uint256,address)" - } - } - } - } - ], - "description": "SwapHelper._generalSwap(ExchangeType,address,address,uint256,uint256,address) (src/helpers/SwapHelper.sol#69-85) ignores return value by _swapper.swapUniV2(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress) (src/helpers/SwapHelper.sol#75)\n", - "markdown": "[SwapHelper._generalSwap(ExchangeType,address,address,uint256,uint256,address)](src/helpers/SwapHelper.sol#L69-L85) ignores return value by [_swapper.swapUniV2(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L75)\n", - "first_markdown_element": "src/helpers/SwapHelper.sol#L69-L85", - "id": "94dc018090e15555f5a24f270bc2a4e251aa4fd683d1ad6da53e29b9ce36dfc0", - "check": "unused-return", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_generalSwap", - "source_mapping": { - "start": 2091, - "length": 1014, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "SwapHelper", - "source_mapping": { - "start": 514, - "length": 3269, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_generalSwap(ExchangeType,address,address,uint256,uint256,address)" - } - }, - { - "type": "node", - "name": "_swapper.swapBal(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)", - "source_mapping": { - "start": 2631, - "length": 78, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 77 - ], - "starting_column": 13, - "ending_column": 91 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_generalSwap", - "source_mapping": { - "start": 2091, - "length": 1014, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "SwapHelper", - "source_mapping": { - "start": 514, - "length": 3269, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_generalSwap(ExchangeType,address,address,uint256,uint256,address)" - } - } - } - } - ], - "description": "SwapHelper._generalSwap(ExchangeType,address,address,uint256,uint256,address) (src/helpers/SwapHelper.sol#69-85) ignores return value by _swapper.swapBal(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress) (src/helpers/SwapHelper.sol#77)\n", - "markdown": "[SwapHelper._generalSwap(ExchangeType,address,address,uint256,uint256,address)](src/helpers/SwapHelper.sol#L69-L85) ignores return value by [_swapper.swapBal(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L77)\n", - "first_markdown_element": "src/helpers/SwapHelper.sol#L69-L85", - "id": "a1f5da77f45788e0404eeff5cf6f3e525a4c1f9dfd972ea1146ab141aae64f48", - "check": "unused-return", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_addLiquidityUniV2", - "source_mapping": { - "start": 2970, - "length": 603, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "UniV2Mixin", - "source_mapping": { - "start": 234, - "length": 4634, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_addLiquidityUniV2(address,address,address,uint256)" - } - }, - { - "type": "node", - "name": "IUniswapV2Router02(_router).addLiquidity(_lpToken0,_lpToken1,lp0Bal,lp1Bal,0,0,address(this),_deadline)", - "source_mapping": { - "start": 3416, - "length": 140, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 85, - 86, - 87 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_addLiquidityUniV2", - "source_mapping": { - "start": 2970, - "length": 603, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "UniV2Mixin", - "source_mapping": { - "start": 234, - "length": 4634, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_addLiquidityUniV2(address,address,address,uint256)" - } - } - } - } - ], - "description": "UniV2Mixin._addLiquidityUniV2(address,address,address,uint256) (lib/vault-v2/src/mixins/UniV2Mixin.sol#78-89) ignores return value by IUniswapV2Router02(_router).addLiquidity(_lpToken0,_lpToken1,lp0Bal,lp1Bal,0,0,address(this),_deadline) (lib/vault-v2/src/mixins/UniV2Mixin.sol#85-87)\n", - "markdown": "[UniV2Mixin._addLiquidityUniV2(address,address,address,uint256)](lib/vault-v2/src/mixins/UniV2Mixin.sol#L78-L89) ignores return value by [IUniswapV2Router02(_router).addLiquidity(_lpToken0,_lpToken1,lp0Bal,lp1Bal,0,0,address(this),_deadline)](lib/vault-v2/src/mixins/UniV2Mixin.sol#L85-L87)\n", - "first_markdown_element": "lib/vault-v2/src/mixins/UniV2Mixin.sol#L78-L89", - "id": "b6d4c23ffa7d93ea78b806ecab3d05e76b1b931c562033f0be3f688a2bf5138c", - "check": "unused-return", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_generalSwap", - "source_mapping": { - "start": 2091, - "length": 1014, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "SwapHelper", - "source_mapping": { - "start": 514, - "length": 3269, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_generalSwap(ExchangeType,address,address,uint256,uint256,address)" - } - }, - { - "type": "node", - "name": "_swapper.swapUniV3(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)", - "source_mapping": { - "start": 2922, - "length": 80, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 81 - ], - "starting_column": 13, - "ending_column": 93 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_generalSwap", - "source_mapping": { - "start": 2091, - "length": 1014, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "SwapHelper", - "source_mapping": { - "start": 514, - "length": 3269, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_generalSwap(ExchangeType,address,address,uint256,uint256,address)" - } - } - } - } - ], - "description": "SwapHelper._generalSwap(ExchangeType,address,address,uint256,uint256,address) (src/helpers/SwapHelper.sol#69-85) ignores return value by _swapper.swapUniV3(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress) (src/helpers/SwapHelper.sol#81)\n", - "markdown": "[SwapHelper._generalSwap(ExchangeType,address,address,uint256,uint256,address)](src/helpers/SwapHelper.sol#L69-L85) ignores return value by [_swapper.swapUniV3(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L81)\n", - "first_markdown_element": "src/helpers/SwapHelper.sol#L69-L85", - "id": "ba75e8f4ffb4c65ddb6f1b12480fd59208ad29a142771fab28ee7f7006c98513", - "check": "unused-return", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "getTokens", - "source_mapping": { - "start": 5915, - "length": 481, - "filename_relative": "src/oracles/BalancerOracle.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/BalancerOracle.sol", - "filename_short": "src/oracles/BalancerOracle.sol", - "is_dependency": false, - "lines": [ - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BalancerOracle", - "source_mapping": { - "start": 892, - "length": 6454, - "filename_relative": "src/oracles/BalancerOracle.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/BalancerOracle.sol", - "filename_short": "src/oracles/BalancerOracle.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getTokens()" - } - }, - { - "type": "node", - "name": "(poolTokens,None,None) = vault.getPoolTokens(balancerTwapOracle.getPoolId())", - "source_mapping": { - "start": 6079, - "length": 85, - "filename_relative": "src/oracles/BalancerOracle.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/BalancerOracle.sol", - "filename_short": "src/oracles/BalancerOracle.sol", - "is_dependency": false, - "lines": [ - 140 - ], - "starting_column": 9, - "ending_column": 94 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getTokens", - "source_mapping": { - "start": 5915, - "length": 481, - "filename_relative": "src/oracles/BalancerOracle.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/BalancerOracle.sol", - "filename_short": "src/oracles/BalancerOracle.sol", - "is_dependency": false, - "lines": [ - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BalancerOracle", - "source_mapping": { - "start": 892, - "length": 6454, - "filename_relative": "src/oracles/BalancerOracle.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/BalancerOracle.sol", - "filename_short": "src/oracles/BalancerOracle.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getTokens()" - } - } - } - } - ], - "description": "BalancerOracle.getTokens() (src/oracles/BalancerOracle.sol#138-148) ignores return value by (poolTokens,None,None) = vault.getPoolTokens(balancerTwapOracle.getPoolId()) (src/oracles/BalancerOracle.sol#140)\n", - "markdown": "[BalancerOracle.getTokens()](src/oracles/BalancerOracle.sol#L138-L148) ignores return value by [(poolTokens,None,None) = vault.getPoolTokens(balancerTwapOracle.getPoolId())](src/oracles/BalancerOracle.sol#L140)\n", - "first_markdown_element": "src/oracles/BalancerOracle.sol#L138-L148", - "id": "d1f99ec9ea9af88978409bc1c5b1676b709fd00041f617d279f7f6efb7773e9a", - "check": "unused-return", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "liquidity", - "source_mapping": { - "start": 5469, - "length": 17, - "filename_relative": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", - "filename_short": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", - "is_dependency": true, - "lines": [ - 93 - ], - "starting_column": 13, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "positions", - "source_mapping": { - "start": 5377, - "length": 278, - "filename_relative": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", - "filename_short": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", - "is_dependency": true, - "lines": [ - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98 - ], - "starting_column": 5, - "ending_column": 11 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "IUniswapV3PoolState", - "source_mapping": { - "start": 240, - "length": 6425, - "filename_relative": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", - "filename_short": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "positions(bytes32)" - } - } - } - }, - { - "type": "function", - "name": "liquidity", - "source_mapping": { - "start": 2725, - "length": 53, - "filename_relative": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", - "filename_short": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", - "is_dependency": true, - "lines": [ - 49 - ], - "starting_column": 5, - "ending_column": 58 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "IUniswapV3PoolState", - "source_mapping": { - "start": 240, - "length": 6425, - "filename_relative": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", - "filename_short": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "liquidity()" - } - } - ], - "description": "IUniswapV3PoolState.positions(bytes32).liquidity (lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol#93) shadows:\n\t- IUniswapV3PoolState.liquidity() (lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol#49) (function)\n", - "markdown": "[IUniswapV3PoolState.positions(bytes32).liquidity](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol#L93) shadows:\n\t- [IUniswapV3PoolState.liquidity()](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol#L49) (function)\n", - "first_markdown_element": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol#L93", - "id": "5e13c1a5ae4fc039231766295753ab663fafa45e8223c9c0d6c847752e70753f", - "check": "shadowing-local", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "setMinAmountToTriggerSwap", - "source_mapping": { - "start": 6507, - "length": 152, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 179, - 180, - 181 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "setMinAmountToTriggerSwap(uint256)" - } - }, - { - "type": "node", - "name": "minAmountToTriggerSwap = _minAmountToTriggerSwap", - "source_mapping": { - "start": 6604, - "length": 48, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 180 - ], - "starting_column": 9, - "ending_column": 57 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "setMinAmountToTriggerSwap", - "source_mapping": { - "start": 6507, - "length": 152, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 179, - 180, - 181 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "setMinAmountToTriggerSwap(uint256)" - } - } - } - } - ], - "description": "DiscountExercise.setMinAmountToTriggerSwap(uint256) (src/exercise/DiscountExercise.sol#179-181) should emit an event for: \n\t- minAmountToTriggerSwap = _minAmountToTriggerSwap (src/exercise/DiscountExercise.sol#180) \n", - "markdown": "[DiscountExercise.setMinAmountToTriggerSwap(uint256)](src/exercise/DiscountExercise.sol#L179-L181) should emit an event for: \n\t- [minAmountToTriggerSwap = _minAmountToTriggerSwap](src/exercise/DiscountExercise.sol#L180) \n", - "first_markdown_element": "src/exercise/DiscountExercise.sol#L179-L181", - "id": "99c71da5f770edb1feb1845717d2ccb74eb2dfef272d225e93ebde0b29ec024c", - "check": "events-maths", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "newOwner", - "source_mapping": { - "start": 1339, - "length": 16, - "filename_relative": "lib/solmate/src/auth/Owned.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/auth/Owned.sol", - "filename_short": "lib/solmate/src/auth/Owned.sol", - "is_dependency": true, - "lines": [ - 39 - ], - "starting_column": 32, - "ending_column": 48 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "transferOwnership", - "source_mapping": { - "start": 1312, - "length": 161, - "filename_relative": "lib/solmate/src/auth/Owned.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/auth/Owned.sol", - "filename_short": "lib/solmate/src/auth/Owned.sol", - "is_dependency": true, - "lines": [ - 39, - 40, - 41, - 42, - 43 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Owned", - "source_mapping": { - "start": 215, - "length": 1260, - "filename_relative": "lib/solmate/src/auth/Owned.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/auth/Owned.sol", - "filename_short": "lib/solmate/src/auth/Owned.sol", - "is_dependency": true, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "transferOwnership(address)" - } - } - } - }, - { - "type": "node", - "name": "owner = newOwner", - "source_mapping": { - "start": 1392, - "length": 16, - "filename_relative": "lib/solmate/src/auth/Owned.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/auth/Owned.sol", - "filename_short": "lib/solmate/src/auth/Owned.sol", - "is_dependency": true, - "lines": [ - 40 - ], - "starting_column": 9, - "ending_column": 25 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "transferOwnership", - "source_mapping": { - "start": 1312, - "length": 161, - "filename_relative": "lib/solmate/src/auth/Owned.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/auth/Owned.sol", - "filename_short": "lib/solmate/src/auth/Owned.sol", - "is_dependency": true, - "lines": [ - 39, - 40, - 41, - 42, - 43 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Owned", - "source_mapping": { - "start": 215, - "length": 1260, - "filename_relative": "lib/solmate/src/auth/Owned.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/auth/Owned.sol", - "filename_short": "lib/solmate/src/auth/Owned.sol", - "is_dependency": true, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "transferOwnership(address)" - } - } - } - } - ], - "description": "Owned.transferOwnership(address).newOwner (lib/solmate/src/auth/Owned.sol#39) lacks a zero-check on :\n\t\t- owner = newOwner (lib/solmate/src/auth/Owned.sol#40)\n", - "markdown": "[Owned.transferOwnership(address).newOwner](lib/solmate/src/auth/Owned.sol#L39) lacks a zero-check on :\n\t\t- [owner = newOwner](lib/solmate/src/auth/Owned.sol#L40)\n", - "first_markdown_element": "lib/solmate/src/auth/Owned.sol#L39", - "id": "42c5c3a31d57316a6a42a25af3d5437866fe31ad7d20faa9c9e90a828458a168", - "check": "missing-zero-check", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "tokenAdmin_", - "source_mapping": { - "start": 2629, - "length": 19, - "filename_relative": "src/OptionsToken.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", - "filename_short": "src/OptionsToken.sol", - "is_dependency": false, - "lines": [ - 60 - ], - "starting_column": 69, - "ending_column": 88 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "initialize", - "source_mapping": { - "start": 2565, - "length": 279, - "filename_relative": "src/OptionsToken.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", - "filename_short": "src/OptionsToken.sol", - "is_dependency": false, - "lines": [ - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OptionsToken", - "source_mapping": { - "start": 691, - "length": 7138, - "filename_relative": "src/OptionsToken.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", - "filename_short": "src/OptionsToken.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "initialize(string,string,address)" - } - } - } - }, - { - "type": "node", - "name": "tokenAdmin = tokenAdmin_", - "source_mapping": { - "start": 2779, - "length": 24, - "filename_relative": "src/OptionsToken.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", - "filename_short": "src/OptionsToken.sol", - "is_dependency": false, - "lines": [ - 64 - ], - "starting_column": 9, - "ending_column": 33 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "initialize", - "source_mapping": { - "start": 2565, - "length": 279, - "filename_relative": "src/OptionsToken.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", - "filename_short": "src/OptionsToken.sol", - "is_dependency": false, - "lines": [ - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OptionsToken", - "source_mapping": { - "start": 691, - "length": 7138, - "filename_relative": "src/OptionsToken.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", - "filename_short": "src/OptionsToken.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "initialize(string,string,address)" - } - } - } - } - ], - "description": "OptionsToken.initialize(string,string,address).tokenAdmin_ (src/OptionsToken.sol#60) lacks a zero-check on :\n\t\t- tokenAdmin = tokenAdmin_ (src/OptionsToken.sol#64)\n", - "markdown": "[OptionsToken.initialize(string,string,address).tokenAdmin_](src/OptionsToken.sol#L60) lacks a zero-check on :\n\t\t- [tokenAdmin = tokenAdmin_](src/OptionsToken.sol#L64)\n", - "first_markdown_element": "src/OptionsToken.sol#L60", - "id": "4786a41866df4f4d6e9a53f76306dff86aa5c64f249a5507c66f1281e3a75404", - "check": "missing-zero-check", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "_nextImplementation", - "source_mapping": { - "start": 6725, - "length": 27, - "filename_relative": "src/OptionsToken.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", - "filename_short": "src/OptionsToken.sol", - "is_dependency": false, - "lines": [ - 162 - ], - "starting_column": 38, - "ending_column": 65 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "initiateUpgradeCooldown", - "source_mapping": { - "start": 6692, - "length": 185, - "filename_relative": "src/OptionsToken.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", - "filename_short": "src/OptionsToken.sol", - "is_dependency": false, - "lines": [ - 162, - 163, - 164, - 165 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OptionsToken", - "source_mapping": { - "start": 691, - "length": 7138, - "filename_relative": "src/OptionsToken.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", - "filename_short": "src/OptionsToken.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "initiateUpgradeCooldown(address)" - } - } - } - }, - { - "type": "node", - "name": "nextImplementation = _nextImplementation", - "source_mapping": { - "start": 6830, - "length": 40, - "filename_relative": "src/OptionsToken.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", - "filename_short": "src/OptionsToken.sol", - "is_dependency": false, - "lines": [ - 164 - ], - "starting_column": 9, - "ending_column": 49 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "initiateUpgradeCooldown", - "source_mapping": { - "start": 6692, - "length": 185, - "filename_relative": "src/OptionsToken.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", - "filename_short": "src/OptionsToken.sol", - "is_dependency": false, - "lines": [ - 162, - 163, - 164, - 165 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OptionsToken", - "source_mapping": { - "start": 691, - "length": 7138, - "filename_relative": "src/OptionsToken.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", - "filename_short": "src/OptionsToken.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "initiateUpgradeCooldown(address)" - } - } - } - } - ], - "description": "OptionsToken.initiateUpgradeCooldown(address)._nextImplementation (src/OptionsToken.sol#162) lacks a zero-check on :\n\t\t- nextImplementation = _nextImplementation (src/OptionsToken.sol#164)\n", - "markdown": "[OptionsToken.initiateUpgradeCooldown(address)._nextImplementation](src/OptionsToken.sol#L162) lacks a zero-check on :\n\t\t- [nextImplementation = _nextImplementation](src/OptionsToken.sol#L164)\n", - "first_markdown_element": "src/OptionsToken.sol#L162", - "id": "752bb74930b6ee11a2722c36161d6ff0d00b9bc921cae3c938a9df7a3d0a692e", - "check": "missing-zero-check", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_pay", - "source_mapping": { - "start": 9913, - "length": 415, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_pay(address,uint256)" - } - }, - { - "type": "node", - "name": "underlyingToken.safeTransfer(to,balance)", - "source_mapping": { - "start": 10112, - "length": 41, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 256 - ], - "starting_column": 13, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_pay", - "source_mapping": { - "start": 9913, - "length": 415, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_pay(address,uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "underlyingToken.safeTransfer(to,amount)", - "source_mapping": { - "start": 10232, - "length": 40, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 259 - ], - "starting_column": 13, - "ending_column": 53 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_pay", - "source_mapping": { - "start": 9913, - "length": 415, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_pay(address,uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "underlyingToken.safeTransfer(to,balance)", - "source_mapping": { - "start": 10112, - "length": 41, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 256 - ], - "starting_column": 13, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_pay", - "source_mapping": { - "start": 9913, - "length": 415, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_pay(address,uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "underlyingToken.safeTransfer(to,amount)", - "source_mapping": { - "start": 10232, - "length": 40, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 259 - ], - "starting_column": 13, - "ending_column": 53 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_pay", - "source_mapping": { - "start": 9913, - "length": 415, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_pay(address,uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "credit[to] += remainingAmount", - "source_mapping": { - "start": 10292, - "length": 29, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 261 - ], - "starting_column": 9, - "ending_column": 38 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_pay", - "source_mapping": { - "start": 9913, - "length": 415, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_pay(address,uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "credit" - } - } - ], - "description": "Reentrancy in DiscountExercise._pay(address,uint256) (src/exercise/DiscountExercise.sol#253-262):\n\tExternal calls:\n\t- underlyingToken.safeTransfer(to,balance) (src/exercise/DiscountExercise.sol#256)\n\t- underlyingToken.safeTransfer(to,amount) (src/exercise/DiscountExercise.sol#259)\n\tState variables written after the call(s):\n\t- credit[to] += remainingAmount (src/exercise/DiscountExercise.sol#261)\n", - "markdown": "Reentrancy in [DiscountExercise._pay(address,uint256)](src/exercise/DiscountExercise.sol#L253-L262):\n\tExternal calls:\n\t- [underlyingToken.safeTransfer(to,balance)](src/exercise/DiscountExercise.sol#L256)\n\t- [underlyingToken.safeTransfer(to,amount)](src/exercise/DiscountExercise.sol#L259)\n\tState variables written after the call(s):\n\t- [credit[to] += remainingAmount](src/exercise/DiscountExercise.sol#L261)\n", - "first_markdown_element": "src/exercise/DiscountExercise.sol#L253-L262", - "id": "90b417a7fb4fc819e0ffafdfc6e3850abd2a28d5ee88b307754c749fcc5ac59a", - "check": "reentrancy-benign", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "swapUniV2", - "source_mapping": { - "start": 5108, - "length": 515, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - }, - { - "type": "node", - "name": "_swapUniV2(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive)", - "source_mapping": { - "start": 5527, - "length": 89, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 149 - ], - "starting_column": 9, - "ending_column": 98 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV2", - "source_mapping": { - "start": 5108, - "length": 515, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "returndata = address(token).functionCall(data,SafeERC20: low-level call failed)", - "source_mapping": { - "start": 4166, - "length": 95, - "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "is_dependency": true, - "lines": [ - 110 - ], - "starting_column": 9, - "ending_column": 104 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_callOptionalReturn", - "source_mapping": { - "start": 3747, - "length": 706, - "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "is_dependency": true, - "lines": [ - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "SafeERC20", - "source_mapping": { - "start": 707, - "length": 3748, - "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_callOptionalReturn(IERC20,bytes)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "(success,returndata) = target.call{value: value}(data)", - "source_mapping": { - "start": 5240, - "length": 73, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 135 - ], - "starting_column": 9, - "ending_column": 82 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "functionCallWithValue", - "source_mapping": { - "start": 4960, - "length": 446, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Address", - "source_mapping": { - "start": 194, - "length": 8964, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "functionCallWithValue(address,bytes,uint256,string)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "IERC20(_from).safeIncreaseAllowance(_router,_amount)", - "source_mapping": { - "start": 1488, - "length": 53, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 42 - ], - "starting_column": 9, - "ending_column": 62 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapUniV2", - "source_mapping": { - "start": 748, - "length": 1626, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "UniV2Mixin", - "source_mapping": { - "start": 234, - "length": 4634, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapUniV2(address,address,uint256,uint256,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "IUniswapV2Router02(_router).swapExactTokensForTokensSupportingFeeOnTransferTokens(_amount,_minAmountOut,path,address(this),_deadline)", - "source_mapping": { - "start": 1662, - "length": 422, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapUniV2", - "source_mapping": { - "start": 748, - "length": 1626, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "UniV2Mixin", - "source_mapping": { - "start": 234, - "length": 4634, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapUniV2(address,address,uint256,uint256,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "IERC20(_from).safeApprove(_router,0)", - "source_mapping": { - "start": 1954, - "length": 37, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 51 - ], - "starting_column": 17, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapUniV2", - "source_mapping": { - "start": 748, - "length": 1626, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "UniV2Mixin", - "source_mapping": { - "start": 234, - "length": 4634, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapUniV2(address,address,uint256,uint256,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "IUniswapV2Router02(_router).swapExactTokensForTokensSupportingFeeOnTransferTokens(_amount,_minAmountOut,path,address(this),_deadline)", - "source_mapping": { - "start": 2114, - "length": 167, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 55, - 56, - 57 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapUniV2", - "source_mapping": { - "start": 748, - "length": 1626, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "UniV2Mixin", - "source_mapping": { - "start": 234, - "length": 4634, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapUniV2(address,address,uint256,uint256,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "pullFromBefore(_from,_amount)", - "source_mapping": { - "start": 5342, - "length": 30, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 147 - ], - "starting_column": 14, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV2", - "source_mapping": { - "start": 5108, - "length": 515, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "returndata = address(token).functionCall(data,SafeERC20: low-level call failed)", - "source_mapping": { - "start": 4298, - "length": 95, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "is_dependency": true, - "lines": [ - 110 - ], - "starting_column": 9, - "ending_column": 104 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_callOptionalReturn", - "source_mapping": { - "start": 3868, - "length": 717, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "is_dependency": true, - "lines": [ - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "SafeERC20Upgradeable", - "source_mapping": { - "start": 740, - "length": 3847, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_callOptionalReturn(IERC20Upgradeable,bytes)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "IERC20MetadataUpgradeable(_from).safeTransferFrom(msg.sender,address(this),_amount)", - "source_mapping": { - "start": 19490, - "length": 85, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 485 - ], - "starting_column": 9, - "ending_column": 94 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "pullFromBefore", - "source_mapping": { - "start": 19424, - "length": 169, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 484, - 485, - 486, - 487 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "pullFromBefore(address,uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "(success,returndata) = target.call{value: value}(data)", - "source_mapping": { - "start": 5251, - "length": 73, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 135 - ], - "starting_column": 9, - "ending_column": 82 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "functionCallWithValue", - "source_mapping": { - "start": 4971, - "length": 446, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AddressUpgradeable", - "source_mapping": { - "start": 194, - "length": 8087, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "functionCallWithValue(address,bytes,uint256,string)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "pushFromAndToAfter(_from,_to)", - "source_mapping": { - "start": 5373, - "length": 30, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 147 - ], - "starting_column": 45, - "ending_column": 75 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV2", - "source_mapping": { - "start": 5108, - "length": 515, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "returndata = address(token).functionCall(data,SafeERC20: low-level call failed)", - "source_mapping": { - "start": 4298, - "length": 95, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "is_dependency": true, - "lines": [ - 110 - ], - "starting_column": 9, - "ending_column": 104 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_callOptionalReturn", - "source_mapping": { - "start": 3868, - "length": 717, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "is_dependency": true, - "lines": [ - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "SafeERC20Upgradeable", - "source_mapping": { - "start": 740, - "length": 3847, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_callOptionalReturn(IERC20Upgradeable,bytes)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "IERC20MetadataUpgradeable(_from).safeTransfer(msg.sender,fromBal)", - "source_mapping": { - "start": 19793, - "length": 66, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 493 - ], - "starting_column": 13, - "ending_column": 79 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "pushFromAndToAfter", - "source_mapping": { - "start": 19599, - "length": 470, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "pushFromAndToAfter(address,address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "(success,returndata) = target.call{value: value}(data)", - "source_mapping": { - "start": 5251, - "length": 73, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 135 - ], - "starting_column": 9, - "ending_column": 82 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "functionCallWithValue", - "source_mapping": { - "start": 4971, - "length": 446, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AddressUpgradeable", - "source_mapping": { - "start": 194, - "length": 8087, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "functionCallWithValue(address,bytes,uint256,string)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "IERC20MetadataUpgradeable(_to).safeTransfer(msg.sender,toBal)", - "source_mapping": { - "start": 19990, - "length": 62, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 497 - ], - "starting_column": 13, - "ending_column": 75 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "pushFromAndToAfter", - "source_mapping": { - "start": 19599, - "length": 470, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "pushFromAndToAfter(address,address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "_swapUniV2(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive)", - "source_mapping": { - "start": 5527, - "length": 89, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 149 - ], - "starting_column": 9, - "ending_column": 98 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV2", - "source_mapping": { - "start": 5108, - "length": 515, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "(success,returndata) = target.call{value: value}(data)", - "source_mapping": { - "start": 5240, - "length": 73, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 135 - ], - "starting_column": 9, - "ending_column": 82 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "functionCallWithValue", - "source_mapping": { - "start": 4960, - "length": 446, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Address", - "source_mapping": { - "start": 194, - "length": 8964, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "functionCallWithValue(address,bytes,uint256,string)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "pullFromBefore(_from,_amount)", - "source_mapping": { - "start": 5342, - "length": 30, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 147 - ], - "starting_column": 14, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV2", - "source_mapping": { - "start": 5108, - "length": 515, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "(success,returndata) = target.call{value: value}(data)", - "source_mapping": { - "start": 5251, - "length": 73, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 135 - ], - "starting_column": 9, - "ending_column": 82 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "functionCallWithValue", - "source_mapping": { - "start": 4971, - "length": 446, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AddressUpgradeable", - "source_mapping": { - "start": 194, - "length": 8087, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "functionCallWithValue(address,bytes,uint256,string)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "pushFromAndToAfter(_from,_to)", - "source_mapping": { - "start": 5373, - "length": 30, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 147 - ], - "starting_column": 45, - "ending_column": 75 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV2", - "source_mapping": { - "start": 5108, - "length": 515, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "(success,returndata) = target.call{value: value}(data)", - "source_mapping": { - "start": 5251, - "length": 73, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 135 - ], - "starting_column": 9, - "ending_column": 82 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "functionCallWithValue", - "source_mapping": { - "start": 4971, - "length": 446, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AddressUpgradeable", - "source_mapping": { - "start": 194, - "length": 8087, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "functionCallWithValue(address,bytes,uint256,string)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "GetAmountsOutFailed(_router,_amount,_from,_to)", - "source_mapping": { - "start": 1323, - "length": 54, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 37 - ], - "starting_column": 13, - "ending_column": 67 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapUniV2", - "source_mapping": { - "start": 748, - "length": 1626, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "UniV2Mixin", - "source_mapping": { - "start": 234, - "length": 4634, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapUniV2(address,address,uint256,uint256,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "event" - } - }, - { - "type": "node", - "name": "_swapUniV2(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive)", - "source_mapping": { - "start": 5527, - "length": 89, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 149 - ], - "starting_column": 9, - "ending_column": 98 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV2", - "source_mapping": { - "start": 5108, - "length": 515, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "event" - } - }, - { - "type": "node", - "name": "SwapFailed(_router,_amount,_minAmountOut,_from,_to)", - "source_mapping": { - "start": 2009, - "length": 60, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 52 - ], - "starting_column": 17, - "ending_column": 77 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapUniV2", - "source_mapping": { - "start": 748, - "length": 1626, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "UniV2Mixin", - "source_mapping": { - "start": 234, - "length": 4634, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapUniV2(address,address,uint256,uint256,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "event" - } - }, - { - "type": "node", - "name": "_swapUniV2(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive)", - "source_mapping": { - "start": 5527, - "length": 89, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 149 - ], - "starting_column": 9, - "ending_column": 98 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV2", - "source_mapping": { - "start": 5108, - "length": 515, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "event" - } - } - ], - "description": "Reentrancy in ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool) (lib/vault-v2/src/ReaperSwapper.sol#139-150):\n\tExternal calls:\n\t- _swapUniV2(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive) (lib/vault-v2/src/ReaperSwapper.sol#149)\n\t\t- returndata = address(token).functionCall(data,SafeERC20: low-level call failed) (lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#110)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts/contracts/utils/Address.sol#135)\n\t\t- IERC20(_from).safeIncreaseAllowance(_router,_amount) (lib/vault-v2/src/mixins/UniV2Mixin.sol#42)\n\t\t- IUniswapV2Router02(_router).swapExactTokensForTokensSupportingFeeOnTransferTokens(_amount,_minAmountOut,path,address(this),_deadline) (lib/vault-v2/src/mixins/UniV2Mixin.sol#46-53)\n\t\t- IERC20(_from).safeApprove(_router,0) (lib/vault-v2/src/mixins/UniV2Mixin.sol#51)\n\t\t- IUniswapV2Router02(_router).swapExactTokensForTokensSupportingFeeOnTransferTokens(_amount,_minAmountOut,path,address(this),_deadline) (lib/vault-v2/src/mixins/UniV2Mixin.sol#55-57)\n\t- pullFromBefore(_from,_amount) (lib/vault-v2/src/ReaperSwapper.sol#147)\n\t\t- returndata = address(token).functionCall(data,SafeERC20: low-level call failed) (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#110)\n\t\t- IERC20MetadataUpgradeable(_from).safeTransferFrom(msg.sender,address(this),_amount) (lib/vault-v2/src/ReaperSwapper.sol#485)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#135)\n\t- pushFromAndToAfter(_from,_to) (lib/vault-v2/src/ReaperSwapper.sol#147)\n\t\t- returndata = address(token).functionCall(data,SafeERC20: low-level call failed) (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#110)\n\t\t- IERC20MetadataUpgradeable(_from).safeTransfer(msg.sender,fromBal) (lib/vault-v2/src/ReaperSwapper.sol#493)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#135)\n\t\t- IERC20MetadataUpgradeable(_to).safeTransfer(msg.sender,toBal) (lib/vault-v2/src/ReaperSwapper.sol#497)\n\tExternal calls sending eth:\n\t- _swapUniV2(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive) (lib/vault-v2/src/ReaperSwapper.sol#149)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts/contracts/utils/Address.sol#135)\n\t- pullFromBefore(_from,_amount) (lib/vault-v2/src/ReaperSwapper.sol#147)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#135)\n\t- pushFromAndToAfter(_from,_to) (lib/vault-v2/src/ReaperSwapper.sol#147)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#135)\n\tEvent emitted after the call(s):\n\t- GetAmountsOutFailed(_router,_amount,_from,_to) (lib/vault-v2/src/mixins/UniV2Mixin.sol#37)\n\t\t- _swapUniV2(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive) (lib/vault-v2/src/ReaperSwapper.sol#149)\n\t- SwapFailed(_router,_amount,_minAmountOut,_from,_to) (lib/vault-v2/src/mixins/UniV2Mixin.sol#52)\n\t\t- _swapUniV2(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive) (lib/vault-v2/src/ReaperSwapper.sol#149)\n", - "markdown": "Reentrancy in [ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)](lib/vault-v2/src/ReaperSwapper.sol#L139-L150):\n\tExternal calls:\n\t- [_swapUniV2(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive)](lib/vault-v2/src/ReaperSwapper.sol#L149)\n\t\t- [returndata = address(token).functionCall(data,SafeERC20: low-level call failed)](lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#L110)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135)\n\t\t- [IERC20(_from).safeIncreaseAllowance(_router,_amount)](lib/vault-v2/src/mixins/UniV2Mixin.sol#L42)\n\t\t- [IUniswapV2Router02(_router).swapExactTokensForTokensSupportingFeeOnTransferTokens(_amount,_minAmountOut,path,address(this),_deadline)](lib/vault-v2/src/mixins/UniV2Mixin.sol#L46-L53)\n\t\t- [IERC20(_from).safeApprove(_router,0)](lib/vault-v2/src/mixins/UniV2Mixin.sol#L51)\n\t\t- [IUniswapV2Router02(_router).swapExactTokensForTokensSupportingFeeOnTransferTokens(_amount,_minAmountOut,path,address(this),_deadline)](lib/vault-v2/src/mixins/UniV2Mixin.sol#L55-L57)\n\t- [pullFromBefore(_from,_amount)](lib/vault-v2/src/ReaperSwapper.sol#L147)\n\t\t- [returndata = address(token).functionCall(data,SafeERC20: low-level call failed)](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#L110)\n\t\t- [IERC20MetadataUpgradeable(_from).safeTransferFrom(msg.sender,address(this),_amount)](lib/vault-v2/src/ReaperSwapper.sol#L485)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L135)\n\t- [pushFromAndToAfter(_from,_to)](lib/vault-v2/src/ReaperSwapper.sol#L147)\n\t\t- [returndata = address(token).functionCall(data,SafeERC20: low-level call failed)](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#L110)\n\t\t- [IERC20MetadataUpgradeable(_from).safeTransfer(msg.sender,fromBal)](lib/vault-v2/src/ReaperSwapper.sol#L493)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L135)\n\t\t- [IERC20MetadataUpgradeable(_to).safeTransfer(msg.sender,toBal)](lib/vault-v2/src/ReaperSwapper.sol#L497)\n\tExternal calls sending eth:\n\t- [_swapUniV2(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive)](lib/vault-v2/src/ReaperSwapper.sol#L149)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135)\n\t- [pullFromBefore(_from,_amount)](lib/vault-v2/src/ReaperSwapper.sol#L147)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L135)\n\t- [pushFromAndToAfter(_from,_to)](lib/vault-v2/src/ReaperSwapper.sol#L147)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L135)\n\tEvent emitted after the call(s):\n\t- [GetAmountsOutFailed(_router,_amount,_from,_to)](lib/vault-v2/src/mixins/UniV2Mixin.sol#L37)\n\t\t- [_swapUniV2(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive)](lib/vault-v2/src/ReaperSwapper.sol#L149)\n\t- [SwapFailed(_router,_amount,_minAmountOut,_from,_to)](lib/vault-v2/src/mixins/UniV2Mixin.sol#L52)\n\t\t- [_swapUniV2(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive)](lib/vault-v2/src/ReaperSwapper.sol#L149)\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L139-L150", - "id": "10ddb26acba74e372c85b3164933929baee8d00e79dab8d38b7fdeed4f18d3a0", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "swapVelo", - "source_mapping": { - "start": 7406, - "length": 513, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - }, - { - "type": "node", - "name": "_swapVelo(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive)", - "source_mapping": { - "start": 7824, - "length": 88, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 217 - ], - "starting_column": 9, - "ending_column": 97 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapVelo", - "source_mapping": { - "start": 7406, - "length": 513, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "returndata = address(token).functionCall(data,SafeERC20: low-level call failed)", - "source_mapping": { - "start": 4166, - "length": 95, - "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "is_dependency": true, - "lines": [ - 110 - ], - "starting_column": 9, - "ending_column": 104 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_callOptionalReturn", - "source_mapping": { - "start": 3747, - "length": 706, - "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "is_dependency": true, - "lines": [ - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "SafeERC20", - "source_mapping": { - "start": 707, - "length": 3748, - "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_callOptionalReturn(IERC20,bytes)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "(success,returndata) = target.call{value: value}(data)", - "source_mapping": { - "start": 5240, - "length": 73, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 135 - ], - "starting_column": 9, - "ending_column": 82 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "functionCallWithValue", - "source_mapping": { - "start": 4960, - "length": 446, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Address", - "source_mapping": { - "start": 194, - "length": 8964, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "functionCallWithValue(address,bytes,uint256,string)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "IERC20(_from).safeIncreaseAllowance(_router,_amount)", - "source_mapping": { - "start": 1784, - "length": 53, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 50 - ], - "starting_column": 9, - "ending_column": 62 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapVelo", - "source_mapping": { - "start": 862, - "length": 1768, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VeloSolidMixin", - "source_mapping": { - "start": 313, - "length": 4635, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapVelo(address,address,uint256,uint256,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "router.swapExactTokensForTokensSupportingFeeOnTransferTokens(_amount,_minAmountOut,path,address(this),_deadline)", - "source_mapping": { - "start": 1889, - "length": 401, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapVelo", - "source_mapping": { - "start": 862, - "length": 1768, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VeloSolidMixin", - "source_mapping": { - "start": 313, - "length": 4635, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapVelo(address,address,uint256,uint256,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "IERC20(_from).safeApprove(_router,0)", - "source_mapping": { - "start": 2160, - "length": 37, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 57 - ], - "starting_column": 17, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapVelo", - "source_mapping": { - "start": 862, - "length": 1768, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VeloSolidMixin", - "source_mapping": { - "start": 313, - "length": 4635, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapVelo(address,address,uint256,uint256,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "router.swapExactTokensForTokensSupportingFeeOnTransferTokens(_amount,_minAmountOut,path,address(this),_deadline)", - "source_mapping": { - "start": 2327, - "length": 210, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 62, - 63, - 64, - 65, - 66, - 67, - 68 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapVelo", - "source_mapping": { - "start": 862, - "length": 1768, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VeloSolidMixin", - "source_mapping": { - "start": 313, - "length": 4635, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapVelo(address,address,uint256,uint256,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "pullFromBefore(_from,_amount)", - "source_mapping": { - "start": 7639, - "length": 30, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 215 - ], - "starting_column": 14, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapVelo", - "source_mapping": { - "start": 7406, - "length": 513, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "returndata = address(token).functionCall(data,SafeERC20: low-level call failed)", - "source_mapping": { - "start": 4298, - "length": 95, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "is_dependency": true, - "lines": [ - 110 - ], - "starting_column": 9, - "ending_column": 104 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_callOptionalReturn", - "source_mapping": { - "start": 3868, - "length": 717, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "is_dependency": true, - "lines": [ - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "SafeERC20Upgradeable", - "source_mapping": { - "start": 740, - "length": 3847, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_callOptionalReturn(IERC20Upgradeable,bytes)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "IERC20MetadataUpgradeable(_from).safeTransferFrom(msg.sender,address(this),_amount)", - "source_mapping": { - "start": 19490, - "length": 85, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 485 - ], - "starting_column": 9, - "ending_column": 94 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "pullFromBefore", - "source_mapping": { - "start": 19424, - "length": 169, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 484, - 485, - 486, - 487 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "pullFromBefore(address,uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "(success,returndata) = target.call{value: value}(data)", - "source_mapping": { - "start": 5251, - "length": 73, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 135 - ], - "starting_column": 9, - "ending_column": 82 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "functionCallWithValue", - "source_mapping": { - "start": 4971, - "length": 446, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AddressUpgradeable", - "source_mapping": { - "start": 194, - "length": 8087, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "functionCallWithValue(address,bytes,uint256,string)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "pushFromAndToAfter(_from,_to)", - "source_mapping": { - "start": 7670, - "length": 30, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 215 - ], - "starting_column": 45, - "ending_column": 75 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapVelo", - "source_mapping": { - "start": 7406, - "length": 513, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "returndata = address(token).functionCall(data,SafeERC20: low-level call failed)", - "source_mapping": { - "start": 4298, - "length": 95, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "is_dependency": true, - "lines": [ - 110 - ], - "starting_column": 9, - "ending_column": 104 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_callOptionalReturn", - "source_mapping": { - "start": 3868, - "length": 717, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "is_dependency": true, - "lines": [ - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "SafeERC20Upgradeable", - "source_mapping": { - "start": 740, - "length": 3847, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_callOptionalReturn(IERC20Upgradeable,bytes)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "IERC20MetadataUpgradeable(_from).safeTransfer(msg.sender,fromBal)", - "source_mapping": { - "start": 19793, - "length": 66, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 493 - ], - "starting_column": 13, - "ending_column": 79 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "pushFromAndToAfter", - "source_mapping": { - "start": 19599, - "length": 470, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "pushFromAndToAfter(address,address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "(success,returndata) = target.call{value: value}(data)", - "source_mapping": { - "start": 5251, - "length": 73, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 135 - ], - "starting_column": 9, - "ending_column": 82 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "functionCallWithValue", - "source_mapping": { - "start": 4971, - "length": 446, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AddressUpgradeable", - "source_mapping": { - "start": 194, - "length": 8087, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "functionCallWithValue(address,bytes,uint256,string)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "IERC20MetadataUpgradeable(_to).safeTransfer(msg.sender,toBal)", - "source_mapping": { - "start": 19990, - "length": 62, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 497 - ], - "starting_column": 13, - "ending_column": 75 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "pushFromAndToAfter", - "source_mapping": { - "start": 19599, - "length": 470, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "pushFromAndToAfter(address,address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "_swapVelo(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive)", - "source_mapping": { - "start": 7824, - "length": 88, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 217 - ], - "starting_column": 9, - "ending_column": 97 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapVelo", - "source_mapping": { - "start": 7406, - "length": 513, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "(success,returndata) = target.call{value: value}(data)", - "source_mapping": { - "start": 5240, - "length": 73, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 135 - ], - "starting_column": 9, - "ending_column": 82 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "functionCallWithValue", - "source_mapping": { - "start": 4960, - "length": 446, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Address", - "source_mapping": { - "start": 194, - "length": 8964, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "functionCallWithValue(address,bytes,uint256,string)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "pullFromBefore(_from,_amount)", - "source_mapping": { - "start": 7639, - "length": 30, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 215 - ], - "starting_column": 14, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapVelo", - "source_mapping": { - "start": 7406, - "length": 513, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "(success,returndata) = target.call{value: value}(data)", - "source_mapping": { - "start": 5251, - "length": 73, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 135 - ], - "starting_column": 9, - "ending_column": 82 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "functionCallWithValue", - "source_mapping": { - "start": 4971, - "length": 446, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AddressUpgradeable", - "source_mapping": { - "start": 194, - "length": 8087, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "functionCallWithValue(address,bytes,uint256,string)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "pushFromAndToAfter(_from,_to)", - "source_mapping": { - "start": 7670, - "length": 30, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 215 - ], - "starting_column": 45, - "ending_column": 75 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapVelo", - "source_mapping": { - "start": 7406, - "length": 513, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "(success,returndata) = target.call{value: value}(data)", - "source_mapping": { - "start": 5251, - "length": 73, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 135 - ], - "starting_column": 9, - "ending_column": 82 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "functionCallWithValue", - "source_mapping": { - "start": 4971, - "length": 446, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AddressUpgradeable", - "source_mapping": { - "start": 194, - "length": 8087, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "functionCallWithValue(address,bytes,uint256,string)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "GetAmountsOutFailed(_router,_amount,_from,_to)", - "source_mapping": { - "start": 1619, - "length": 54, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 45 - ], - "starting_column": 13, - "ending_column": 67 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapVelo", - "source_mapping": { - "start": 862, - "length": 1768, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VeloSolidMixin", - "source_mapping": { - "start": 313, - "length": 4635, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapVelo(address,address,uint256,uint256,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "event" - } - }, - { - "type": "node", - "name": "_swapVelo(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive)", - "source_mapping": { - "start": 7824, - "length": 88, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 217 - ], - "starting_column": 9, - "ending_column": 97 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapVelo", - "source_mapping": { - "start": 7406, - "length": 513, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "event" - } - }, - { - "type": "node", - "name": "SwapFailed(_router,_amount,_minAmountOut,_from,_to)", - "source_mapping": { - "start": 2215, - "length": 60, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 58 - ], - "starting_column": 17, - "ending_column": 77 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapVelo", - "source_mapping": { - "start": 862, - "length": 1768, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VeloSolidMixin", - "source_mapping": { - "start": 313, - "length": 4635, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapVelo(address,address,uint256,uint256,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "event" - } - }, - { - "type": "node", - "name": "_swapVelo(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive)", - "source_mapping": { - "start": 7824, - "length": 88, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 217 - ], - "starting_column": 9, - "ending_column": 97 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapVelo", - "source_mapping": { - "start": 7406, - "length": 513, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "event" - } - } - ], - "description": "Reentrancy in ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool) (lib/vault-v2/src/ReaperSwapper.sol#207-218):\n\tExternal calls:\n\t- _swapVelo(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive) (lib/vault-v2/src/ReaperSwapper.sol#217)\n\t\t- returndata = address(token).functionCall(data,SafeERC20: low-level call failed) (lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#110)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts/contracts/utils/Address.sol#135)\n\t\t- IERC20(_from).safeIncreaseAllowance(_router,_amount) (lib/vault-v2/src/mixins/VeloSolidMixin.sol#50)\n\t\t- router.swapExactTokensForTokensSupportingFeeOnTransferTokens(_amount,_minAmountOut,path,address(this),_deadline) (lib/vault-v2/src/mixins/VeloSolidMixin.sol#52-59)\n\t\t- IERC20(_from).safeApprove(_router,0) (lib/vault-v2/src/mixins/VeloSolidMixin.sol#57)\n\t\t- router.swapExactTokensForTokensSupportingFeeOnTransferTokens(_amount,_minAmountOut,path,address(this),_deadline) (lib/vault-v2/src/mixins/VeloSolidMixin.sol#62-68)\n\t- pullFromBefore(_from,_amount) (lib/vault-v2/src/ReaperSwapper.sol#215)\n\t\t- returndata = address(token).functionCall(data,SafeERC20: low-level call failed) (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#110)\n\t\t- IERC20MetadataUpgradeable(_from).safeTransferFrom(msg.sender,address(this),_amount) (lib/vault-v2/src/ReaperSwapper.sol#485)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#135)\n\t- pushFromAndToAfter(_from,_to) (lib/vault-v2/src/ReaperSwapper.sol#215)\n\t\t- returndata = address(token).functionCall(data,SafeERC20: low-level call failed) (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#110)\n\t\t- IERC20MetadataUpgradeable(_from).safeTransfer(msg.sender,fromBal) (lib/vault-v2/src/ReaperSwapper.sol#493)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#135)\n\t\t- IERC20MetadataUpgradeable(_to).safeTransfer(msg.sender,toBal) (lib/vault-v2/src/ReaperSwapper.sol#497)\n\tExternal calls sending eth:\n\t- _swapVelo(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive) (lib/vault-v2/src/ReaperSwapper.sol#217)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts/contracts/utils/Address.sol#135)\n\t- pullFromBefore(_from,_amount) (lib/vault-v2/src/ReaperSwapper.sol#215)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#135)\n\t- pushFromAndToAfter(_from,_to) (lib/vault-v2/src/ReaperSwapper.sol#215)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#135)\n\tEvent emitted after the call(s):\n\t- GetAmountsOutFailed(_router,_amount,_from,_to) (lib/vault-v2/src/mixins/VeloSolidMixin.sol#45)\n\t\t- _swapVelo(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive) (lib/vault-v2/src/ReaperSwapper.sol#217)\n\t- SwapFailed(_router,_amount,_minAmountOut,_from,_to) (lib/vault-v2/src/mixins/VeloSolidMixin.sol#58)\n\t\t- _swapVelo(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive) (lib/vault-v2/src/ReaperSwapper.sol#217)\n", - "markdown": "Reentrancy in [ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)](lib/vault-v2/src/ReaperSwapper.sol#L207-L218):\n\tExternal calls:\n\t- [_swapVelo(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive)](lib/vault-v2/src/ReaperSwapper.sol#L217)\n\t\t- [returndata = address(token).functionCall(data,SafeERC20: low-level call failed)](lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#L110)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135)\n\t\t- [IERC20(_from).safeIncreaseAllowance(_router,_amount)](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L50)\n\t\t- [router.swapExactTokensForTokensSupportingFeeOnTransferTokens(_amount,_minAmountOut,path,address(this),_deadline)](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L52-L59)\n\t\t- [IERC20(_from).safeApprove(_router,0)](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L57)\n\t\t- [router.swapExactTokensForTokensSupportingFeeOnTransferTokens(_amount,_minAmountOut,path,address(this),_deadline)](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L62-L68)\n\t- [pullFromBefore(_from,_amount)](lib/vault-v2/src/ReaperSwapper.sol#L215)\n\t\t- [returndata = address(token).functionCall(data,SafeERC20: low-level call failed)](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#L110)\n\t\t- [IERC20MetadataUpgradeable(_from).safeTransferFrom(msg.sender,address(this),_amount)](lib/vault-v2/src/ReaperSwapper.sol#L485)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L135)\n\t- [pushFromAndToAfter(_from,_to)](lib/vault-v2/src/ReaperSwapper.sol#L215)\n\t\t- [returndata = address(token).functionCall(data,SafeERC20: low-level call failed)](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#L110)\n\t\t- [IERC20MetadataUpgradeable(_from).safeTransfer(msg.sender,fromBal)](lib/vault-v2/src/ReaperSwapper.sol#L493)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L135)\n\t\t- [IERC20MetadataUpgradeable(_to).safeTransfer(msg.sender,toBal)](lib/vault-v2/src/ReaperSwapper.sol#L497)\n\tExternal calls sending eth:\n\t- [_swapVelo(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive)](lib/vault-v2/src/ReaperSwapper.sol#L217)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135)\n\t- [pullFromBefore(_from,_amount)](lib/vault-v2/src/ReaperSwapper.sol#L215)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L135)\n\t- [pushFromAndToAfter(_from,_to)](lib/vault-v2/src/ReaperSwapper.sol#L215)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L135)\n\tEvent emitted after the call(s):\n\t- [GetAmountsOutFailed(_router,_amount,_from,_to)](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L45)\n\t\t- [_swapVelo(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive)](lib/vault-v2/src/ReaperSwapper.sol#L217)\n\t- [SwapFailed(_router,_amount,_minAmountOut,_from,_to)](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L58)\n\t\t- [_swapVelo(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive)](lib/vault-v2/src/ReaperSwapper.sol#L217)\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L207-L218", - "id": "19acbcb4d6835840db936ed70e0dddd5b1f9569d32cc2f3bbd64ec8e55f0a367", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_redeem", - "source_mapping": { - "start": 9155, - "length": 752, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_redeem(address,uint256,address,DiscountExerciseParams)" - } - }, - { - "type": "node", - "name": "distributeFeesFrom(paymentAmount,paymentToken,from)", - "source_mapping": { - "start": 9698, - "length": 53, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 246 - ], - "starting_column": 9, - "ending_column": 62 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_redeem", - "source_mapping": { - "start": 9155, - "length": 752, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_redeem(address,uint256,address,DiscountExerciseParams)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "returndata = address(token).functionCall(data,SafeERC20: low-level call failed)", - "source_mapping": { - "start": 4166, - "length": 95, - "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "is_dependency": true, - "lines": [ - 110 - ], - "starting_column": 9, - "ending_column": 104 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_callOptionalReturn", - "source_mapping": { - "start": 3747, - "length": 706, - "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "is_dependency": true, - "lines": [ - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "SafeERC20", - "source_mapping": { - "start": 707, - "length": 3748, - "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_callOptionalReturn(IERC20,bytes)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "(success,returndata) = target.call{value: value}(data)", - "source_mapping": { - "start": 5240, - "length": 73, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 135 - ], - "starting_column": 9, - "ending_column": 82 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "functionCallWithValue", - "source_mapping": { - "start": 4960, - "length": 446, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Address", - "source_mapping": { - "start": 194, - "length": 8964, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "functionCallWithValue(address,bytes,uint256,string)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "token.safeTransferFrom(from,feeRecipients[i],feeAmount)", - "source_mapping": { - "start": 3306, - "length": 57, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 79 - ], - "starting_column": 13, - "ending_column": 70 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "distributeFeesFrom", - "source_mapping": { - "start": 3017, - "length": 554, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseExercise", - "source_mapping": { - "start": 432, - "length": 3936, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "distributeFeesFrom(uint256,IERC20,address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "token.safeTransferFrom(from,feeRecipients[feeRecipients.length - 1],remaining)", - "source_mapping": { - "start": 3419, - "length": 80, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 82 - ], - "starting_column": 9, - "ending_column": 89 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "distributeFeesFrom", - "source_mapping": { - "start": 3017, - "length": 554, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseExercise", - "source_mapping": { - "start": 432, - "length": 3936, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "distributeFeesFrom(uint256,IERC20,address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "_pay(recipient,amount)", - "source_mapping": { - "start": 9812, - "length": 23, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 248 - ], - "starting_column": 9, - "ending_column": 32 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_redeem", - "source_mapping": { - "start": 9155, - "length": 752, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_redeem(address,uint256,address,DiscountExerciseParams)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "returndata = address(token).functionCall(data,SafeERC20: low-level call failed)", - "source_mapping": { - "start": 4166, - "length": 95, - "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "is_dependency": true, - "lines": [ - 110 - ], - "starting_column": 9, - "ending_column": 104 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_callOptionalReturn", - "source_mapping": { - "start": 3747, - "length": 706, - "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "is_dependency": true, - "lines": [ - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "SafeERC20", - "source_mapping": { - "start": 707, - "length": 3748, - "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_callOptionalReturn(IERC20,bytes)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "underlyingToken.safeTransfer(to,balance)", - "source_mapping": { - "start": 10112, - "length": 41, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 256 - ], - "starting_column": 13, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_pay", - "source_mapping": { - "start": 9913, - "length": 415, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_pay(address,uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "(success,returndata) = target.call{value: value}(data)", - "source_mapping": { - "start": 5240, - "length": 73, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 135 - ], - "starting_column": 9, - "ending_column": 82 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "functionCallWithValue", - "source_mapping": { - "start": 4960, - "length": 446, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Address", - "source_mapping": { - "start": 194, - "length": 8964, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "functionCallWithValue(address,bytes,uint256,string)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "underlyingToken.safeTransfer(to,amount)", - "source_mapping": { - "start": 10232, - "length": 40, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 259 - ], - "starting_column": 13, - "ending_column": 53 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_pay", - "source_mapping": { - "start": 9913, - "length": 415, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_pay(address,uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "distributeFeesFrom(paymentAmount,paymentToken,from)", - "source_mapping": { - "start": 9698, - "length": 53, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 246 - ], - "starting_column": 9, - "ending_column": 62 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_redeem", - "source_mapping": { - "start": 9155, - "length": 752, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_redeem(address,uint256,address,DiscountExerciseParams)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "(success,returndata) = target.call{value: value}(data)", - "source_mapping": { - "start": 5240, - "length": 73, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 135 - ], - "starting_column": 9, - "ending_column": 82 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "functionCallWithValue", - "source_mapping": { - "start": 4960, - "length": 446, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Address", - "source_mapping": { - "start": 194, - "length": 8964, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "functionCallWithValue(address,bytes,uint256,string)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "_pay(recipient,amount)", - "source_mapping": { - "start": 9812, - "length": 23, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 248 - ], - "starting_column": 9, - "ending_column": 32 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_redeem", - "source_mapping": { - "start": 9155, - "length": 752, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_redeem(address,uint256,address,DiscountExerciseParams)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "(success,returndata) = target.call{value: value}(data)", - "source_mapping": { - "start": 5240, - "length": 73, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 135 - ], - "starting_column": 9, - "ending_column": 82 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "functionCallWithValue", - "source_mapping": { - "start": 4960, - "length": 446, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Address", - "source_mapping": { - "start": 194, - "length": 8964, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "functionCallWithValue(address,bytes,uint256,string)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "Exercised(from,recipient,amount,paymentAmount)", - "source_mapping": { - "start": 9846, - "length": 54, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 250 - ], - "starting_column": 9, - "ending_column": 63 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_redeem", - "source_mapping": { - "start": 9155, - "length": 752, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_redeem(address,uint256,address,DiscountExerciseParams)" - } - } - }, - "additional_fields": { - "underlying_type": "event" - } - } - ], - "description": "Reentrancy in DiscountExercise._redeem(address,uint256,address,DiscountExerciseParams) (src/exercise/DiscountExercise.sol#234-251):\n\tExternal calls:\n\t- distributeFeesFrom(paymentAmount,paymentToken,from) (src/exercise/DiscountExercise.sol#246)\n\t\t- returndata = address(token).functionCall(data,SafeERC20: low-level call failed) (lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#110)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts/contracts/utils/Address.sol#135)\n\t\t- token.safeTransferFrom(from,feeRecipients[i],feeAmount) (src/exercise/BaseExercise.sol#79)\n\t\t- token.safeTransferFrom(from,feeRecipients[feeRecipients.length - 1],remaining) (src/exercise/BaseExercise.sol#82)\n\t- _pay(recipient,amount) (src/exercise/DiscountExercise.sol#248)\n\t\t- returndata = address(token).functionCall(data,SafeERC20: low-level call failed) (lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#110)\n\t\t- underlyingToken.safeTransfer(to,balance) (src/exercise/DiscountExercise.sol#256)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts/contracts/utils/Address.sol#135)\n\t\t- underlyingToken.safeTransfer(to,amount) (src/exercise/DiscountExercise.sol#259)\n\tExternal calls sending eth:\n\t- distributeFeesFrom(paymentAmount,paymentToken,from) (src/exercise/DiscountExercise.sol#246)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts/contracts/utils/Address.sol#135)\n\t- _pay(recipient,amount) (src/exercise/DiscountExercise.sol#248)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts/contracts/utils/Address.sol#135)\n\tEvent emitted after the call(s):\n\t- Exercised(from,recipient,amount,paymentAmount) (src/exercise/DiscountExercise.sol#250)\n", - "markdown": "Reentrancy in [DiscountExercise._redeem(address,uint256,address,DiscountExerciseParams)](src/exercise/DiscountExercise.sol#L234-L251):\n\tExternal calls:\n\t- [distributeFeesFrom(paymentAmount,paymentToken,from)](src/exercise/DiscountExercise.sol#L246)\n\t\t- [returndata = address(token).functionCall(data,SafeERC20: low-level call failed)](lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#L110)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135)\n\t\t- [token.safeTransferFrom(from,feeRecipients[i],feeAmount)](src/exercise/BaseExercise.sol#L79)\n\t\t- [token.safeTransferFrom(from,feeRecipients[feeRecipients.length - 1],remaining)](src/exercise/BaseExercise.sol#L82)\n\t- [_pay(recipient,amount)](src/exercise/DiscountExercise.sol#L248)\n\t\t- [returndata = address(token).functionCall(data,SafeERC20: low-level call failed)](lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#L110)\n\t\t- [underlyingToken.safeTransfer(to,balance)](src/exercise/DiscountExercise.sol#L256)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135)\n\t\t- [underlyingToken.safeTransfer(to,amount)](src/exercise/DiscountExercise.sol#L259)\n\tExternal calls sending eth:\n\t- [distributeFeesFrom(paymentAmount,paymentToken,from)](src/exercise/DiscountExercise.sol#L246)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135)\n\t- [_pay(recipient,amount)](src/exercise/DiscountExercise.sol#L248)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135)\n\tEvent emitted after the call(s):\n\t- [Exercised(from,recipient,amount,paymentAmount)](src/exercise/DiscountExercise.sol#L250)\n", - "first_markdown_element": "src/exercise/DiscountExercise.sol#L234-L251", - "id": "26caaa03d129daf1e06f63fba1f271327eb635ddffdba1b035775a48b226290d", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_swapVelo", - "source_mapping": { - "start": 862, - "length": 1768, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VeloSolidMixin", - "source_mapping": { - "start": 313, - "length": 4635, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapVelo(address,address,uint256,uint256,address,uint256,bool)" - } - }, - { - "type": "node", - "name": "IERC20(_from).safeIncreaseAllowance(_router,_amount)", - "source_mapping": { - "start": 1784, - "length": 53, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 50 - ], - "starting_column": 9, - "ending_column": 62 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapVelo", - "source_mapping": { - "start": 862, - "length": 1768, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VeloSolidMixin", - "source_mapping": { - "start": 313, - "length": 4635, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapVelo(address,address,uint256,uint256,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "router.swapExactTokensForTokensSupportingFeeOnTransferTokens(_amount,_minAmountOut,path,address(this),_deadline)", - "source_mapping": { - "start": 1889, - "length": 401, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapVelo", - "source_mapping": { - "start": 862, - "length": 1768, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VeloSolidMixin", - "source_mapping": { - "start": 313, - "length": 4635, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapVelo(address,address,uint256,uint256,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "IERC20(_from).safeApprove(_router,0)", - "source_mapping": { - "start": 2160, - "length": 37, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 57 - ], - "starting_column": 17, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapVelo", - "source_mapping": { - "start": 862, - "length": 1768, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VeloSolidMixin", - "source_mapping": { - "start": 313, - "length": 4635, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapVelo(address,address,uint256,uint256,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "SwapFailed(_router,_amount,_minAmountOut,_from,_to)", - "source_mapping": { - "start": 2215, - "length": 60, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 58 - ], - "starting_column": 17, - "ending_column": 77 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapVelo", - "source_mapping": { - "start": 862, - "length": 1768, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VeloSolidMixin", - "source_mapping": { - "start": 313, - "length": 4635, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapVelo(address,address,uint256,uint256,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "event" - } - } - ], - "description": "Reentrancy in VeloSolidMixin._swapVelo(address,address,uint256,uint256,address,uint256,bool) (lib/vault-v2/src/mixins/VeloSolidMixin.sol#24-71):\n\tExternal calls:\n\t- IERC20(_from).safeIncreaseAllowance(_router,_amount) (lib/vault-v2/src/mixins/VeloSolidMixin.sol#50)\n\t- router.swapExactTokensForTokensSupportingFeeOnTransferTokens(_amount,_minAmountOut,path,address(this),_deadline) (lib/vault-v2/src/mixins/VeloSolidMixin.sol#52-59)\n\t- IERC20(_from).safeApprove(_router,0) (lib/vault-v2/src/mixins/VeloSolidMixin.sol#57)\n\tEvent emitted after the call(s):\n\t- SwapFailed(_router,_amount,_minAmountOut,_from,_to) (lib/vault-v2/src/mixins/VeloSolidMixin.sol#58)\n", - "markdown": "Reentrancy in [VeloSolidMixin._swapVelo(address,address,uint256,uint256,address,uint256,bool)](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L24-L71):\n\tExternal calls:\n\t- [IERC20(_from).safeIncreaseAllowance(_router,_amount)](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L50)\n\t- [router.swapExactTokensForTokensSupportingFeeOnTransferTokens(_amount,_minAmountOut,path,address(this),_deadline)](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L52-L59)\n\t- [IERC20(_from).safeApprove(_router,0)](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L57)\n\tEvent emitted after the call(s):\n\t- [SwapFailed(_router,_amount,_minAmountOut,_from,_to)](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L58)\n", - "first_markdown_element": "lib/vault-v2/src/mixins/VeloSolidMixin.sol#L24-L71", - "id": "64eb188174f60b500640995e6c3c45d0308f915abcaa5e5dfe2a2d61bb334e63", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "swapBal", - "source_mapping": { - "start": 6266, - "length": 509, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - }, - { - "type": "node", - "name": "_swapBal(_from,_to,_amount,minAmountOut,_vault,_deadline,_tryCatchActive)", - "source_mapping": { - "start": 6682, - "length": 86, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 183 - ], - "starting_column": 9, - "ending_column": 95 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapBal", - "source_mapping": { - "start": 6266, - "length": 509, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "returndata = address(token).functionCall(data,SafeERC20: low-level call failed)", - "source_mapping": { - "start": 4166, - "length": 95, - "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "is_dependency": true, - "lines": [ - 110 - ], - "starting_column": 9, - "ending_column": 104 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_callOptionalReturn", - "source_mapping": { - "start": 3747, - "length": 706, - "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "is_dependency": true, - "lines": [ - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "SafeERC20", - "source_mapping": { - "start": 707, - "length": 3748, - "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_callOptionalReturn(IERC20,bytes)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "(success,returndata) = target.call{value: value}(data)", - "source_mapping": { - "start": 5240, - "length": 73, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 135 - ], - "starting_column": 9, - "ending_column": 82 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "functionCallWithValue", - "source_mapping": { - "start": 4960, - "length": 446, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Address", - "source_mapping": { - "start": 194, - "length": 8964, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "functionCallWithValue(address,bytes,uint256,string)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "IERC20(_from).safeIncreaseAllowance(_vault,_amount - currentAllowance)", - "source_mapping": { - "start": 2092, - "length": 71, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 59 - ], - "starting_column": 13, - "ending_column": 84 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapBal", - "source_mapping": { - "start": 895, - "length": 1974, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BalMixin", - "source_mapping": { - "start": 307, - "length": 3662, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapBal(address,address,uint256,uint256,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "tmpAmountOut = IBeetVault(_vault).swap(singleSwap,funds,_minAmountOut,_deadline)", - "source_mapping": { - "start": 2294, - "length": 448, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapBal", - "source_mapping": { - "start": 895, - "length": 1974, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BalMixin", - "source_mapping": { - "start": 307, - "length": 3662, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapBal(address,address,uint256,uint256,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "IERC20(_from).safeApprove(_vault,0)", - "source_mapping": { - "start": 2596, - "length": 36, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 69 - ], - "starting_column": 21, - "ending_column": 57 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapBal", - "source_mapping": { - "start": 895, - "length": 1974, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BalMixin", - "source_mapping": { - "start": 307, - "length": 3662, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapBal(address,address,uint256,uint256,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "amountOut = IBeetVault(_vault).swap(singleSwap,funds,_minAmountOut,_deadline)", - "source_mapping": { - "start": 2772, - "length": 80, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 74 - ], - "starting_column": 13, - "ending_column": 93 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapBal", - "source_mapping": { - "start": 895, - "length": 1974, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BalMixin", - "source_mapping": { - "start": 307, - "length": 3662, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapBal(address,address,uint256,uint256,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "pullFromBefore(_from,_amount)", - "source_mapping": { - "start": 6497, - "length": 30, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 181 - ], - "starting_column": 14, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapBal", - "source_mapping": { - "start": 6266, - "length": 509, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "returndata = address(token).functionCall(data,SafeERC20: low-level call failed)", - "source_mapping": { - "start": 4298, - "length": 95, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "is_dependency": true, - "lines": [ - 110 - ], - "starting_column": 9, - "ending_column": 104 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_callOptionalReturn", - "source_mapping": { - "start": 3868, - "length": 717, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "is_dependency": true, - "lines": [ - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "SafeERC20Upgradeable", - "source_mapping": { - "start": 740, - "length": 3847, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_callOptionalReturn(IERC20Upgradeable,bytes)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "IERC20MetadataUpgradeable(_from).safeTransferFrom(msg.sender,address(this),_amount)", - "source_mapping": { - "start": 19490, - "length": 85, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 485 - ], - "starting_column": 9, - "ending_column": 94 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "pullFromBefore", - "source_mapping": { - "start": 19424, - "length": 169, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 484, - 485, - 486, - 487 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "pullFromBefore(address,uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "(success,returndata) = target.call{value: value}(data)", - "source_mapping": { - "start": 5251, - "length": 73, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 135 - ], - "starting_column": 9, - "ending_column": 82 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "functionCallWithValue", - "source_mapping": { - "start": 4971, - "length": 446, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AddressUpgradeable", - "source_mapping": { - "start": 194, - "length": 8087, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "functionCallWithValue(address,bytes,uint256,string)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "pushFromAndToAfter(_from,_to)", - "source_mapping": { - "start": 6528, - "length": 30, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 181 - ], - "starting_column": 45, - "ending_column": 75 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapBal", - "source_mapping": { - "start": 6266, - "length": 509, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "returndata = address(token).functionCall(data,SafeERC20: low-level call failed)", - "source_mapping": { - "start": 4298, - "length": 95, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "is_dependency": true, - "lines": [ - 110 - ], - "starting_column": 9, - "ending_column": 104 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_callOptionalReturn", - "source_mapping": { - "start": 3868, - "length": 717, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "is_dependency": true, - "lines": [ - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "SafeERC20Upgradeable", - "source_mapping": { - "start": 740, - "length": 3847, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_callOptionalReturn(IERC20Upgradeable,bytes)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "IERC20MetadataUpgradeable(_from).safeTransfer(msg.sender,fromBal)", - "source_mapping": { - "start": 19793, - "length": 66, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 493 - ], - "starting_column": 13, - "ending_column": 79 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "pushFromAndToAfter", - "source_mapping": { - "start": 19599, - "length": 470, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "pushFromAndToAfter(address,address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "(success,returndata) = target.call{value: value}(data)", - "source_mapping": { - "start": 5251, - "length": 73, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 135 - ], - "starting_column": 9, - "ending_column": 82 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "functionCallWithValue", - "source_mapping": { - "start": 4971, - "length": 446, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AddressUpgradeable", - "source_mapping": { - "start": 194, - "length": 8087, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "functionCallWithValue(address,bytes,uint256,string)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "IERC20MetadataUpgradeable(_to).safeTransfer(msg.sender,toBal)", - "source_mapping": { - "start": 19990, - "length": 62, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 497 - ], - "starting_column": 13, - "ending_column": 75 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "pushFromAndToAfter", - "source_mapping": { - "start": 19599, - "length": 470, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "pushFromAndToAfter(address,address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "_swapBal(_from,_to,_amount,minAmountOut,_vault,_deadline,_tryCatchActive)", - "source_mapping": { - "start": 6682, - "length": 86, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 183 - ], - "starting_column": 9, - "ending_column": 95 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapBal", - "source_mapping": { - "start": 6266, - "length": 509, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "(success,returndata) = target.call{value: value}(data)", - "source_mapping": { - "start": 5240, - "length": 73, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 135 - ], - "starting_column": 9, - "ending_column": 82 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "functionCallWithValue", - "source_mapping": { - "start": 4960, - "length": 446, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Address", - "source_mapping": { - "start": 194, - "length": 8964, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "functionCallWithValue(address,bytes,uint256,string)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "pullFromBefore(_from,_amount)", - "source_mapping": { - "start": 6497, - "length": 30, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 181 - ], - "starting_column": 14, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapBal", - "source_mapping": { - "start": 6266, - "length": 509, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "(success,returndata) = target.call{value: value}(data)", - "source_mapping": { - "start": 5251, - "length": 73, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 135 - ], - "starting_column": 9, - "ending_column": 82 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "functionCallWithValue", - "source_mapping": { - "start": 4971, - "length": 446, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AddressUpgradeable", - "source_mapping": { - "start": 194, - "length": 8087, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "functionCallWithValue(address,bytes,uint256,string)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "pushFromAndToAfter(_from,_to)", - "source_mapping": { - "start": 6528, - "length": 30, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 181 - ], - "starting_column": 45, - "ending_column": 75 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapBal", - "source_mapping": { - "start": 6266, - "length": 509, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "(success,returndata) = target.call{value: value}(data)", - "source_mapping": { - "start": 5251, - "length": 73, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 135 - ], - "starting_column": 9, - "ending_column": 82 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "functionCallWithValue", - "source_mapping": { - "start": 4971, - "length": 446, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AddressUpgradeable", - "source_mapping": { - "start": 194, - "length": 8087, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "functionCallWithValue(address,bytes,uint256,string)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "SwapFailed(_vault,_amount,_minAmountOut,_from,_to)", - "source_mapping": { - "start": 2668, - "length": 59, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 71 - ], - "starting_column": 17, - "ending_column": 76 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapBal", - "source_mapping": { - "start": 895, - "length": 1974, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BalMixin", - "source_mapping": { - "start": 307, - "length": 3662, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapBal(address,address,uint256,uint256,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "event" - } - }, - { - "type": "node", - "name": "_swapBal(_from,_to,_amount,minAmountOut,_vault,_deadline,_tryCatchActive)", - "source_mapping": { - "start": 6682, - "length": 86, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 183 - ], - "starting_column": 9, - "ending_column": 95 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapBal", - "source_mapping": { - "start": 6266, - "length": 509, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "event" - } - } - ], - "description": "Reentrancy in ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool) (lib/vault-v2/src/ReaperSwapper.sol#173-184):\n\tExternal calls:\n\t- _swapBal(_from,_to,_amount,minAmountOut,_vault,_deadline,_tryCatchActive) (lib/vault-v2/src/ReaperSwapper.sol#183)\n\t\t- returndata = address(token).functionCall(data,SafeERC20: low-level call failed) (lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#110)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts/contracts/utils/Address.sol#135)\n\t\t- IERC20(_from).safeIncreaseAllowance(_vault,_amount - currentAllowance) (lib/vault-v2/src/mixins/BalMixin.sol#59)\n\t\t- tmpAmountOut = IBeetVault(_vault).swap(singleSwap,funds,_minAmountOut,_deadline) (lib/vault-v2/src/mixins/BalMixin.sol#64-72)\n\t\t- IERC20(_from).safeApprove(_vault,0) (lib/vault-v2/src/mixins/BalMixin.sol#69)\n\t\t- amountOut = IBeetVault(_vault).swap(singleSwap,funds,_minAmountOut,_deadline) (lib/vault-v2/src/mixins/BalMixin.sol#74)\n\t- pullFromBefore(_from,_amount) (lib/vault-v2/src/ReaperSwapper.sol#181)\n\t\t- returndata = address(token).functionCall(data,SafeERC20: low-level call failed) (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#110)\n\t\t- IERC20MetadataUpgradeable(_from).safeTransferFrom(msg.sender,address(this),_amount) (lib/vault-v2/src/ReaperSwapper.sol#485)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#135)\n\t- pushFromAndToAfter(_from,_to) (lib/vault-v2/src/ReaperSwapper.sol#181)\n\t\t- returndata = address(token).functionCall(data,SafeERC20: low-level call failed) (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#110)\n\t\t- IERC20MetadataUpgradeable(_from).safeTransfer(msg.sender,fromBal) (lib/vault-v2/src/ReaperSwapper.sol#493)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#135)\n\t\t- IERC20MetadataUpgradeable(_to).safeTransfer(msg.sender,toBal) (lib/vault-v2/src/ReaperSwapper.sol#497)\n\tExternal calls sending eth:\n\t- _swapBal(_from,_to,_amount,minAmountOut,_vault,_deadline,_tryCatchActive) (lib/vault-v2/src/ReaperSwapper.sol#183)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts/contracts/utils/Address.sol#135)\n\t- pullFromBefore(_from,_amount) (lib/vault-v2/src/ReaperSwapper.sol#181)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#135)\n\t- pushFromAndToAfter(_from,_to) (lib/vault-v2/src/ReaperSwapper.sol#181)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#135)\n\tEvent emitted after the call(s):\n\t- SwapFailed(_vault,_amount,_minAmountOut,_from,_to) (lib/vault-v2/src/mixins/BalMixin.sol#71)\n\t\t- _swapBal(_from,_to,_amount,minAmountOut,_vault,_deadline,_tryCatchActive) (lib/vault-v2/src/ReaperSwapper.sol#183)\n", - "markdown": "Reentrancy in [ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)](lib/vault-v2/src/ReaperSwapper.sol#L173-L184):\n\tExternal calls:\n\t- [_swapBal(_from,_to,_amount,minAmountOut,_vault,_deadline,_tryCatchActive)](lib/vault-v2/src/ReaperSwapper.sol#L183)\n\t\t- [returndata = address(token).functionCall(data,SafeERC20: low-level call failed)](lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#L110)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135)\n\t\t- [IERC20(_from).safeIncreaseAllowance(_vault,_amount - currentAllowance)](lib/vault-v2/src/mixins/BalMixin.sol#L59)\n\t\t- [tmpAmountOut = IBeetVault(_vault).swap(singleSwap,funds,_minAmountOut,_deadline)](lib/vault-v2/src/mixins/BalMixin.sol#L64-L72)\n\t\t- [IERC20(_from).safeApprove(_vault,0)](lib/vault-v2/src/mixins/BalMixin.sol#L69)\n\t\t- [amountOut = IBeetVault(_vault).swap(singleSwap,funds,_minAmountOut,_deadline)](lib/vault-v2/src/mixins/BalMixin.sol#L74)\n\t- [pullFromBefore(_from,_amount)](lib/vault-v2/src/ReaperSwapper.sol#L181)\n\t\t- [returndata = address(token).functionCall(data,SafeERC20: low-level call failed)](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#L110)\n\t\t- [IERC20MetadataUpgradeable(_from).safeTransferFrom(msg.sender,address(this),_amount)](lib/vault-v2/src/ReaperSwapper.sol#L485)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L135)\n\t- [pushFromAndToAfter(_from,_to)](lib/vault-v2/src/ReaperSwapper.sol#L181)\n\t\t- [returndata = address(token).functionCall(data,SafeERC20: low-level call failed)](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#L110)\n\t\t- [IERC20MetadataUpgradeable(_from).safeTransfer(msg.sender,fromBal)](lib/vault-v2/src/ReaperSwapper.sol#L493)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L135)\n\t\t- [IERC20MetadataUpgradeable(_to).safeTransfer(msg.sender,toBal)](lib/vault-v2/src/ReaperSwapper.sol#L497)\n\tExternal calls sending eth:\n\t- [_swapBal(_from,_to,_amount,minAmountOut,_vault,_deadline,_tryCatchActive)](lib/vault-v2/src/ReaperSwapper.sol#L183)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135)\n\t- [pullFromBefore(_from,_amount)](lib/vault-v2/src/ReaperSwapper.sol#L181)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L135)\n\t- [pushFromAndToAfter(_from,_to)](lib/vault-v2/src/ReaperSwapper.sol#L181)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L135)\n\tEvent emitted after the call(s):\n\t- [SwapFailed(_vault,_amount,_minAmountOut,_from,_to)](lib/vault-v2/src/mixins/BalMixin.sol#L71)\n\t\t- [_swapBal(_from,_to,_amount,minAmountOut,_vault,_deadline,_tryCatchActive)](lib/vault-v2/src/ReaperSwapper.sol#L183)\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L173-L184", - "id": "6afd47a6cc546c6f39cd92034e38da33b560d04fbd75a1655a8c2dfb29e08cdd", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_swapUniV3", - "source_mapping": { - "start": 1138, - "length": 1499, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "UniV3Mixin", - "source_mapping": { - "start": 269, - "length": 4771, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapUniV3(UniV3Mixin.Params__swapUniV3)" - } - }, - { - "type": "node", - "name": "TransferHelper.safeApprove(path[0],_params.router,_params.amount)", - "source_mapping": { - "start": 1708, - "length": 67, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 49 - ], - "starting_column": 9, - "ending_column": 76 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapUniV3", - "source_mapping": { - "start": 1138, - "length": 1499, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "UniV3Mixin", - "source_mapping": { - "start": 269, - "length": 4771, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapUniV3(UniV3Mixin.Params__swapUniV3)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "tmpAmountOut = ISwapRouter(_params.router).exactInput(params)", - "source_mapping": { - "start": 2186, - "length": 346, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 60, - 61, - 62, - 63, - 64, - 65 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapUniV3", - "source_mapping": { - "start": 1138, - "length": 1499, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "UniV3Mixin", - "source_mapping": { - "start": 269, - "length": 4771, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapUniV3(UniV3Mixin.Params__swapUniV3)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "TransferHelper.safeApprove(path[0],_params.router,0)", - "source_mapping": { - "start": 2350, - "length": 54, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 63 - ], - "starting_column": 17, - "ending_column": 71 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapUniV3", - "source_mapping": { - "start": 1138, - "length": 1499, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "UniV3Mixin", - "source_mapping": { - "start": 269, - "length": 4771, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapUniV3(UniV3Mixin.Params__swapUniV3)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "SwapFailed(_params.router,_params.amount,_params.minAmountOut,_params.from,_params.to)", - "source_mapping": { - "start": 2422, - "length": 95, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 64 - ], - "starting_column": 17, - "ending_column": 112 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapUniV3", - "source_mapping": { - "start": 1138, - "length": 1499, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "UniV3Mixin", - "source_mapping": { - "start": 269, - "length": 4771, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapUniV3(UniV3Mixin.Params__swapUniV3)" - } - } - }, - "additional_fields": { - "underlying_type": "event" - } - } - ], - "description": "Reentrancy in UniV3Mixin._swapUniV3(UniV3Mixin.Params__swapUniV3) (lib/vault-v2/src/mixins/UniV3Mixin.sol#38-69):\n\tExternal calls:\n\t- TransferHelper.safeApprove(path[0],_params.router,_params.amount) (lib/vault-v2/src/mixins/UniV3Mixin.sol#49)\n\t- tmpAmountOut = ISwapRouter(_params.router).exactInput(params) (lib/vault-v2/src/mixins/UniV3Mixin.sol#60-65)\n\t- TransferHelper.safeApprove(path[0],_params.router,0) (lib/vault-v2/src/mixins/UniV3Mixin.sol#63)\n\tEvent emitted after the call(s):\n\t- SwapFailed(_params.router,_params.amount,_params.minAmountOut,_params.from,_params.to) (lib/vault-v2/src/mixins/UniV3Mixin.sol#64)\n", - "markdown": "Reentrancy in [UniV3Mixin._swapUniV3(UniV3Mixin.Params__swapUniV3)](lib/vault-v2/src/mixins/UniV3Mixin.sol#L38-L69):\n\tExternal calls:\n\t- [TransferHelper.safeApprove(path[0],_params.router,_params.amount)](lib/vault-v2/src/mixins/UniV3Mixin.sol#L49)\n\t- [tmpAmountOut = ISwapRouter(_params.router).exactInput(params)](lib/vault-v2/src/mixins/UniV3Mixin.sol#L60-L65)\n\t- [TransferHelper.safeApprove(path[0],_params.router,0)](lib/vault-v2/src/mixins/UniV3Mixin.sol#L63)\n\tEvent emitted after the call(s):\n\t- [SwapFailed(_params.router,_params.amount,_params.minAmountOut,_params.from,_params.to)](lib/vault-v2/src/mixins/UniV3Mixin.sol#L64)\n", - "first_markdown_element": "lib/vault-v2/src/mixins/UniV3Mixin.sol#L38-L69", - "id": "7476c00ea23c811b6774a0358c1ce4170dea75590e0878323a36cacc5adb0379", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_swapBal", - "source_mapping": { - "start": 895, - "length": 1974, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BalMixin", - "source_mapping": { - "start": 307, - "length": 3662, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapBal(address,address,uint256,uint256,address,uint256,bool)" - } - }, - { - "type": "node", - "name": "IERC20(_from).safeIncreaseAllowance(_vault,_amount - currentAllowance)", - "source_mapping": { - "start": 2092, - "length": 71, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 59 - ], - "starting_column": 13, - "ending_column": 84 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapBal", - "source_mapping": { - "start": 895, - "length": 1974, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BalMixin", - "source_mapping": { - "start": 307, - "length": 3662, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapBal(address,address,uint256,uint256,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "tmpAmountOut = IBeetVault(_vault).swap(singleSwap,funds,_minAmountOut,_deadline)", - "source_mapping": { - "start": 2294, - "length": 448, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapBal", - "source_mapping": { - "start": 895, - "length": 1974, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BalMixin", - "source_mapping": { - "start": 307, - "length": 3662, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapBal(address,address,uint256,uint256,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "IERC20(_from).safeApprove(_vault,0)", - "source_mapping": { - "start": 2596, - "length": 36, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 69 - ], - "starting_column": 21, - "ending_column": 57 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapBal", - "source_mapping": { - "start": 895, - "length": 1974, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BalMixin", - "source_mapping": { - "start": 307, - "length": 3662, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapBal(address,address,uint256,uint256,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "SwapFailed(_vault,_amount,_minAmountOut,_from,_to)", - "source_mapping": { - "start": 2668, - "length": 59, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 71 - ], - "starting_column": 17, - "ending_column": 76 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapBal", - "source_mapping": { - "start": 895, - "length": 1974, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BalMixin", - "source_mapping": { - "start": 307, - "length": 3662, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapBal(address,address,uint256,uint256,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "event" - } - } - ], - "description": "Reentrancy in BalMixin._swapBal(address,address,uint256,uint256,address,uint256,bool) (lib/vault-v2/src/mixins/BalMixin.sol#25-76):\n\tExternal calls:\n\t- IERC20(_from).safeIncreaseAllowance(_vault,_amount - currentAllowance) (lib/vault-v2/src/mixins/BalMixin.sol#59)\n\t- tmpAmountOut = IBeetVault(_vault).swap(singleSwap,funds,_minAmountOut,_deadline) (lib/vault-v2/src/mixins/BalMixin.sol#64-72)\n\t- IERC20(_from).safeApprove(_vault,0) (lib/vault-v2/src/mixins/BalMixin.sol#69)\n\tEvent emitted after the call(s):\n\t- SwapFailed(_vault,_amount,_minAmountOut,_from,_to) (lib/vault-v2/src/mixins/BalMixin.sol#71)\n", - "markdown": "Reentrancy in [BalMixin._swapBal(address,address,uint256,uint256,address,uint256,bool)](lib/vault-v2/src/mixins/BalMixin.sol#L25-L76):\n\tExternal calls:\n\t- [IERC20(_from).safeIncreaseAllowance(_vault,_amount - currentAllowance)](lib/vault-v2/src/mixins/BalMixin.sol#L59)\n\t- [tmpAmountOut = IBeetVault(_vault).swap(singleSwap,funds,_minAmountOut,_deadline)](lib/vault-v2/src/mixins/BalMixin.sol#L64-L72)\n\t- [IERC20(_from).safeApprove(_vault,0)](lib/vault-v2/src/mixins/BalMixin.sol#L69)\n\tEvent emitted after the call(s):\n\t- [SwapFailed(_vault,_amount,_minAmountOut,_from,_to)](lib/vault-v2/src/mixins/BalMixin.sol#L71)\n", - "first_markdown_element": "lib/vault-v2/src/mixins/BalMixin.sol#L25-L76", - "id": "77714ef1ffc67e587fe7e535481ee61f37a6029f67e7f2a1b6502b530a92b385", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_exercise", - "source_mapping": { - "start": 5470, - "length": 847, - "filename_relative": "src/OptionsToken.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", - "filename_short": "src/OptionsToken.sol", - "is_dependency": false, - "lines": [ - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OptionsToken", - "source_mapping": { - "start": 691, - "length": 7138, - "filename_relative": "src/OptionsToken.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", - "filename_short": "src/OptionsToken.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_exercise(uint256,address,address,bytes)" - } - }, - { - "type": "node", - "name": "(paymentAmount,data0,data1,data2) = IExercise(option).exercise(msg.sender,amount,recipient,params)", - "source_mapping": { - "start": 6108, - "length": 104, - "filename_relative": "src/OptionsToken.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", - "filename_short": "src/OptionsToken.sol", - "is_dependency": false, - "lines": [ - 148 - ], - "starting_column": 9, - "ending_column": 113 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_exercise", - "source_mapping": { - "start": 5470, - "length": 847, - "filename_relative": "src/OptionsToken.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", - "filename_short": "src/OptionsToken.sol", - "is_dependency": false, - "lines": [ - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OptionsToken", - "source_mapping": { - "start": 691, - "length": 7138, - "filename_relative": "src/OptionsToken.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", - "filename_short": "src/OptionsToken.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_exercise(uint256,address,address,bytes)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "Exercise(msg.sender,recipient,amount,data0,data1,data2)", - "source_mapping": { - "start": 6245, - "length": 65, - "filename_relative": "src/OptionsToken.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", - "filename_short": "src/OptionsToken.sol", - "is_dependency": false, - "lines": [ - 151 - ], - "starting_column": 9, - "ending_column": 74 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_exercise", - "source_mapping": { - "start": 5470, - "length": 847, - "filename_relative": "src/OptionsToken.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", - "filename_short": "src/OptionsToken.sol", - "is_dependency": false, - "lines": [ - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OptionsToken", - "source_mapping": { - "start": 691, - "length": 7138, - "filename_relative": "src/OptionsToken.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", - "filename_short": "src/OptionsToken.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_exercise(uint256,address,address,bytes)" - } - } - }, - "additional_fields": { - "underlying_type": "event" - } - } - ], - "description": "Reentrancy in OptionsToken._exercise(uint256,address,address,bytes) (src/OptionsToken.sol#128-152):\n\tExternal calls:\n\t- (paymentAmount,data0,data1,data2) = IExercise(option).exercise(msg.sender,amount,recipient,params) (src/OptionsToken.sol#148)\n\tEvent emitted after the call(s):\n\t- Exercise(msg.sender,recipient,amount,data0,data1,data2) (src/OptionsToken.sol#151)\n", - "markdown": "Reentrancy in [OptionsToken._exercise(uint256,address,address,bytes)](src/OptionsToken.sol#L128-L152):\n\tExternal calls:\n\t- [(paymentAmount,data0,data1,data2) = IExercise(option).exercise(msg.sender,amount,recipient,params)](src/OptionsToken.sol#L148)\n\tEvent emitted after the call(s):\n\t- [Exercise(msg.sender,recipient,amount,data0,data1,data2)](src/OptionsToken.sol#L151)\n", - "first_markdown_element": "src/OptionsToken.sol#L128-L152", - "id": "9647d6058a2a1f10ef7714d6f960ae5b85d86b4e1fcd2ffd512fd2031b5d6fe7", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_swapUniV2", - "source_mapping": { - "start": 748, - "length": 1626, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "UniV2Mixin", - "source_mapping": { - "start": 234, - "length": 4634, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapUniV2(address,address,uint256,uint256,address,uint256,bool)" - } - }, - { - "type": "node", - "name": "IERC20(_from).safeIncreaseAllowance(_router,_amount)", - "source_mapping": { - "start": 1488, - "length": 53, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 42 - ], - "starting_column": 9, - "ending_column": 62 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapUniV2", - "source_mapping": { - "start": 748, - "length": 1626, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "UniV2Mixin", - "source_mapping": { - "start": 234, - "length": 4634, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapUniV2(address,address,uint256,uint256,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "IUniswapV2Router02(_router).swapExactTokensForTokensSupportingFeeOnTransferTokens(_amount,_minAmountOut,path,address(this),_deadline)", - "source_mapping": { - "start": 1662, - "length": 422, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapUniV2", - "source_mapping": { - "start": 748, - "length": 1626, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "UniV2Mixin", - "source_mapping": { - "start": 234, - "length": 4634, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapUniV2(address,address,uint256,uint256,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "IERC20(_from).safeApprove(_router,0)", - "source_mapping": { - "start": 1954, - "length": 37, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 51 - ], - "starting_column": 17, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapUniV2", - "source_mapping": { - "start": 748, - "length": 1626, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "UniV2Mixin", - "source_mapping": { - "start": 234, - "length": 4634, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapUniV2(address,address,uint256,uint256,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "SwapFailed(_router,_amount,_minAmountOut,_from,_to)", - "source_mapping": { - "start": 2009, - "length": 60, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 52 - ], - "starting_column": 17, - "ending_column": 77 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapUniV2", - "source_mapping": { - "start": 748, - "length": 1626, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "UniV2Mixin", - "source_mapping": { - "start": 234, - "length": 4634, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapUniV2(address,address,uint256,uint256,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "event" - } - } - ], - "description": "Reentrancy in UniV2Mixin._swapUniV2(address,address,uint256,uint256,address,uint256,bool) (lib/vault-v2/src/mixins/UniV2Mixin.sol#20-60):\n\tExternal calls:\n\t- IERC20(_from).safeIncreaseAllowance(_router,_amount) (lib/vault-v2/src/mixins/UniV2Mixin.sol#42)\n\t- IUniswapV2Router02(_router).swapExactTokensForTokensSupportingFeeOnTransferTokens(_amount,_minAmountOut,path,address(this),_deadline) (lib/vault-v2/src/mixins/UniV2Mixin.sol#46-53)\n\t- IERC20(_from).safeApprove(_router,0) (lib/vault-v2/src/mixins/UniV2Mixin.sol#51)\n\tEvent emitted after the call(s):\n\t- SwapFailed(_router,_amount,_minAmountOut,_from,_to) (lib/vault-v2/src/mixins/UniV2Mixin.sol#52)\n", - "markdown": "Reentrancy in [UniV2Mixin._swapUniV2(address,address,uint256,uint256,address,uint256,bool)](lib/vault-v2/src/mixins/UniV2Mixin.sol#L20-L60):\n\tExternal calls:\n\t- [IERC20(_from).safeIncreaseAllowance(_router,_amount)](lib/vault-v2/src/mixins/UniV2Mixin.sol#L42)\n\t- [IUniswapV2Router02(_router).swapExactTokensForTokensSupportingFeeOnTransferTokens(_amount,_minAmountOut,path,address(this),_deadline)](lib/vault-v2/src/mixins/UniV2Mixin.sol#L46-L53)\n\t- [IERC20(_from).safeApprove(_router,0)](lib/vault-v2/src/mixins/UniV2Mixin.sol#L51)\n\tEvent emitted after the call(s):\n\t- [SwapFailed(_router,_amount,_minAmountOut,_from,_to)](lib/vault-v2/src/mixins/UniV2Mixin.sol#L52)\n", - "first_markdown_element": "lib/vault-v2/src/mixins/UniV2Mixin.sol#L20-L60", - "id": "b59ab902647dd201a6cd9aca4552dafa018066963efcc3219bd8955570f9b1e5", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "distributeFeesFrom", - "source_mapping": { - "start": 3017, - "length": 554, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseExercise", - "source_mapping": { - "start": 432, - "length": 3936, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "distributeFeesFrom(uint256,IERC20,address)" - } - }, - { - "type": "node", - "name": "token.safeTransferFrom(from,feeRecipients[i],feeAmount)", - "source_mapping": { - "start": 3306, - "length": 57, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 79 - ], - "starting_column": 13, - "ending_column": 70 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "distributeFeesFrom", - "source_mapping": { - "start": 3017, - "length": 554, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseExercise", - "source_mapping": { - "start": 432, - "length": 3936, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "distributeFeesFrom(uint256,IERC20,address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "token.safeTransferFrom(from,feeRecipients[feeRecipients.length - 1],remaining)", - "source_mapping": { - "start": 3419, - "length": 80, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 82 - ], - "starting_column": 9, - "ending_column": 89 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "distributeFeesFrom", - "source_mapping": { - "start": 3017, - "length": 554, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseExercise", - "source_mapping": { - "start": 432, - "length": 3936, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "distributeFeesFrom(uint256,IERC20,address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "DistributeFees(feeRecipients,feeBPS,totalAmount)", - "source_mapping": { - "start": 3509, - "length": 55, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 83 - ], - "starting_column": 9, - "ending_column": 64 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "distributeFeesFrom", - "source_mapping": { - "start": 3017, - "length": 554, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseExercise", - "source_mapping": { - "start": 432, - "length": 3936, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "distributeFeesFrom(uint256,IERC20,address)" - } - } - }, - "additional_fields": { - "underlying_type": "event" - } - } - ], - "description": "Reentrancy in BaseExercise.distributeFeesFrom(uint256,IERC20,address) (src/exercise/BaseExercise.sol#75-84):\n\tExternal calls:\n\t- token.safeTransferFrom(from,feeRecipients[i],feeAmount) (src/exercise/BaseExercise.sol#79)\n\t- token.safeTransferFrom(from,feeRecipients[feeRecipients.length - 1],remaining) (src/exercise/BaseExercise.sol#82)\n\tEvent emitted after the call(s):\n\t- DistributeFees(feeRecipients,feeBPS,totalAmount) (src/exercise/BaseExercise.sol#83)\n", - "markdown": "Reentrancy in [BaseExercise.distributeFeesFrom(uint256,IERC20,address)](src/exercise/BaseExercise.sol#L75-L84):\n\tExternal calls:\n\t- [token.safeTransferFrom(from,feeRecipients[i],feeAmount)](src/exercise/BaseExercise.sol#L79)\n\t- [token.safeTransferFrom(from,feeRecipients[feeRecipients.length - 1],remaining)](src/exercise/BaseExercise.sol#L82)\n\tEvent emitted after the call(s):\n\t- [DistributeFees(feeRecipients,feeBPS,totalAmount)](src/exercise/BaseExercise.sol#L83)\n", - "first_markdown_element": "src/exercise/BaseExercise.sol#L75-L84", - "id": "bf1b099632b824aafcfad9a23ac98bf3dcb6b4fb4b4b5ae04e209e3b61acc42f", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "distributeFees", - "source_mapping": { - "start": 3762, - "length": 604, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseExercise", - "source_mapping": { - "start": 432, - "length": 3936, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "distributeFees(uint256,IERC20)" - } - }, - { - "type": "node", - "name": "token.safeTransfer(feeRecipients[i],feeAmount)", - "source_mapping": { - "start": 4121, - "length": 47, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 94 - ], - "starting_column": 13, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "distributeFees", - "source_mapping": { - "start": 3762, - "length": 604, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseExercise", - "source_mapping": { - "start": 432, - "length": 3936, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "distributeFees(uint256,IERC20)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "token.safeTransfer(feeRecipients[feeRecipients.length - 1],remaining)", - "source_mapping": { - "start": 4224, - "length": 70, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 97 - ], - "starting_column": 9, - "ending_column": 79 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "distributeFees", - "source_mapping": { - "start": 3762, - "length": 604, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseExercise", - "source_mapping": { - "start": 432, - "length": 3936, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "distributeFees(uint256,IERC20)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "DistributeFees(feeRecipients,feeBPS,totalAmount)", - "source_mapping": { - "start": 4304, - "length": 55, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 98 - ], - "starting_column": 9, - "ending_column": 64 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "distributeFees", - "source_mapping": { - "start": 3762, - "length": 604, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseExercise", - "source_mapping": { - "start": 432, - "length": 3936, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "distributeFees(uint256,IERC20)" - } - } - }, - "additional_fields": { - "underlying_type": "event" - } - } - ], - "description": "Reentrancy in BaseExercise.distributeFees(uint256,IERC20) (src/exercise/BaseExercise.sol#88-99):\n\tExternal calls:\n\t- token.safeTransfer(feeRecipients[i],feeAmount) (src/exercise/BaseExercise.sol#94)\n\t- token.safeTransfer(feeRecipients[feeRecipients.length - 1],remaining) (src/exercise/BaseExercise.sol#97)\n\tEvent emitted after the call(s):\n\t- DistributeFees(feeRecipients,feeBPS,totalAmount) (src/exercise/BaseExercise.sol#98)\n", - "markdown": "Reentrancy in [BaseExercise.distributeFees(uint256,IERC20)](src/exercise/BaseExercise.sol#L88-L99):\n\tExternal calls:\n\t- [token.safeTransfer(feeRecipients[i],feeAmount)](src/exercise/BaseExercise.sol#L94)\n\t- [token.safeTransfer(feeRecipients[feeRecipients.length - 1],remaining)](src/exercise/BaseExercise.sol#L97)\n\tEvent emitted after the call(s):\n\t- [DistributeFees(feeRecipients,feeBPS,totalAmount)](src/exercise/BaseExercise.sol#L98)\n", - "first_markdown_element": "src/exercise/BaseExercise.sol#L88-L99", - "id": "cc6f76bc69057bc8d1566793027f78e4e33511dc9a9f9b389b45a7c32f934e73", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_zap", - "source_mapping": { - "start": 6830, - "length": 2292, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_zap(address,uint256,address,DiscountExerciseParams)" - } - }, - { - "type": "node", - "name": "underlyingToken.approve(swapProps.swapper,feeAmount)", - "source_mapping": { - "start": 8058, - "length": 53, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 213 - ], - "starting_column": 13, - "ending_column": 66 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_zap", - "source_mapping": { - "start": 6830, - "length": 2292, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_zap(address,uint256,address,DiscountExerciseParams)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "_generalSwap(swapProps.exchangeTypes,address(underlyingToken),address(paymentToken),feeAmount,minAmountOut,swapProps.exchangeAddress)", - "source_mapping": { - "start": 8277, - "length": 138, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 216 - ], - "starting_column": 13, - "ending_column": 151 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_zap", - "source_mapping": { - "start": 6830, - "length": 2292, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_zap(address,uint256,address,DiscountExerciseParams)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "_swapper.swapUniV2(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)", - "source_mapping": { - "start": 2488, - "length": 80, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 75 - ], - "starting_column": 13, - "ending_column": 93 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_generalSwap", - "source_mapping": { - "start": 2091, - "length": 1014, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "SwapHelper", - "source_mapping": { - "start": 514, - "length": 3269, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_generalSwap(ExchangeType,address,address,uint256,uint256,address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "_swapper.swapBal(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)", - "source_mapping": { - "start": 2631, - "length": 78, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 77 - ], - "starting_column": 13, - "ending_column": 91 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_generalSwap", - "source_mapping": { - "start": 2091, - "length": 1014, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "SwapHelper", - "source_mapping": { - "start": 514, - "length": 3269, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_generalSwap(ExchangeType,address,address,uint256,uint256,address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "_swapper.swapVelo(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)", - "source_mapping": { - "start": 2778, - "length": 79, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 79 - ], - "starting_column": 13, - "ending_column": 92 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_generalSwap", - "source_mapping": { - "start": 2091, - "length": 1014, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "SwapHelper", - "source_mapping": { - "start": 514, - "length": 3269, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_generalSwap(ExchangeType,address,address,uint256,uint256,address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "_swapper.swapUniV3(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)", - "source_mapping": { - "start": 2922, - "length": 80, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 81 - ], - "starting_column": 13, - "ending_column": 93 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_generalSwap", - "source_mapping": { - "start": 2091, - "length": 1014, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "SwapHelper", - "source_mapping": { - "start": 514, - "length": 3269, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_generalSwap(ExchangeType,address,address,uint256,uint256,address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "distributeFees(paymentToken.balanceOf(address(this)),paymentToken)", - "source_mapping": { - "start": 8593, - "length": 67, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 220 - ], - "starting_column": 13, - "ending_column": 80 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_zap", - "source_mapping": { - "start": 6830, - "length": 2292, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_zap(address,uint256,address,DiscountExerciseParams)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "returndata = address(token).functionCall(data,SafeERC20: low-level call failed)", - "source_mapping": { - "start": 4166, - "length": 95, - "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "is_dependency": true, - "lines": [ - 110 - ], - "starting_column": 9, - "ending_column": 104 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_callOptionalReturn", - "source_mapping": { - "start": 3747, - "length": 706, - "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "is_dependency": true, - "lines": [ - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "SafeERC20", - "source_mapping": { - "start": 707, - "length": 3748, - "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_callOptionalReturn(IERC20,bytes)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "(success,returndata) = target.call{value: value}(data)", - "source_mapping": { - "start": 5240, - "length": 73, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 135 - ], - "starting_column": 9, - "ending_column": 82 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "functionCallWithValue", - "source_mapping": { - "start": 4960, - "length": 446, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Address", - "source_mapping": { - "start": 194, - "length": 8964, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "functionCallWithValue(address,bytes,uint256,string)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "token.safeTransfer(feeRecipients[i],feeAmount)", - "source_mapping": { - "start": 4121, - "length": 47, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 94 - ], - "starting_column": 13, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "distributeFees", - "source_mapping": { - "start": 3762, - "length": 604, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseExercise", - "source_mapping": { - "start": 432, - "length": 3936, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "distributeFees(uint256,IERC20)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "token.safeTransfer(feeRecipients[feeRecipients.length - 1],remaining)", - "source_mapping": { - "start": 4224, - "length": 70, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 97 - ], - "starting_column": 9, - "ending_column": 79 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "distributeFees", - "source_mapping": { - "start": 3762, - "length": 604, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseExercise", - "source_mapping": { - "start": 432, - "length": 3936, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "distributeFees(uint256,IERC20)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "_pay(recipient,underlyingAmount)", - "source_mapping": { - "start": 9007, - "length": 33, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 228 - ], - "starting_column": 9, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_zap", - "source_mapping": { - "start": 6830, - "length": 2292, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_zap(address,uint256,address,DiscountExerciseParams)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "returndata = address(token).functionCall(data,SafeERC20: low-level call failed)", - "source_mapping": { - "start": 4166, - "length": 95, - "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "is_dependency": true, - "lines": [ - 110 - ], - "starting_column": 9, - "ending_column": 104 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_callOptionalReturn", - "source_mapping": { - "start": 3747, - "length": 706, - "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "is_dependency": true, - "lines": [ - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "SafeERC20", - "source_mapping": { - "start": 707, - "length": 3748, - "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_callOptionalReturn(IERC20,bytes)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "underlyingToken.safeTransfer(to,balance)", - "source_mapping": { - "start": 10112, - "length": 41, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 256 - ], - "starting_column": 13, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_pay", - "source_mapping": { - "start": 9913, - "length": 415, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_pay(address,uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "(success,returndata) = target.call{value: value}(data)", - "source_mapping": { - "start": 5240, - "length": 73, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 135 - ], - "starting_column": 9, - "ending_column": 82 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "functionCallWithValue", - "source_mapping": { - "start": 4960, - "length": 446, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Address", - "source_mapping": { - "start": 194, - "length": 8964, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "functionCallWithValue(address,bytes,uint256,string)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "underlyingToken.safeTransfer(to,amount)", - "source_mapping": { - "start": 10232, - "length": 40, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 259 - ], - "starting_column": 13, - "ending_column": 53 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_pay", - "source_mapping": { - "start": 9913, - "length": 415, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_pay(address,uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "distributeFees(paymentToken.balanceOf(address(this)),paymentToken)", - "source_mapping": { - "start": 8593, - "length": 67, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 220 - ], - "starting_column": 13, - "ending_column": 80 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_zap", - "source_mapping": { - "start": 6830, - "length": 2292, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_zap(address,uint256,address,DiscountExerciseParams)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "(success,returndata) = target.call{value: value}(data)", - "source_mapping": { - "start": 5240, - "length": 73, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 135 - ], - "starting_column": 9, - "ending_column": 82 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "functionCallWithValue", - "source_mapping": { - "start": 4960, - "length": 446, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Address", - "source_mapping": { - "start": 194, - "length": 8964, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "functionCallWithValue(address,bytes,uint256,string)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "_pay(recipient,underlyingAmount)", - "source_mapping": { - "start": 9007, - "length": 33, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 228 - ], - "starting_column": 9, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_zap", - "source_mapping": { - "start": 6830, - "length": 2292, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_zap(address,uint256,address,DiscountExerciseParams)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "(success,returndata) = target.call{value: value}(data)", - "source_mapping": { - "start": 5240, - "length": 73, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 135 - ], - "starting_column": 9, - "ending_column": 82 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "functionCallWithValue", - "source_mapping": { - "start": 4960, - "length": 446, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Address", - "source_mapping": { - "start": 194, - "length": 8964, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "functionCallWithValue(address,bytes,uint256,string)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "Exercised(from,recipient,underlyingAmount,paymentAmount)", - "source_mapping": { - "start": 9051, - "length": 64, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 230 - ], - "starting_column": 9, - "ending_column": 73 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_zap", - "source_mapping": { - "start": 6830, - "length": 2292, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_zap(address,uint256,address,DiscountExerciseParams)" - } - } - }, - "additional_fields": { - "underlying_type": "event" - } - } - ], - "description": "Reentrancy in DiscountExercise._zap(address,uint256,address,DiscountExerciseParams) (src/exercise/DiscountExercise.sol#192-231):\n\tExternal calls:\n\t- underlyingToken.approve(swapProps.swapper,feeAmount) (src/exercise/DiscountExercise.sol#213)\n\t- _generalSwap(swapProps.exchangeTypes,address(underlyingToken),address(paymentToken),feeAmount,minAmountOut,swapProps.exchangeAddress) (src/exercise/DiscountExercise.sol#216)\n\t\t- _swapper.swapUniV2(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress) (src/helpers/SwapHelper.sol#75)\n\t\t- _swapper.swapBal(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress) (src/helpers/SwapHelper.sol#77)\n\t\t- _swapper.swapVelo(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress) (src/helpers/SwapHelper.sol#79)\n\t\t- _swapper.swapUniV3(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress) (src/helpers/SwapHelper.sol#81)\n\t- distributeFees(paymentToken.balanceOf(address(this)),paymentToken) (src/exercise/DiscountExercise.sol#220)\n\t\t- returndata = address(token).functionCall(data,SafeERC20: low-level call failed) (lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#110)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts/contracts/utils/Address.sol#135)\n\t\t- token.safeTransfer(feeRecipients[i],feeAmount) (src/exercise/BaseExercise.sol#94)\n\t\t- token.safeTransfer(feeRecipients[feeRecipients.length - 1],remaining) (src/exercise/BaseExercise.sol#97)\n\t- _pay(recipient,underlyingAmount) (src/exercise/DiscountExercise.sol#228)\n\t\t- returndata = address(token).functionCall(data,SafeERC20: low-level call failed) (lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#110)\n\t\t- underlyingToken.safeTransfer(to,balance) (src/exercise/DiscountExercise.sol#256)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts/contracts/utils/Address.sol#135)\n\t\t- underlyingToken.safeTransfer(to,amount) (src/exercise/DiscountExercise.sol#259)\n\tExternal calls sending eth:\n\t- distributeFees(paymentToken.balanceOf(address(this)),paymentToken) (src/exercise/DiscountExercise.sol#220)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts/contracts/utils/Address.sol#135)\n\t- _pay(recipient,underlyingAmount) (src/exercise/DiscountExercise.sol#228)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts/contracts/utils/Address.sol#135)\n\tEvent emitted after the call(s):\n\t- Exercised(from,recipient,underlyingAmount,paymentAmount) (src/exercise/DiscountExercise.sol#230)\n", - "markdown": "Reentrancy in [DiscountExercise._zap(address,uint256,address,DiscountExerciseParams)](src/exercise/DiscountExercise.sol#L192-L231):\n\tExternal calls:\n\t- [underlyingToken.approve(swapProps.swapper,feeAmount)](src/exercise/DiscountExercise.sol#L213)\n\t- [_generalSwap(swapProps.exchangeTypes,address(underlyingToken),address(paymentToken),feeAmount,minAmountOut,swapProps.exchangeAddress)](src/exercise/DiscountExercise.sol#L216)\n\t\t- [_swapper.swapUniV2(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L75)\n\t\t- [_swapper.swapBal(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L77)\n\t\t- [_swapper.swapVelo(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L79)\n\t\t- [_swapper.swapUniV3(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L81)\n\t- [distributeFees(paymentToken.balanceOf(address(this)),paymentToken)](src/exercise/DiscountExercise.sol#L220)\n\t\t- [returndata = address(token).functionCall(data,SafeERC20: low-level call failed)](lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#L110)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135)\n\t\t- [token.safeTransfer(feeRecipients[i],feeAmount)](src/exercise/BaseExercise.sol#L94)\n\t\t- [token.safeTransfer(feeRecipients[feeRecipients.length - 1],remaining)](src/exercise/BaseExercise.sol#L97)\n\t- [_pay(recipient,underlyingAmount)](src/exercise/DiscountExercise.sol#L228)\n\t\t- [returndata = address(token).functionCall(data,SafeERC20: low-level call failed)](lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#L110)\n\t\t- [underlyingToken.safeTransfer(to,balance)](src/exercise/DiscountExercise.sol#L256)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135)\n\t\t- [underlyingToken.safeTransfer(to,amount)](src/exercise/DiscountExercise.sol#L259)\n\tExternal calls sending eth:\n\t- [distributeFees(paymentToken.balanceOf(address(this)),paymentToken)](src/exercise/DiscountExercise.sol#L220)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135)\n\t- [_pay(recipient,underlyingAmount)](src/exercise/DiscountExercise.sol#L228)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135)\n\tEvent emitted after the call(s):\n\t- [Exercised(from,recipient,underlyingAmount,paymentAmount)](src/exercise/DiscountExercise.sol#L230)\n", - "first_markdown_element": "src/exercise/DiscountExercise.sol#L192-L231", - "id": "e13cadbb7879bfd546c8fbbad0a7fe265276aed28f548d1bc238ae613cc8ff47", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "swapUniV3", - "source_mapping": { - "start": 8558, - "length": 534, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - }, - { - "type": "node", - "name": "_swapUniV3(Params__swapUniV3(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive))", - "source_mapping": { - "start": 8977, - "length": 108, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 251 - ], - "starting_column": 9, - "ending_column": 117 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV3", - "source_mapping": { - "start": 8558, - "length": 534, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "(success,data) = token.call(abi.encodeWithSelector(IERC20.approve.selector,to,value))", - "source_mapping": { - "start": 1866, - "length": 106, - "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", - "is_dependency": true, - "lines": [ - 35 - ], - "starting_column": 9, - "ending_column": 115 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "safeApprove", - "source_mapping": { - "start": 1784, - "length": 277, - "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", - "is_dependency": true, - "lines": [ - 34, - 35, - 36, - 37 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TransferHelper", - "source_mapping": { - "start": 108, - "length": 2309, - "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", - "is_dependency": true, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "safeApprove(address,address,uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "TransferHelper.safeApprove(path[0],_params.router,_params.amount)", - "source_mapping": { - "start": 1708, - "length": 67, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 49 - ], - "starting_column": 9, - "ending_column": 76 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapUniV3", - "source_mapping": { - "start": 1138, - "length": 1499, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "UniV3Mixin", - "source_mapping": { - "start": 269, - "length": 4771, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapUniV3(UniV3Mixin.Params__swapUniV3)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "tmpAmountOut = ISwapRouter(_params.router).exactInput(params)", - "source_mapping": { - "start": 2186, - "length": 346, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 60, - 61, - 62, - 63, - 64, - 65 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapUniV3", - "source_mapping": { - "start": 1138, - "length": 1499, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "UniV3Mixin", - "source_mapping": { - "start": 269, - "length": 4771, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapUniV3(UniV3Mixin.Params__swapUniV3)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "TransferHelper.safeApprove(path[0],_params.router,0)", - "source_mapping": { - "start": 2350, - "length": 54, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 63 - ], - "starting_column": 17, - "ending_column": 71 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapUniV3", - "source_mapping": { - "start": 1138, - "length": 1499, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "UniV3Mixin", - "source_mapping": { - "start": 269, - "length": 4771, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapUniV3(UniV3Mixin.Params__swapUniV3)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "amountOut = ISwapRouter(_params.router).exactInput(params)", - "source_mapping": { - "start": 2562, - "length": 58, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 67 - ], - "starting_column": 13, - "ending_column": 71 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapUniV3", - "source_mapping": { - "start": 1138, - "length": 1499, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "UniV3Mixin", - "source_mapping": { - "start": 269, - "length": 4771, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapUniV3(UniV3Mixin.Params__swapUniV3)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "pullFromBefore(_from,_amount)", - "source_mapping": { - "start": 8792, - "length": 30, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 249 - ], - "starting_column": 14, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV3", - "source_mapping": { - "start": 8558, - "length": 534, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "returndata = address(token).functionCall(data,SafeERC20: low-level call failed)", - "source_mapping": { - "start": 4298, - "length": 95, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "is_dependency": true, - "lines": [ - 110 - ], - "starting_column": 9, - "ending_column": 104 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_callOptionalReturn", - "source_mapping": { - "start": 3868, - "length": 717, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "is_dependency": true, - "lines": [ - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "SafeERC20Upgradeable", - "source_mapping": { - "start": 740, - "length": 3847, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_callOptionalReturn(IERC20Upgradeable,bytes)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "IERC20MetadataUpgradeable(_from).safeTransferFrom(msg.sender,address(this),_amount)", - "source_mapping": { - "start": 19490, - "length": 85, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 485 - ], - "starting_column": 9, - "ending_column": 94 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "pullFromBefore", - "source_mapping": { - "start": 19424, - "length": 169, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 484, - 485, - 486, - 487 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "pullFromBefore(address,uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "(success,returndata) = target.call{value: value}(data)", - "source_mapping": { - "start": 5251, - "length": 73, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 135 - ], - "starting_column": 9, - "ending_column": 82 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "functionCallWithValue", - "source_mapping": { - "start": 4971, - "length": 446, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AddressUpgradeable", - "source_mapping": { - "start": 194, - "length": 8087, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "functionCallWithValue(address,bytes,uint256,string)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "pushFromAndToAfter(_from,_to)", - "source_mapping": { - "start": 8823, - "length": 30, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 249 - ], - "starting_column": 45, - "ending_column": 75 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV3", - "source_mapping": { - "start": 8558, - "length": 534, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "returndata = address(token).functionCall(data,SafeERC20: low-level call failed)", - "source_mapping": { - "start": 4298, - "length": 95, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "is_dependency": true, - "lines": [ - 110 - ], - "starting_column": 9, - "ending_column": 104 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_callOptionalReturn", - "source_mapping": { - "start": 3868, - "length": 717, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "is_dependency": true, - "lines": [ - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "SafeERC20Upgradeable", - "source_mapping": { - "start": 740, - "length": 3847, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_callOptionalReturn(IERC20Upgradeable,bytes)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "IERC20MetadataUpgradeable(_from).safeTransfer(msg.sender,fromBal)", - "source_mapping": { - "start": 19793, - "length": 66, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 493 - ], - "starting_column": 13, - "ending_column": 79 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "pushFromAndToAfter", - "source_mapping": { - "start": 19599, - "length": 470, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "pushFromAndToAfter(address,address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "(success,returndata) = target.call{value: value}(data)", - "source_mapping": { - "start": 5251, - "length": 73, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 135 - ], - "starting_column": 9, - "ending_column": 82 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "functionCallWithValue", - "source_mapping": { - "start": 4971, - "length": 446, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AddressUpgradeable", - "source_mapping": { - "start": 194, - "length": 8087, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "functionCallWithValue(address,bytes,uint256,string)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "IERC20MetadataUpgradeable(_to).safeTransfer(msg.sender,toBal)", - "source_mapping": { - "start": 19990, - "length": 62, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 497 - ], - "starting_column": 13, - "ending_column": 75 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "pushFromAndToAfter", - "source_mapping": { - "start": 19599, - "length": 470, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "pushFromAndToAfter(address,address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "pullFromBefore(_from,_amount)", - "source_mapping": { - "start": 8792, - "length": 30, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 249 - ], - "starting_column": 14, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV3", - "source_mapping": { - "start": 8558, - "length": 534, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "(success,returndata) = target.call{value: value}(data)", - "source_mapping": { - "start": 5251, - "length": 73, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 135 - ], - "starting_column": 9, - "ending_column": 82 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "functionCallWithValue", - "source_mapping": { - "start": 4971, - "length": 446, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AddressUpgradeable", - "source_mapping": { - "start": 194, - "length": 8087, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "functionCallWithValue(address,bytes,uint256,string)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "pushFromAndToAfter(_from,_to)", - "source_mapping": { - "start": 8823, - "length": 30, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 249 - ], - "starting_column": 45, - "ending_column": 75 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV3", - "source_mapping": { - "start": 8558, - "length": 534, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "(success,returndata) = target.call{value: value}(data)", - "source_mapping": { - "start": 5251, - "length": 73, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 135 - ], - "starting_column": 9, - "ending_column": 82 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "functionCallWithValue", - "source_mapping": { - "start": 4971, - "length": 446, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AddressUpgradeable", - "source_mapping": { - "start": 194, - "length": 8087, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "functionCallWithValue(address,bytes,uint256,string)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "SwapFailed(_params.router,_params.amount,_params.minAmountOut,_params.from,_params.to)", - "source_mapping": { - "start": 2422, - "length": 95, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 64 - ], - "starting_column": 17, - "ending_column": 112 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapUniV3", - "source_mapping": { - "start": 1138, - "length": 1499, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "UniV3Mixin", - "source_mapping": { - "start": 269, - "length": 4771, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapUniV3(UniV3Mixin.Params__swapUniV3)" - } - } - }, - "additional_fields": { - "underlying_type": "event" - } - }, - { - "type": "node", - "name": "_swapUniV3(Params__swapUniV3(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive))", - "source_mapping": { - "start": 8977, - "length": 108, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 251 - ], - "starting_column": 9, - "ending_column": 117 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV3", - "source_mapping": { - "start": 8558, - "length": 534, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "underlying_type": "event" - } - } - ], - "description": "Reentrancy in ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool) (lib/vault-v2/src/ReaperSwapper.sol#241-252):\n\tExternal calls:\n\t- _swapUniV3(Params__swapUniV3(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive)) (lib/vault-v2/src/ReaperSwapper.sol#251)\n\t\t- (success,data) = token.call(abi.encodeWithSelector(IERC20.approve.selector,to,value)) (lib/vault-v2/src/libraries/TransferHelper.sol#35)\n\t\t- TransferHelper.safeApprove(path[0],_params.router,_params.amount) (lib/vault-v2/src/mixins/UniV3Mixin.sol#49)\n\t\t- tmpAmountOut = ISwapRouter(_params.router).exactInput(params) (lib/vault-v2/src/mixins/UniV3Mixin.sol#60-65)\n\t\t- TransferHelper.safeApprove(path[0],_params.router,0) (lib/vault-v2/src/mixins/UniV3Mixin.sol#63)\n\t\t- amountOut = ISwapRouter(_params.router).exactInput(params) (lib/vault-v2/src/mixins/UniV3Mixin.sol#67)\n\t- pullFromBefore(_from,_amount) (lib/vault-v2/src/ReaperSwapper.sol#249)\n\t\t- returndata = address(token).functionCall(data,SafeERC20: low-level call failed) (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#110)\n\t\t- IERC20MetadataUpgradeable(_from).safeTransferFrom(msg.sender,address(this),_amount) (lib/vault-v2/src/ReaperSwapper.sol#485)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#135)\n\t- pushFromAndToAfter(_from,_to) (lib/vault-v2/src/ReaperSwapper.sol#249)\n\t\t- returndata = address(token).functionCall(data,SafeERC20: low-level call failed) (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#110)\n\t\t- IERC20MetadataUpgradeable(_from).safeTransfer(msg.sender,fromBal) (lib/vault-v2/src/ReaperSwapper.sol#493)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#135)\n\t\t- IERC20MetadataUpgradeable(_to).safeTransfer(msg.sender,toBal) (lib/vault-v2/src/ReaperSwapper.sol#497)\n\tExternal calls sending eth:\n\t- pullFromBefore(_from,_amount) (lib/vault-v2/src/ReaperSwapper.sol#249)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#135)\n\t- pushFromAndToAfter(_from,_to) (lib/vault-v2/src/ReaperSwapper.sol#249)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#135)\n\tEvent emitted after the call(s):\n\t- SwapFailed(_params.router,_params.amount,_params.minAmountOut,_params.from,_params.to) (lib/vault-v2/src/mixins/UniV3Mixin.sol#64)\n\t\t- _swapUniV3(Params__swapUniV3(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive)) (lib/vault-v2/src/ReaperSwapper.sol#251)\n", - "markdown": "Reentrancy in [ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)](lib/vault-v2/src/ReaperSwapper.sol#L241-L252):\n\tExternal calls:\n\t- [_swapUniV3(Params__swapUniV3(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive))](lib/vault-v2/src/ReaperSwapper.sol#L251)\n\t\t- [(success,data) = token.call(abi.encodeWithSelector(IERC20.approve.selector,to,value))](lib/vault-v2/src/libraries/TransferHelper.sol#L35)\n\t\t- [TransferHelper.safeApprove(path[0],_params.router,_params.amount)](lib/vault-v2/src/mixins/UniV3Mixin.sol#L49)\n\t\t- [tmpAmountOut = ISwapRouter(_params.router).exactInput(params)](lib/vault-v2/src/mixins/UniV3Mixin.sol#L60-L65)\n\t\t- [TransferHelper.safeApprove(path[0],_params.router,0)](lib/vault-v2/src/mixins/UniV3Mixin.sol#L63)\n\t\t- [amountOut = ISwapRouter(_params.router).exactInput(params)](lib/vault-v2/src/mixins/UniV3Mixin.sol#L67)\n\t- [pullFromBefore(_from,_amount)](lib/vault-v2/src/ReaperSwapper.sol#L249)\n\t\t- [returndata = address(token).functionCall(data,SafeERC20: low-level call failed)](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#L110)\n\t\t- [IERC20MetadataUpgradeable(_from).safeTransferFrom(msg.sender,address(this),_amount)](lib/vault-v2/src/ReaperSwapper.sol#L485)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L135)\n\t- [pushFromAndToAfter(_from,_to)](lib/vault-v2/src/ReaperSwapper.sol#L249)\n\t\t- [returndata = address(token).functionCall(data,SafeERC20: low-level call failed)](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#L110)\n\t\t- [IERC20MetadataUpgradeable(_from).safeTransfer(msg.sender,fromBal)](lib/vault-v2/src/ReaperSwapper.sol#L493)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L135)\n\t\t- [IERC20MetadataUpgradeable(_to).safeTransfer(msg.sender,toBal)](lib/vault-v2/src/ReaperSwapper.sol#L497)\n\tExternal calls sending eth:\n\t- [pullFromBefore(_from,_amount)](lib/vault-v2/src/ReaperSwapper.sol#L249)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L135)\n\t- [pushFromAndToAfter(_from,_to)](lib/vault-v2/src/ReaperSwapper.sol#L249)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L135)\n\tEvent emitted after the call(s):\n\t- [SwapFailed(_params.router,_params.amount,_params.minAmountOut,_params.from,_params.to)](lib/vault-v2/src/mixins/UniV3Mixin.sol#L64)\n\t\t- [_swapUniV3(Params__swapUniV3(_from,_to,_amount,minAmountOut,_router,_deadline,_tryCatchActive))](lib/vault-v2/src/ReaperSwapper.sol#L251)\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L241-L252", - "id": "e7ec4df5ce298c28fd7e1b953f526ffa840951ed878c7159f2eb300e06952fab", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_zap", - "source_mapping": { - "start": 6830, - "length": 2292, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_zap(address,uint256,address,DiscountExerciseParams)" - } - }, - { - "type": "node", - "name": "underlyingToken.approve(swapProps.swapper,feeAmount)", - "source_mapping": { - "start": 8058, - "length": 53, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 213 - ], - "starting_column": 13, - "ending_column": 66 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_zap", - "source_mapping": { - "start": 6830, - "length": 2292, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_zap(address,uint256,address,DiscountExerciseParams)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "_generalSwap(swapProps.exchangeTypes,address(underlyingToken),address(paymentToken),feeAmount,minAmountOut,swapProps.exchangeAddress)", - "source_mapping": { - "start": 8277, - "length": 138, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 216 - ], - "starting_column": 13, - "ending_column": 151 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_zap", - "source_mapping": { - "start": 6830, - "length": 2292, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_zap(address,uint256,address,DiscountExerciseParams)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "_swapper.swapUniV2(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)", - "source_mapping": { - "start": 2488, - "length": 80, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 75 - ], - "starting_column": 13, - "ending_column": 93 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_generalSwap", - "source_mapping": { - "start": 2091, - "length": 1014, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "SwapHelper", - "source_mapping": { - "start": 514, - "length": 3269, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_generalSwap(ExchangeType,address,address,uint256,uint256,address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "_swapper.swapBal(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)", - "source_mapping": { - "start": 2631, - "length": 78, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 77 - ], - "starting_column": 13, - "ending_column": 91 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_generalSwap", - "source_mapping": { - "start": 2091, - "length": 1014, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "SwapHelper", - "source_mapping": { - "start": 514, - "length": 3269, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_generalSwap(ExchangeType,address,address,uint256,uint256,address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "_swapper.swapVelo(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)", - "source_mapping": { - "start": 2778, - "length": 79, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 79 - ], - "starting_column": 13, - "ending_column": 92 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_generalSwap", - "source_mapping": { - "start": 2091, - "length": 1014, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "SwapHelper", - "source_mapping": { - "start": 514, - "length": 3269, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_generalSwap(ExchangeType,address,address,uint256,uint256,address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "_swapper.swapUniV3(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)", - "source_mapping": { - "start": 2922, - "length": 80, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 81 - ], - "starting_column": 13, - "ending_column": 93 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_generalSwap", - "source_mapping": { - "start": 2091, - "length": 1014, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "SwapHelper", - "source_mapping": { - "start": 514, - "length": 3269, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_generalSwap(ExchangeType,address,address,uint256,uint256,address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "distributeFees(paymentToken.balanceOf(address(this)),paymentToken)", - "source_mapping": { - "start": 8593, - "length": 67, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 220 - ], - "starting_column": 13, - "ending_column": 80 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_zap", - "source_mapping": { - "start": 6830, - "length": 2292, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_zap(address,uint256,address,DiscountExerciseParams)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "returndata = address(token).functionCall(data,SafeERC20: low-level call failed)", - "source_mapping": { - "start": 4166, - "length": 95, - "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "is_dependency": true, - "lines": [ - 110 - ], - "starting_column": 9, - "ending_column": 104 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_callOptionalReturn", - "source_mapping": { - "start": 3747, - "length": 706, - "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "is_dependency": true, - "lines": [ - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "SafeERC20", - "source_mapping": { - "start": 707, - "length": 3748, - "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_callOptionalReturn(IERC20,bytes)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "(success,returndata) = target.call{value: value}(data)", - "source_mapping": { - "start": 5240, - "length": 73, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 135 - ], - "starting_column": 9, - "ending_column": 82 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "functionCallWithValue", - "source_mapping": { - "start": 4960, - "length": 446, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Address", - "source_mapping": { - "start": 194, - "length": 8964, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "functionCallWithValue(address,bytes,uint256,string)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "token.safeTransfer(feeRecipients[i],feeAmount)", - "source_mapping": { - "start": 4121, - "length": 47, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 94 - ], - "starting_column": 13, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "distributeFees", - "source_mapping": { - "start": 3762, - "length": 604, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseExercise", - "source_mapping": { - "start": 432, - "length": 3936, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "distributeFees(uint256,IERC20)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "token.safeTransfer(feeRecipients[feeRecipients.length - 1],remaining)", - "source_mapping": { - "start": 4224, - "length": 70, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 97 - ], - "starting_column": 9, - "ending_column": 79 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "distributeFees", - "source_mapping": { - "start": 3762, - "length": 604, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseExercise", - "source_mapping": { - "start": 432, - "length": 3936, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "distributeFees(uint256,IERC20)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "distributeFees(paymentToken.balanceOf(address(this)),paymentToken)", - "source_mapping": { - "start": 8593, - "length": 67, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 220 - ], - "starting_column": 13, - "ending_column": 80 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_zap", - "source_mapping": { - "start": 6830, - "length": 2292, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_zap(address,uint256,address,DiscountExerciseParams)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "(success,returndata) = target.call{value: value}(data)", - "source_mapping": { - "start": 5240, - "length": 73, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 135 - ], - "starting_column": 9, - "ending_column": 82 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "functionCallWithValue", - "source_mapping": { - "start": 4960, - "length": 446, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Address", - "source_mapping": { - "start": 194, - "length": 8964, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "functionCallWithValue(address,bytes,uint256,string)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "DistributeFees(feeRecipients,feeBPS,totalAmount)", - "source_mapping": { - "start": 4304, - "length": 55, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 98 - ], - "starting_column": 9, - "ending_column": 64 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "distributeFees", - "source_mapping": { - "start": 3762, - "length": 604, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseExercise", - "source_mapping": { - "start": 432, - "length": 3936, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "distributeFees(uint256,IERC20)" - } - } - }, - "additional_fields": { - "underlying_type": "event" - } - }, - { - "type": "node", - "name": "distributeFees(paymentToken.balanceOf(address(this)),paymentToken)", - "source_mapping": { - "start": 8593, - "length": 67, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 220 - ], - "starting_column": 13, - "ending_column": 80 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_zap", - "source_mapping": { - "start": 6830, - "length": 2292, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_zap(address,uint256,address,DiscountExerciseParams)" - } - } - }, - "additional_fields": { - "underlying_type": "event" - } - } - ], - "description": "Reentrancy in DiscountExercise._zap(address,uint256,address,DiscountExerciseParams) (src/exercise/DiscountExercise.sol#192-231):\n\tExternal calls:\n\t- underlyingToken.approve(swapProps.swapper,feeAmount) (src/exercise/DiscountExercise.sol#213)\n\t- _generalSwap(swapProps.exchangeTypes,address(underlyingToken),address(paymentToken),feeAmount,minAmountOut,swapProps.exchangeAddress) (src/exercise/DiscountExercise.sol#216)\n\t\t- _swapper.swapUniV2(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress) (src/helpers/SwapHelper.sol#75)\n\t\t- _swapper.swapBal(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress) (src/helpers/SwapHelper.sol#77)\n\t\t- _swapper.swapVelo(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress) (src/helpers/SwapHelper.sol#79)\n\t\t- _swapper.swapUniV3(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress) (src/helpers/SwapHelper.sol#81)\n\t- distributeFees(paymentToken.balanceOf(address(this)),paymentToken) (src/exercise/DiscountExercise.sol#220)\n\t\t- returndata = address(token).functionCall(data,SafeERC20: low-level call failed) (lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#110)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts/contracts/utils/Address.sol#135)\n\t\t- token.safeTransfer(feeRecipients[i],feeAmount) (src/exercise/BaseExercise.sol#94)\n\t\t- token.safeTransfer(feeRecipients[feeRecipients.length - 1],remaining) (src/exercise/BaseExercise.sol#97)\n\tExternal calls sending eth:\n\t- distributeFees(paymentToken.balanceOf(address(this)),paymentToken) (src/exercise/DiscountExercise.sol#220)\n\t\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts/contracts/utils/Address.sol#135)\n\tEvent emitted after the call(s):\n\t- DistributeFees(feeRecipients,feeBPS,totalAmount) (src/exercise/BaseExercise.sol#98)\n\t\t- distributeFees(paymentToken.balanceOf(address(this)),paymentToken) (src/exercise/DiscountExercise.sol#220)\n", - "markdown": "Reentrancy in [DiscountExercise._zap(address,uint256,address,DiscountExerciseParams)](src/exercise/DiscountExercise.sol#L192-L231):\n\tExternal calls:\n\t- [underlyingToken.approve(swapProps.swapper,feeAmount)](src/exercise/DiscountExercise.sol#L213)\n\t- [_generalSwap(swapProps.exchangeTypes,address(underlyingToken),address(paymentToken),feeAmount,minAmountOut,swapProps.exchangeAddress)](src/exercise/DiscountExercise.sol#L216)\n\t\t- [_swapper.swapUniV2(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L75)\n\t\t- [_swapper.swapBal(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L77)\n\t\t- [_swapper.swapVelo(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L79)\n\t\t- [_swapper.swapUniV3(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L81)\n\t- [distributeFees(paymentToken.balanceOf(address(this)),paymentToken)](src/exercise/DiscountExercise.sol#L220)\n\t\t- [returndata = address(token).functionCall(data,SafeERC20: low-level call failed)](lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#L110)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135)\n\t\t- [token.safeTransfer(feeRecipients[i],feeAmount)](src/exercise/BaseExercise.sol#L94)\n\t\t- [token.safeTransfer(feeRecipients[feeRecipients.length - 1],remaining)](src/exercise/BaseExercise.sol#L97)\n\tExternal calls sending eth:\n\t- [distributeFees(paymentToken.balanceOf(address(this)),paymentToken)](src/exercise/DiscountExercise.sol#L220)\n\t\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135)\n\tEvent emitted after the call(s):\n\t- [DistributeFees(feeRecipients,feeBPS,totalAmount)](src/exercise/BaseExercise.sol#L98)\n\t\t- [distributeFees(paymentToken.balanceOf(address(this)),paymentToken)](src/exercise/DiscountExercise.sol#L220)\n", - "first_markdown_element": "src/exercise/DiscountExercise.sol#L192-L231", - "id": "fac3c8628962c8c145b9cc713e68a80a082c54c497a1d117e7426d73343a5856", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "permit", - "source_mapping": { - "start": 3838, - "length": 1483, - "filename_relative": "lib/solmate/src/tokens/ERC20.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/tokens/ERC20.sol", - "filename_short": "lib/solmate/src/tokens/ERC20.sol", - "is_dependency": true, - "lines": [ - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC20", - "source_mapping": { - "start": 474, - "length": 6337, - "filename_relative": "lib/solmate/src/tokens/ERC20.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/tokens/ERC20.sol", - "filename_short": "lib/solmate/src/tokens/ERC20.sol", - "is_dependency": true, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)" - } - }, - { - "type": "node", - "name": "require(bool,string)(deadline >= block.timestamp,PERMIT_DEADLINE_EXPIRED)", - "source_mapping": { - "start": 4037, - "length": 63, - "filename_relative": "lib/solmate/src/tokens/ERC20.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/tokens/ERC20.sol", - "filename_short": "lib/solmate/src/tokens/ERC20.sol", - "is_dependency": true, - "lines": [ - 125 - ], - "starting_column": 9, - "ending_column": 72 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "permit", - "source_mapping": { - "start": 3838, - "length": 1483, - "filename_relative": "lib/solmate/src/tokens/ERC20.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/tokens/ERC20.sol", - "filename_short": "lib/solmate/src/tokens/ERC20.sol", - "is_dependency": true, - "lines": [ - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC20", - "source_mapping": { - "start": 474, - "length": 6337, - "filename_relative": "lib/solmate/src/tokens/ERC20.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/tokens/ERC20.sol", - "filename_short": "lib/solmate/src/tokens/ERC20.sol", - "is_dependency": true, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)" - } - } - } - } - ], - "description": "ERC20.permit(address,address,uint256,uint256,uint8,bytes32,bytes32) (lib/solmate/src/tokens/ERC20.sol#116-160) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- require(bool,string)(deadline >= block.timestamp,PERMIT_DEADLINE_EXPIRED) (lib/solmate/src/tokens/ERC20.sol#125)\n", - "markdown": "[ERC20.permit(address,address,uint256,uint256,uint8,bytes32,bytes32)](lib/solmate/src/tokens/ERC20.sol#L116-L160) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [require(bool,string)(deadline >= block.timestamp,PERMIT_DEADLINE_EXPIRED)](lib/solmate/src/tokens/ERC20.sol#L125)\n", - "first_markdown_element": "lib/solmate/src/tokens/ERC20.sol#L116-L160", - "id": "0fb9231dc121cc76860bb0687bd6cde7aeea76e6335fdfad5753810640c24c9b", - "check": "timestamp", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_authorizeUpgrade", - "source_mapping": { - "start": 7489, - "length": 338, - "filename_relative": "src/OptionsToken.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", - "filename_short": "src/OptionsToken.sol", - "is_dependency": false, - "lines": [ - 186, - 187, - 188, - 189, - 190 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OptionsToken", - "source_mapping": { - "start": 691, - "length": 7138, - "filename_relative": "src/OptionsToken.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", - "filename_short": "src/OptionsToken.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_authorizeUpgrade(address)" - } - }, - { - "type": "node", - "name": "require(bool,string)(upgradeProposalTime + UPGRADE_TIMELOCK < block.timestamp,Upgrade cooldown not initiated or still ongoing)", - "source_mapping": { - "start": 7583, - "length": 116, - "filename_relative": "src/OptionsToken.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", - "filename_short": "src/OptionsToken.sol", - "is_dependency": false, - "lines": [ - 187 - ], - "starting_column": 9, - "ending_column": 125 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_authorizeUpgrade", - "source_mapping": { - "start": 7489, - "length": 338, - "filename_relative": "src/OptionsToken.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", - "filename_short": "src/OptionsToken.sol", - "is_dependency": false, - "lines": [ - 186, - 187, - 188, - 189, - 190 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OptionsToken", - "source_mapping": { - "start": 691, - "length": 7138, - "filename_relative": "src/OptionsToken.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", - "filename_short": "src/OptionsToken.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_authorizeUpgrade(address)" - } - } - } - } - ], - "description": "OptionsToken._authorizeUpgrade(address) (src/OptionsToken.sol#186-190) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- require(bool,string)(upgradeProposalTime + UPGRADE_TIMELOCK < block.timestamp,Upgrade cooldown not initiated or still ongoing) (src/OptionsToken.sol#187)\n", - "markdown": "[OptionsToken._authorizeUpgrade(address)](src/OptionsToken.sol#L186-L190) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [require(bool,string)(upgradeProposalTime + UPGRADE_TIMELOCK < block.timestamp,Upgrade cooldown not initiated or still ongoing)](src/OptionsToken.sol#L187)\n", - "first_markdown_element": "src/OptionsToken.sol#L186-L190", - "id": "47d6ef328e4bec93ff731c772653d7d7d1461f9a46b96c65802f9b0b2081a72b", - "check": "timestamp", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_chainlinkIsFrozen", - "source_mapping": { - "start": 17196, - "length": 258, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 431, - 432, - 433, - 434 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_chainlinkIsFrozen(ReaperSwapper.ChainlinkResponse,address)" - } - }, - { - "type": "node", - "name": "block.timestamp - _response.timestamp > aggregatorTimeout", - "source_mapping": { - "start": 17383, - "length": 64, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 433 - ], - "starting_column": 9, - "ending_column": 73 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_chainlinkIsFrozen", - "source_mapping": { - "start": 17196, - "length": 258, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 431, - 432, - 433, - 434 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_chainlinkIsFrozen(ReaperSwapper.ChainlinkResponse,address)" - } - } - } - } - ], - "description": "ReaperSwapper._chainlinkIsFrozen(ReaperSwapper.ChainlinkResponse,address) (lib/vault-v2/src/ReaperSwapper.sol#431-434) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- block.timestamp - _response.timestamp > aggregatorTimeout (lib/vault-v2/src/ReaperSwapper.sol#433)\n", - "markdown": "[ReaperSwapper._chainlinkIsFrozen(ReaperSwapper.ChainlinkResponse,address)](lib/vault-v2/src/ReaperSwapper.sol#L431-L434) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [block.timestamp - _response.timestamp > aggregatorTimeout](lib/vault-v2/src/ReaperSwapper.sol#L433)\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L431-L434", - "id": "5b1d0ab9c3a7bcae71f7bd3a11a0caa71fd77c85af715f593d1fc00cf04614d3", - "check": "timestamp", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_redeem", - "source_mapping": { - "start": 9155, - "length": 752, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_redeem(address,uint256,address,DiscountExerciseParams)" - } - }, - { - "type": "node", - "name": "block.timestamp > params.deadline", - "source_mapping": { - "start": 9377, - "length": 33, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 239 - ], - "starting_column": 13, - "ending_column": 46 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_redeem", - "source_mapping": { - "start": 9155, - "length": 752, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_redeem(address,uint256,address,DiscountExerciseParams)" - } - } - } - } - ], - "description": "DiscountExercise._redeem(address,uint256,address,DiscountExerciseParams) (src/exercise/DiscountExercise.sol#234-251) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- block.timestamp > params.deadline (src/exercise/DiscountExercise.sol#239)\n", - "markdown": "[DiscountExercise._redeem(address,uint256,address,DiscountExerciseParams)](src/exercise/DiscountExercise.sol#L234-L251) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [block.timestamp > params.deadline](src/exercise/DiscountExercise.sol#L239)\n", - "first_markdown_element": "src/exercise/DiscountExercise.sol#L234-L251", - "id": "61a1c13c0eec30cef4d45e71eb68b2242a5ed6a3ec92629dbb2b00a5c05b5305", - "check": "timestamp", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_zap", - "source_mapping": { - "start": 6830, - "length": 2292, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_zap(address,uint256,address,DiscountExerciseParams)" - } - }, - { - "type": "node", - "name": "block.timestamp > params.deadline", - "source_mapping": { - "start": 7049, - "length": 33, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 197 - ], - "starting_column": 13, - "ending_column": 46 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_zap", - "source_mapping": { - "start": 6830, - "length": 2292, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_zap(address,uint256,address,DiscountExerciseParams)" - } - } - } - } - ], - "description": "DiscountExercise._zap(address,uint256,address,DiscountExerciseParams) (src/exercise/DiscountExercise.sol#192-231) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- block.timestamp > params.deadline (src/exercise/DiscountExercise.sol#197)\n", - "markdown": "[DiscountExercise._zap(address,uint256,address,DiscountExerciseParams)](src/exercise/DiscountExercise.sol#L192-L231) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [block.timestamp > params.deadline](src/exercise/DiscountExercise.sol#L197)\n", - "first_markdown_element": "src/exercise/DiscountExercise.sol#L192-L231", - "id": "668585016ac0bae752c2577765c1c163cfc3144c0656d1fb189859db4c2d78b8", - "check": "timestamp", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "getChainlinkPriceTargetDigits", - "source_mapping": { - "start": 12574, - "length": 693, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getChainlinkPriceTargetDigits(address)" - } - }, - { - "type": "node", - "name": "require(bool,string)(! _chainlinkIsBroken(chainlinkResponse,prevChainlinkResponse) && ! _chainlinkIsFrozen(chainlinkResponse,_token),ReaperSwapper: Chainlink must be working and current)", - "source_mapping": { - "start": 12925, - "length": 226, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 337, - 338, - 339, - 340, - 341 - ], - "starting_column": 9, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getChainlinkPriceTargetDigits", - "source_mapping": { - "start": 12574, - "length": 693, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getChainlinkPriceTargetDigits(address)" - } - } - } - } - ], - "description": "ReaperSwapper.getChainlinkPriceTargetDigits(address) (lib/vault-v2/src/ReaperSwapper.sol#333-343) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- require(bool,string)(! _chainlinkIsBroken(chainlinkResponse,prevChainlinkResponse) && ! _chainlinkIsFrozen(chainlinkResponse,_token),ReaperSwapper: Chainlink must be working and current) (lib/vault-v2/src/ReaperSwapper.sol#337-341)\n", - "markdown": "[ReaperSwapper.getChainlinkPriceTargetDigits(address)](lib/vault-v2/src/ReaperSwapper.sol#L333-L343) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [require(bool,string)(! _chainlinkIsBroken(chainlinkResponse,prevChainlinkResponse) && ! _chainlinkIsFrozen(chainlinkResponse,_token),ReaperSwapper: Chainlink must be working and current)](lib/vault-v2/src/ReaperSwapper.sol#L337-L341)\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L333-L343", - "id": "8876dcb1ce9974595b01d633cfe62552129b63ca689be1b0815a3c19c88b3095", - "check": "timestamp", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_badChainlinkResponse", - "source_mapping": { - "start": 16626, - "length": 564, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_badChainlinkResponse(ReaperSwapper.ChainlinkResponse)" - } - }, - { - "type": "node", - "name": "_response.timestamp == 0 || _response.timestamp > block.timestamp", - "source_mapping": { - "start": 16994, - "length": 65, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 424 - ], - "starting_column": 13, - "ending_column": 78 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_badChainlinkResponse", - "source_mapping": { - "start": 16626, - "length": 564, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_badChainlinkResponse(ReaperSwapper.ChainlinkResponse)" - } - } - } - } - ], - "description": "ReaperSwapper._badChainlinkResponse(ReaperSwapper.ChainlinkResponse) (lib/vault-v2/src/ReaperSwapper.sol#418-429) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- _response.timestamp == 0 || _response.timestamp > block.timestamp (lib/vault-v2/src/ReaperSwapper.sol#424)\n", - "markdown": "[ReaperSwapper._badChainlinkResponse(ReaperSwapper.ChainlinkResponse)](lib/vault-v2/src/ReaperSwapper.sol#L418-L429) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [_response.timestamp == 0 || _response.timestamp > block.timestamp](lib/vault-v2/src/ReaperSwapper.sol#L424)\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L418-L429", - "id": "c9769fb3b49a0cb62289925e91879f5e539b1d1b11aa4df992552532f0fc1edb", - "check": "timestamp", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_authorizeUpgrade", - "source_mapping": { - "start": 19135, - "length": 283, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 476, - 477, - 478, - 479, - 480, - 481, - 482 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_authorizeUpgrade(address)" - } - }, - { - "type": "node", - "name": "require(bool,string)(upgradeProposalTime + UPGRADE_TIMELOCK < block.timestamp,Upgrade cooldown not initiated or still ongoing)", - "source_mapping": { - "start": 19241, - "length": 138, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 478, - 479, - 480 - ], - "starting_column": 9, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_authorizeUpgrade", - "source_mapping": { - "start": 19135, - "length": 283, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 476, - 477, - 478, - 479, - 480, - 481, - 482 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_authorizeUpgrade(address)" - } - } - } - } - ], - "description": "ReaperSwapper._authorizeUpgrade(address) (lib/vault-v2/src/ReaperSwapper.sol#476-482) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- require(bool,string)(upgradeProposalTime + UPGRADE_TIMELOCK < block.timestamp,Upgrade cooldown not initiated or still ongoing) (lib/vault-v2/src/ReaperSwapper.sol#478-480)\n", - "markdown": "[ReaperSwapper._authorizeUpgrade(address)](lib/vault-v2/src/ReaperSwapper.sol#L476-L482) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [require(bool,string)(upgradeProposalTime + UPGRADE_TIMELOCK < block.timestamp,Upgrade cooldown not initiated or still ongoing)](lib/vault-v2/src/ReaperSwapper.sol#L478-L480)\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L476-L482", - "id": "f0962c61819abf294fef0372224298be1e0fde776b4031d7996ce34948836d89", - "check": "timestamp", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "unsafeDiv", - "source_mapping": { - "start": 9436, - "length": 285, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FixedPointMathLib", - "source_mapping": { - "start": 341, - "length": 9712, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "unsafeDiv(uint256,uint256)" - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 9564, - "length": 151, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 240, - 241, - 242, - 243, - 244 - ], - "starting_column": 9, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "unsafeDiv", - "source_mapping": { - "start": 9436, - "length": 285, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FixedPointMathLib", - "source_mapping": { - "start": 341, - "length": 9712, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "unsafeDiv(uint256,uint256)" - } - } - } - } - ], - "description": "FixedPointMathLib.unsafeDiv(uint256,uint256) (lib/solmate/src/utils/FixedPointMathLib.sol#238-245) uses assembly\n\t- INLINE ASM (lib/solmate/src/utils/FixedPointMathLib.sol#240-244)\n", - "markdown": "[FixedPointMathLib.unsafeDiv(uint256,uint256)](lib/solmate/src/utils/FixedPointMathLib.sol#L238-L245) uses assembly\n\t- [INLINE ASM](lib/solmate/src/utils/FixedPointMathLib.sol#L240-L244)\n", - "first_markdown_element": "lib/solmate/src/utils/FixedPointMathLib.sol#L238-L245", - "id": "0beed87682b0d9d1b5d62d5e0b9a3ea42569e26d73cc841baa517c84883f1df4", - "check": "assembly", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "getTickAtSqrtRatio", - "source_mapping": { - "start": 4563, - "length": 4852, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getTickAtSqrtRatio(uint160)" - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 5000, - "length": 164, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 77, - 78, - 79, - 80, - 81 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getTickAtSqrtRatio", - "source_mapping": { - "start": 4563, - "length": 4852, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getTickAtSqrtRatio(uint160)" - } - } - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 5177, - "length": 148, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 82, - 83, - 84, - 85, - 86 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getTickAtSqrtRatio", - "source_mapping": { - "start": 4563, - "length": 4852, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getTickAtSqrtRatio(uint160)" - } - } - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 5338, - "length": 140, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 87, - 88, - 89, - 90, - 91 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getTickAtSqrtRatio", - "source_mapping": { - "start": 4563, - "length": 4852, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getTickAtSqrtRatio(uint160)" - } - } - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 5491, - "length": 136, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 92, - 93, - 94, - 95, - 96 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getTickAtSqrtRatio", - "source_mapping": { - "start": 4563, - "length": 4852, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getTickAtSqrtRatio(uint160)" - } - } - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 5640, - "length": 134, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 97, - 98, - 99, - 100, - 101 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getTickAtSqrtRatio", - "source_mapping": { - "start": 4563, - "length": 4852, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getTickAtSqrtRatio(uint160)" - } - } - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 5787, - "length": 133, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 102, - 103, - 104, - 105, - 106 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getTickAtSqrtRatio", - "source_mapping": { - "start": 4563, - "length": 4852, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getTickAtSqrtRatio(uint160)" - } - } - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 5933, - "length": 133, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 107, - 108, - 109, - 110, - 111 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getTickAtSqrtRatio", - "source_mapping": { - "start": 4563, - "length": 4852, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getTickAtSqrtRatio(uint160)" - } - } - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 6079, - "length": 94, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 112, - 113, - 114, - 115 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getTickAtSqrtRatio", - "source_mapping": { - "start": 4563, - "length": 4852, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getTickAtSqrtRatio(uint160)" - } - } - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 6340, - "length": 180, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 122, - 123, - 124, - 125, - 126, - 127 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getTickAtSqrtRatio", - "source_mapping": { - "start": 4563, - "length": 4852, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getTickAtSqrtRatio(uint160)" - } - } - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 6533, - "length": 180, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 128, - 129, - 130, - 131, - 132, - 133 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getTickAtSqrtRatio", - "source_mapping": { - "start": 4563, - "length": 4852, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getTickAtSqrtRatio(uint160)" - } - } - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 6726, - "length": 180, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 134, - 135, - 136, - 137, - 138, - 139 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getTickAtSqrtRatio", - "source_mapping": { - "start": 4563, - "length": 4852, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getTickAtSqrtRatio(uint160)" - } - } - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 6919, - "length": 180, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 140, - 141, - 142, - 143, - 144, - 145 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getTickAtSqrtRatio", - "source_mapping": { - "start": 4563, - "length": 4852, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getTickAtSqrtRatio(uint160)" - } - } - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 7112, - "length": 180, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 146, - 147, - 148, - 149, - 150, - 151 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getTickAtSqrtRatio", - "source_mapping": { - "start": 4563, - "length": 4852, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getTickAtSqrtRatio(uint160)" - } - } - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 7305, - "length": 180, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 152, - 153, - 154, - 155, - 156, - 157 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getTickAtSqrtRatio", - "source_mapping": { - "start": 4563, - "length": 4852, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getTickAtSqrtRatio(uint160)" - } - } - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 7498, - "length": 180, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 158, - 159, - 160, - 161, - 162, - 163 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getTickAtSqrtRatio", - "source_mapping": { - "start": 4563, - "length": 4852, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getTickAtSqrtRatio(uint160)" - } - } - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 7691, - "length": 180, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 164, - 165, - 166, - 167, - 168, - 169 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getTickAtSqrtRatio", - "source_mapping": { - "start": 4563, - "length": 4852, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getTickAtSqrtRatio(uint160)" - } - } - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 7884, - "length": 180, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 170, - 171, - 172, - 173, - 174, - 175 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getTickAtSqrtRatio", - "source_mapping": { - "start": 4563, - "length": 4852, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getTickAtSqrtRatio(uint160)" - } - } - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 8077, - "length": 180, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 176, - 177, - 178, - 179, - 180, - 181 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getTickAtSqrtRatio", - "source_mapping": { - "start": 4563, - "length": 4852, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getTickAtSqrtRatio(uint160)" - } - } - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 8270, - "length": 180, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 182, - 183, - 184, - 185, - 186, - 187 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getTickAtSqrtRatio", - "source_mapping": { - "start": 4563, - "length": 4852, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getTickAtSqrtRatio(uint160)" - } - } - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 8463, - "length": 180, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 188, - 189, - 190, - 191, - 192, - 193 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getTickAtSqrtRatio", - "source_mapping": { - "start": 4563, - "length": 4852, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getTickAtSqrtRatio(uint160)" - } - } - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 8656, - "length": 180, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 194, - 195, - 196, - 197, - 198, - 199 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getTickAtSqrtRatio", - "source_mapping": { - "start": 4563, - "length": 4852, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getTickAtSqrtRatio(uint160)" - } - } - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 8849, - "length": 149, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 200, - 201, - 202, - 203, - 204 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getTickAtSqrtRatio", - "source_mapping": { - "start": 4563, - "length": 4852, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getTickAtSqrtRatio(uint160)" - } - } - } - } - ], - "description": "TickMath.getTickAtSqrtRatio(uint160) (lib/v3-core/contracts/libraries/TickMath.sol#68-213) uses assembly\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#77-81)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#82-86)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#87-91)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#92-96)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#97-101)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#102-106)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#107-111)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#112-115)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#122-127)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#128-133)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#134-139)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#140-145)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#146-151)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#152-157)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#158-163)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#164-169)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#170-175)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#176-181)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#182-187)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#188-193)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#194-199)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/TickMath.sol#200-204)\n", - "markdown": "[TickMath.getTickAtSqrtRatio(uint160)](lib/v3-core/contracts/libraries/TickMath.sol#L68-L213) uses assembly\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L77-L81)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L82-L86)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L87-L91)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L92-L96)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L97-L101)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L102-L106)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L107-L111)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L112-L115)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L122-L127)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L128-L133)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L134-L139)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L140-L145)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L146-L151)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L152-L157)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L158-L163)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L164-L169)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L170-L175)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L176-L181)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L182-L187)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L188-L193)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L194-L199)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/TickMath.sol#L200-L204)\n", - "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L68-L213", - "id": "0def4f45d43eaf0b329bef30ef6af6d4f46fe19e1463c7b9ac4d362934eafeb6", - "check": "assembly", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "unsafeMod", - "source_mapping": { - "start": 9148, - "length": 282, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FixedPointMathLib", - "source_mapping": { - "start": 341, - "length": 9712, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "unsafeMod(uint256,uint256)" - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 9276, - "length": 148, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 231, - 232, - 233, - 234, - 235 - ], - "starting_column": 9, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "unsafeMod", - "source_mapping": { - "start": 9148, - "length": 282, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FixedPointMathLib", - "source_mapping": { - "start": 341, - "length": 9712, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "unsafeMod(uint256,uint256)" - } - } - } - } - ], - "description": "FixedPointMathLib.unsafeMod(uint256,uint256) (lib/solmate/src/utils/FixedPointMathLib.sol#229-236) uses assembly\n\t- INLINE ASM (lib/solmate/src/utils/FixedPointMathLib.sol#231-235)\n", - "markdown": "[FixedPointMathLib.unsafeMod(uint256,uint256)](lib/solmate/src/utils/FixedPointMathLib.sol#L229-L236) uses assembly\n\t- [INLINE ASM](lib/solmate/src/utils/FixedPointMathLib.sol#L231-L235)\n", - "first_markdown_element": "lib/solmate/src/utils/FixedPointMathLib.sol#L229-L236", - "id": "145fa339a2d24346a0d2f9a987ba904fefdb44045676d336d8c1454492437dd3", - "check": "assembly", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "_revert", - "source_mapping": { - "start": 8616, - "length": 540, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Address", - "source_mapping": { - "start": 194, - "length": 8964, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_revert(bytes,string)" - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 8947, - "length": 142, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 236, - 237, - 238, - 239 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_revert", - "source_mapping": { - "start": 8616, - "length": 540, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Address", - "source_mapping": { - "start": 194, - "length": 8964, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_revert(bytes,string)" - } - } - } - } - ], - "description": "Address._revert(bytes,string) (lib/openzeppelin-contracts/contracts/utils/Address.sol#231-243) uses assembly\n\t- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/Address.sol#236-239)\n", - "markdown": "[Address._revert(bytes,string)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L231-L243) uses assembly\n\t- [INLINE ASM](lib/openzeppelin-contracts/contracts/utils/Address.sol#L236-L239)\n", - "first_markdown_element": "lib/openzeppelin-contracts/contracts/utils/Address.sol#L231-L243", - "id": "202587d026bc154cc0001a634101f20caa34ef114975710d739f5c8c36d92e7c", - "check": "assembly", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "unsafeDivUp", - "source_mapping": { - "start": 9727, - "length": 324, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FixedPointMathLib", - "source_mapping": { - "start": 341, - "length": 9712, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "unsafeDivUp(uint256,uint256)" - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 9857, - "length": 188, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 249, - 250, - 251, - 252, - 253 - ], - "starting_column": 9, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "unsafeDivUp", - "source_mapping": { - "start": 9727, - "length": 324, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FixedPointMathLib", - "source_mapping": { - "start": 341, - "length": 9712, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "unsafeDivUp(uint256,uint256)" - } - } - } - } - ], - "description": "FixedPointMathLib.unsafeDivUp(uint256,uint256) (lib/solmate/src/utils/FixedPointMathLib.sol#247-254) uses assembly\n\t- INLINE ASM (lib/solmate/src/utils/FixedPointMathLib.sol#249-253)\n", - "markdown": "[FixedPointMathLib.unsafeDivUp(uint256,uint256)](lib/solmate/src/utils/FixedPointMathLib.sol#L247-L254) uses assembly\n\t- [INLINE ASM](lib/solmate/src/utils/FixedPointMathLib.sol#L249-L253)\n", - "first_markdown_element": "lib/solmate/src/utils/FixedPointMathLib.sol#L247-L254", - "id": "293ee1efbea006e81513a50b1f3897ca47465d642f7873e0618752a9e931afdc", - "check": "assembly", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "sqrt", - "source_mapping": { - "start": 5746, - "length": 3396, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FixedPointMathLib", - "source_mapping": { - "start": 341, - "length": 9712, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "sqrt(uint256)" - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 5858, - "length": 3278, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226 - ], - "starting_column": 9, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "sqrt", - "source_mapping": { - "start": 5746, - "length": 3396, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FixedPointMathLib", - "source_mapping": { - "start": 341, - "length": 9712, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "sqrt(uint256)" - } - } - } - } - ], - "description": "FixedPointMathLib.sqrt(uint256) (lib/solmate/src/utils/FixedPointMathLib.sol#164-227) uses assembly\n\t- INLINE ASM (lib/solmate/src/utils/FixedPointMathLib.sol#166-226)\n", - "markdown": "[FixedPointMathLib.sqrt(uint256)](lib/solmate/src/utils/FixedPointMathLib.sol#L164-L227) uses assembly\n\t- [INLINE ASM](lib/solmate/src/utils/FixedPointMathLib.sol#L166-L226)\n", - "first_markdown_element": "lib/solmate/src/utils/FixedPointMathLib.sol#L164-L227", - "id": "37818b71310ead61c2763f3a5f49d95d276ee9cb81a18a9e165d14c424a65602", - "check": "assembly", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "mulDivUp", - "source_mapping": { - "start": 2096, - "length": 672, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FixedPointMathLib", - "source_mapping": { - "start": 341, - "length": 9712, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDivUp(uint256,uint256,uint256)" - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 2274, - "length": 488, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68 - ], - "starting_column": 9, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDivUp", - "source_mapping": { - "start": 2096, - "length": 672, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FixedPointMathLib", - "source_mapping": { - "start": 341, - "length": 9712, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDivUp(uint256,uint256,uint256)" - } - } - } - } - ], - "description": "FixedPointMathLib.mulDivUp(uint256,uint256,uint256) (lib/solmate/src/utils/FixedPointMathLib.sol#53-69) uses assembly\n\t- INLINE ASM (lib/solmate/src/utils/FixedPointMathLib.sol#59-68)\n", - "markdown": "[FixedPointMathLib.mulDivUp(uint256,uint256,uint256)](lib/solmate/src/utils/FixedPointMathLib.sol#L53-L69) uses assembly\n\t- [INLINE ASM](lib/solmate/src/utils/FixedPointMathLib.sol#L59-L68)\n", - "first_markdown_element": "lib/solmate/src/utils/FixedPointMathLib.sol#L53-L69", - "id": "39a7fec07e0fbe8e5782dbb16c4b965b00f8fb1054cd2855b1fe4b9234ea9403", - "check": "assembly", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "values", - "source_mapping": { - "start": 10262, - "length": 300, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "is_dependency": true, - "lines": [ - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "EnumerableSetUpgradeable", - "source_mapping": { - "start": 1321, - "length": 11641, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "is_dependency": true, - "lines": [ - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "values(EnumerableSetUpgradeable.AddressSet)" - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 10484, - "length": 48, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "is_dependency": true, - "lines": [ - 298, - 299, - 300 - ], - "starting_column": 9, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "values", - "source_mapping": { - "start": 10262, - "length": 300, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "is_dependency": true, - "lines": [ - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "EnumerableSetUpgradeable", - "source_mapping": { - "start": 1321, - "length": 11641, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "is_dependency": true, - "lines": [ - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "values(EnumerableSetUpgradeable.AddressSet)" - } - } - } - } - ], - "description": "EnumerableSetUpgradeable.values(EnumerableSetUpgradeable.AddressSet) (lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#293-303) uses assembly\n\t- INLINE ASM (lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#298-300)\n", - "markdown": "[EnumerableSetUpgradeable.values(EnumerableSetUpgradeable.AddressSet)](lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#L293-L303) uses assembly\n\t- [INLINE ASM](lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#L298-L300)\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#L293-L303", - "id": "3b8aa13e9f50c73367d43257168b9f1a7a14154c5ff8bd884390007f08e0ae86", - "check": "assembly", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "values", - "source_mapping": { - "start": 7768, - "length": 300, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "is_dependency": true, - "lines": [ - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "EnumerableSetUpgradeable", - "source_mapping": { - "start": 1321, - "length": 11641, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "is_dependency": true, - "lines": [ - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "values(EnumerableSetUpgradeable.Bytes32Set)" - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 7990, - "length": 48, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "is_dependency": true, - "lines": [ - 224, - 225, - 226 - ], - "starting_column": 9, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "values", - "source_mapping": { - "start": 7768, - "length": 300, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "is_dependency": true, - "lines": [ - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "EnumerableSetUpgradeable", - "source_mapping": { - "start": 1321, - "length": 11641, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "is_dependency": true, - "lines": [ - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "values(EnumerableSetUpgradeable.Bytes32Set)" - } - } - } - } - ], - "description": "EnumerableSetUpgradeable.values(EnumerableSetUpgradeable.Bytes32Set) (lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#219-229) uses assembly\n\t- INLINE ASM (lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#224-226)\n", - "markdown": "[EnumerableSetUpgradeable.values(EnumerableSetUpgradeable.Bytes32Set)](lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#L219-L229) uses assembly\n\t- [INLINE ASM](lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#L224-L226)\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#L219-L229", - "id": "56194aad9e39935cc05324a8414a026d136558b2fa7f7ab0735fd12cc739a479", - "check": "assembly", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "_sendLogPayload", - "source_mapping": { - "start": 181, - "length": 376, - "filename_relative": "lib/forge-std/src/console.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/forge-std/src/console.sol", - "filename_short": "lib/forge-std/src/console.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "console", - "source_mapping": { - "start": 66, - "length": 66622, - "filename_relative": "lib/forge-std/src/console.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/forge-std/src/console.sol", - "filename_short": "lib/forge-std/src/console.sol", - "is_dependency": true, - "lines": [ - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500, - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520, - 521, - 522, - 523, - 524, - 525, - 526, - 527, - 528, - 529, - 530, - 531, - 532, - 533, - 534, - 535, - 536, - 537, - 538, - 539, - 540, - 541, - 542, - 543, - 544, - 545, - 546, - 547, - 548, - 549, - 550, - 551, - 552, - 553, - 554, - 555, - 556, - 557, - 558, - 559, - 560, - 561, - 562, - 563, - 564, - 565, - 566, - 567, - 568, - 569, - 570, - 571, - 572, - 573, - 574, - 575, - 576, - 577, - 578, - 579, - 580, - 581, - 582, - 583, - 584, - 585, - 586, - 587, - 588, - 589, - 590, - 591, - 592, - 593, - 594, - 595, - 596, - 597, - 598, - 599, - 600, - 601, - 602, - 603, - 604, - 605, - 606, - 607, - 608, - 609, - 610, - 611, - 612, - 613, - 614, - 615, - 616, - 617, - 618, - 619, - 620, - 621, - 622, - 623, - 624, - 625, - 626, - 627, - 628, - 629, - 630, - 631, - 632, - 633, - 634, - 635, - 636, - 637, - 638, - 639, - 640, - 641, - 642, - 643, - 644, - 645, - 646, - 647, - 648, - 649, - 650, - 651, - 652, - 653, - 654, - 655, - 656, - 657, - 658, - 659, - 660, - 661, - 662, - 663, - 664, - 665, - 666, - 667, - 668, - 669, - 670, - 671, - 672, - 673, - 674, - 675, - 676, - 677, - 678, - 679, - 680, - 681, - 682, - 683, - 684, - 685, - 686, - 687, - 688, - 689, - 690, - 691, - 692, - 693, - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223, - 1224, - 1225, - 1226, - 1227, - 1228, - 1229, - 1230, - 1231, - 1232, - 1233, - 1234, - 1235, - 1236, - 1237, - 1238, - 1239, - 1240, - 1241, - 1242, - 1243, - 1244, - 1245, - 1246, - 1247, - 1248, - 1249, - 1250, - 1251, - 1252, - 1253, - 1254, - 1255, - 1256, - 1257, - 1258, - 1259, - 1260, - 1261, - 1262, - 1263, - 1264, - 1265, - 1266, - 1267, - 1268, - 1269, - 1270, - 1271, - 1272, - 1273, - 1274, - 1275, - 1276, - 1277, - 1278, - 1279, - 1280, - 1281, - 1282, - 1283, - 1284, - 1285, - 1286, - 1287, - 1288, - 1289, - 1290, - 1291, - 1292, - 1293, - 1294, - 1295, - 1296, - 1297, - 1298, - 1299, - 1300, - 1301, - 1302, - 1303, - 1304, - 1305, - 1306, - 1307, - 1308, - 1309, - 1310, - 1311, - 1312, - 1313, - 1314, - 1315, - 1316, - 1317, - 1318, - 1319, - 1320, - 1321, - 1322, - 1323, - 1324, - 1325, - 1326, - 1327, - 1328, - 1329, - 1330, - 1331, - 1332, - 1333, - 1334, - 1335, - 1336, - 1337, - 1338, - 1339, - 1340, - 1341, - 1342, - 1343, - 1344, - 1345, - 1346, - 1347, - 1348, - 1349, - 1350, - 1351, - 1352, - 1353, - 1354, - 1355, - 1356, - 1357, - 1358, - 1359, - 1360, - 1361, - 1362, - 1363, - 1364, - 1365, - 1366, - 1367, - 1368, - 1369, - 1370, - 1371, - 1372, - 1373, - 1374, - 1375, - 1376, - 1377, - 1378, - 1379, - 1380, - 1381, - 1382, - 1383, - 1384, - 1385, - 1386, - 1387, - 1388, - 1389, - 1390, - 1391, - 1392, - 1393, - 1394, - 1395, - 1396, - 1397, - 1398, - 1399, - 1400, - 1401, - 1402, - 1403, - 1404, - 1405, - 1406, - 1407, - 1408, - 1409, - 1410, - 1411, - 1412, - 1413, - 1414, - 1415, - 1416, - 1417, - 1418, - 1419, - 1420, - 1421, - 1422, - 1423, - 1424, - 1425, - 1426, - 1427, - 1428, - 1429, - 1430, - 1431, - 1432, - 1433, - 1434, - 1435, - 1436, - 1437, - 1438, - 1439, - 1440, - 1441, - 1442, - 1443, - 1444, - 1445, - 1446, - 1447, - 1448, - 1449, - 1450, - 1451, - 1452, - 1453, - 1454, - 1455, - 1456, - 1457, - 1458, - 1459, - 1460, - 1461, - 1462, - 1463, - 1464, - 1465, - 1466, - 1467, - 1468, - 1469, - 1470, - 1471, - 1472, - 1473, - 1474, - 1475, - 1476, - 1477, - 1478, - 1479, - 1480, - 1481, - 1482, - 1483, - 1484, - 1485, - 1486, - 1487, - 1488, - 1489, - 1490, - 1491, - 1492, - 1493, - 1494, - 1495, - 1496, - 1497, - 1498, - 1499, - 1500, - 1501, - 1502, - 1503, - 1504, - 1505, - 1506, - 1507, - 1508, - 1509, - 1510, - 1511, - 1512, - 1513, - 1514, - 1515, - 1516, - 1517, - 1518, - 1519, - 1520, - 1521, - 1522, - 1523, - 1524, - 1525, - 1526, - 1527, - 1528, - 1529, - 1530, - 1531, - 1532, - 1533, - 1534 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_sendLogPayload(bytes)" - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 392, - "length": 159, - "filename_relative": "lib/forge-std/src/console.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/forge-std/src/console.sol", - "filename_short": "lib/forge-std/src/console.sol", - "is_dependency": true, - "lines": [ - 11, - 12, - 13, - 14 - ], - "starting_column": 9, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_sendLogPayload", - "source_mapping": { - "start": 181, - "length": 376, - "filename_relative": "lib/forge-std/src/console.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/forge-std/src/console.sol", - "filename_short": "lib/forge-std/src/console.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "console", - "source_mapping": { - "start": 66, - "length": 66622, - "filename_relative": "lib/forge-std/src/console.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/forge-std/src/console.sol", - "filename_short": "lib/forge-std/src/console.sol", - "is_dependency": true, - "lines": [ - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500, - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520, - 521, - 522, - 523, - 524, - 525, - 526, - 527, - 528, - 529, - 530, - 531, - 532, - 533, - 534, - 535, - 536, - 537, - 538, - 539, - 540, - 541, - 542, - 543, - 544, - 545, - 546, - 547, - 548, - 549, - 550, - 551, - 552, - 553, - 554, - 555, - 556, - 557, - 558, - 559, - 560, - 561, - 562, - 563, - 564, - 565, - 566, - 567, - 568, - 569, - 570, - 571, - 572, - 573, - 574, - 575, - 576, - 577, - 578, - 579, - 580, - 581, - 582, - 583, - 584, - 585, - 586, - 587, - 588, - 589, - 590, - 591, - 592, - 593, - 594, - 595, - 596, - 597, - 598, - 599, - 600, - 601, - 602, - 603, - 604, - 605, - 606, - 607, - 608, - 609, - 610, - 611, - 612, - 613, - 614, - 615, - 616, - 617, - 618, - 619, - 620, - 621, - 622, - 623, - 624, - 625, - 626, - 627, - 628, - 629, - 630, - 631, - 632, - 633, - 634, - 635, - 636, - 637, - 638, - 639, - 640, - 641, - 642, - 643, - 644, - 645, - 646, - 647, - 648, - 649, - 650, - 651, - 652, - 653, - 654, - 655, - 656, - 657, - 658, - 659, - 660, - 661, - 662, - 663, - 664, - 665, - 666, - 667, - 668, - 669, - 670, - 671, - 672, - 673, - 674, - 675, - 676, - 677, - 678, - 679, - 680, - 681, - 682, - 683, - 684, - 685, - 686, - 687, - 688, - 689, - 690, - 691, - 692, - 693, - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223, - 1224, - 1225, - 1226, - 1227, - 1228, - 1229, - 1230, - 1231, - 1232, - 1233, - 1234, - 1235, - 1236, - 1237, - 1238, - 1239, - 1240, - 1241, - 1242, - 1243, - 1244, - 1245, - 1246, - 1247, - 1248, - 1249, - 1250, - 1251, - 1252, - 1253, - 1254, - 1255, - 1256, - 1257, - 1258, - 1259, - 1260, - 1261, - 1262, - 1263, - 1264, - 1265, - 1266, - 1267, - 1268, - 1269, - 1270, - 1271, - 1272, - 1273, - 1274, - 1275, - 1276, - 1277, - 1278, - 1279, - 1280, - 1281, - 1282, - 1283, - 1284, - 1285, - 1286, - 1287, - 1288, - 1289, - 1290, - 1291, - 1292, - 1293, - 1294, - 1295, - 1296, - 1297, - 1298, - 1299, - 1300, - 1301, - 1302, - 1303, - 1304, - 1305, - 1306, - 1307, - 1308, - 1309, - 1310, - 1311, - 1312, - 1313, - 1314, - 1315, - 1316, - 1317, - 1318, - 1319, - 1320, - 1321, - 1322, - 1323, - 1324, - 1325, - 1326, - 1327, - 1328, - 1329, - 1330, - 1331, - 1332, - 1333, - 1334, - 1335, - 1336, - 1337, - 1338, - 1339, - 1340, - 1341, - 1342, - 1343, - 1344, - 1345, - 1346, - 1347, - 1348, - 1349, - 1350, - 1351, - 1352, - 1353, - 1354, - 1355, - 1356, - 1357, - 1358, - 1359, - 1360, - 1361, - 1362, - 1363, - 1364, - 1365, - 1366, - 1367, - 1368, - 1369, - 1370, - 1371, - 1372, - 1373, - 1374, - 1375, - 1376, - 1377, - 1378, - 1379, - 1380, - 1381, - 1382, - 1383, - 1384, - 1385, - 1386, - 1387, - 1388, - 1389, - 1390, - 1391, - 1392, - 1393, - 1394, - 1395, - 1396, - 1397, - 1398, - 1399, - 1400, - 1401, - 1402, - 1403, - 1404, - 1405, - 1406, - 1407, - 1408, - 1409, - 1410, - 1411, - 1412, - 1413, - 1414, - 1415, - 1416, - 1417, - 1418, - 1419, - 1420, - 1421, - 1422, - 1423, - 1424, - 1425, - 1426, - 1427, - 1428, - 1429, - 1430, - 1431, - 1432, - 1433, - 1434, - 1435, - 1436, - 1437, - 1438, - 1439, - 1440, - 1441, - 1442, - 1443, - 1444, - 1445, - 1446, - 1447, - 1448, - 1449, - 1450, - 1451, - 1452, - 1453, - 1454, - 1455, - 1456, - 1457, - 1458, - 1459, - 1460, - 1461, - 1462, - 1463, - 1464, - 1465, - 1466, - 1467, - 1468, - 1469, - 1470, - 1471, - 1472, - 1473, - 1474, - 1475, - 1476, - 1477, - 1478, - 1479, - 1480, - 1481, - 1482, - 1483, - 1484, - 1485, - 1486, - 1487, - 1488, - 1489, - 1490, - 1491, - 1492, - 1493, - 1494, - 1495, - 1496, - 1497, - 1498, - 1499, - 1500, - 1501, - 1502, - 1503, - 1504, - 1505, - 1506, - 1507, - 1508, - 1509, - 1510, - 1511, - 1512, - 1513, - 1514, - 1515, - 1516, - 1517, - 1518, - 1519, - 1520, - 1521, - 1522, - 1523, - 1524, - 1525, - 1526, - 1527, - 1528, - 1529, - 1530, - 1531, - 1532, - 1533, - 1534 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_sendLogPayload(bytes)" - } - } - } - } - ], - "description": "console._sendLogPayload(bytes) (lib/forge-std/src/console.sol#7-15) uses assembly\n\t- INLINE ASM (lib/forge-std/src/console.sol#11-14)\n", - "markdown": "[console._sendLogPayload(bytes)](lib/forge-std/src/console.sol#L7-L15) uses assembly\n\t- [INLINE ASM](lib/forge-std/src/console.sol#L11-L14)\n", - "first_markdown_element": "lib/forge-std/src/console.sol#L7-L15", - "id": "5758c17df66f8816f5064e14ea7f15d5ee32aa62981846c608f5a746b6c72583", - "check": "assembly", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "getUint256Slot", - "source_mapping": { - "start": 2489, - "length": 190, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "is_dependency": true, - "lines": [ - 82, - 83, - 84, - 85, - 86, - 87 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "StorageSlotUpgradeable", - "source_mapping": { - "start": 1279, - "length": 1402, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "is_dependency": true, - "lines": [ - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getUint256Slot(bytes32)" - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 2626, - "length": 47, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "is_dependency": true, - "lines": [ - 84, - 85, - 86 - ], - "starting_column": 9, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getUint256Slot", - "source_mapping": { - "start": 2489, - "length": 190, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "is_dependency": true, - "lines": [ - 82, - 83, - 84, - 85, - 86, - 87 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "StorageSlotUpgradeable", - "source_mapping": { - "start": 1279, - "length": 1402, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "is_dependency": true, - "lines": [ - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getUint256Slot(bytes32)" - } - } - } - } - ], - "description": "StorageSlotUpgradeable.getUint256Slot(bytes32) (lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#82-87) uses assembly\n\t- INLINE ASM (lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#84-86)\n", - "markdown": "[StorageSlotUpgradeable.getUint256Slot(bytes32)](lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#L82-L87) uses assembly\n\t- [INLINE ASM](lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#L84-L86)\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#L82-L87", - "id": "5da981982addb53aa1a484aa5b90b5edf14fff276b7d6100c546d2ff73004118", - "check": "assembly", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "rpow", - "source_mapping": { - "start": 2774, - "length": 2778, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FixedPointMathLib", - "source_mapping": { - "start": 341, - "length": 9712, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "rpow(uint256,uint256,uint256)" - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 2943, - "length": 2603, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157 - ], - "starting_column": 9, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "rpow", - "source_mapping": { - "start": 2774, - "length": 2778, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FixedPointMathLib", - "source_mapping": { - "start": 341, - "length": 9712, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "rpow(uint256,uint256,uint256)" - } - } - } - } - ], - "description": "FixedPointMathLib.rpow(uint256,uint256,uint256) (lib/solmate/src/utils/FixedPointMathLib.sol#71-158) uses assembly\n\t- INLINE ASM (lib/solmate/src/utils/FixedPointMathLib.sol#77-157)\n", - "markdown": "[FixedPointMathLib.rpow(uint256,uint256,uint256)](lib/solmate/src/utils/FixedPointMathLib.sol#L71-L158) uses assembly\n\t- [INLINE ASM](lib/solmate/src/utils/FixedPointMathLib.sol#L77-L157)\n", - "first_markdown_element": "lib/solmate/src/utils/FixedPointMathLib.sol#L71-L158", - "id": "689002e3bc5887c37efbbca861ab9ec47f766293178f650ae3d6f514b002c94c", - "check": "assembly", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "_revert", - "source_mapping": { - "start": 7739, - "length": 540, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AddressUpgradeable", - "source_mapping": { - "start": 194, - "length": 8087, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_revert(bytes,string)" - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 8070, - "length": 142, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 211, - 212, - 213, - 214 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_revert", - "source_mapping": { - "start": 7739, - "length": 540, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AddressUpgradeable", - "source_mapping": { - "start": 194, - "length": 8087, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_revert(bytes,string)" - } - } - } - } - ], - "description": "AddressUpgradeable._revert(bytes,string) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#206-218) uses assembly\n\t- INLINE ASM (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#211-214)\n", - "markdown": "[AddressUpgradeable._revert(bytes,string)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L206-L218) uses assembly\n\t- [INLINE ASM](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L211-L214)\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L206-L218", - "id": "739c2c53d803e97b4475b0c59002e269bf280c020785e91d89e6f198833bfda0", - "check": "assembly", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "values", - "source_mapping": { - "start": 12663, - "length": 297, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "is_dependency": true, - "lines": [ - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "EnumerableSetUpgradeable", - "source_mapping": { - "start": 1321, - "length": 11641, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "is_dependency": true, - "lines": [ - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "values(EnumerableSetUpgradeable.UintSet)" - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 12882, - "length": 48, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "is_dependency": true, - "lines": [ - 372, - 373, - 374 - ], - "starting_column": 9, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "values", - "source_mapping": { - "start": 12663, - "length": 297, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "is_dependency": true, - "lines": [ - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "EnumerableSetUpgradeable", - "source_mapping": { - "start": 1321, - "length": 11641, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "is_dependency": true, - "lines": [ - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "values(EnumerableSetUpgradeable.UintSet)" - } - } - } - } - ], - "description": "EnumerableSetUpgradeable.values(EnumerableSetUpgradeable.UintSet) (lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#367-377) uses assembly\n\t- INLINE ASM (lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#372-374)\n", - "markdown": "[EnumerableSetUpgradeable.values(EnumerableSetUpgradeable.UintSet)](lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#L367-L377) uses assembly\n\t- [INLINE ASM](lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#L372-L374)\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#L367-L377", - "id": "7d56bbef68d3d28816c6f1db6f457a021f9e797b84e7c3d7dbcc61c9462f0d2f", - "check": "assembly", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "mulDivDown", - "source_mapping": { - "start": 1564, - "length": 526, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FixedPointMathLib", - "source_mapping": { - "start": 341, - "length": 9712, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDivDown(uint256,uint256,uint256)" - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 1744, - "length": 340, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50 - ], - "starting_column": 9, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDivDown", - "source_mapping": { - "start": 1564, - "length": 526, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FixedPointMathLib", - "source_mapping": { - "start": 341, - "length": 9712, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDivDown(uint256,uint256,uint256)" - } - } - } - } - ], - "description": "FixedPointMathLib.mulDivDown(uint256,uint256,uint256) (lib/solmate/src/utils/FixedPointMathLib.sol#36-51) uses assembly\n\t- INLINE ASM (lib/solmate/src/utils/FixedPointMathLib.sol#42-50)\n", - "markdown": "[FixedPointMathLib.mulDivDown(uint256,uint256,uint256)](lib/solmate/src/utils/FixedPointMathLib.sol#L36-L51) uses assembly\n\t- [INLINE ASM](lib/solmate/src/utils/FixedPointMathLib.sol#L42-L50)\n", - "first_markdown_element": "lib/solmate/src/utils/FixedPointMathLib.sol#L36-L51", - "id": "9e144d907a30f66c9e2920440884a22c1725fb31d5d562c7fb53efa1509ea1b0", - "check": "assembly", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "toString", - "source_mapping": { - "start": 437, - "length": 707, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", - "is_dependency": true, - "lines": [ - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "StringsUpgradeable", - "source_mapping": { - "start": 199, - "length": 2098, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", - "is_dependency": true, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "toString(uint256)" - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 732, - "length": 76, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", - "is_dependency": true, - "lines": [ - 24, - 25, - 26 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "toString", - "source_mapping": { - "start": 437, - "length": 707, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", - "is_dependency": true, - "lines": [ - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "StringsUpgradeable", - "source_mapping": { - "start": 199, - "length": 2098, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", - "is_dependency": true, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "toString(uint256)" - } - } - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 926, - "length": 93, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", - "is_dependency": true, - "lines": [ - 30, - 31, - 32 - ], - "starting_column": 17, - "ending_column": 18 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "toString", - "source_mapping": { - "start": 437, - "length": 707, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", - "is_dependency": true, - "lines": [ - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "StringsUpgradeable", - "source_mapping": { - "start": 199, - "length": 2098, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", - "is_dependency": true, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "toString(uint256)" - } - } - } - } - ], - "description": "StringsUpgradeable.toString(uint256) (lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol#18-38) uses assembly\n\t- INLINE ASM (lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol#24-26)\n\t- INLINE ASM (lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol#30-32)\n", - "markdown": "[StringsUpgradeable.toString(uint256)](lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol#L18-L38) uses assembly\n\t- [INLINE ASM](lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol#L24-L26)\n\t- [INLINE ASM](lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol#L30-L32)\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol#L18-L38", - "id": "a992fcb04beb4b522d466219687aab5caf1862079a86d0a72ff29083031b1b83", - "check": "assembly", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "getBooleanSlot", - "source_mapping": { - "start": 1913, - "length": 190, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "is_dependency": true, - "lines": [ - 62, - 63, - 64, - 65, - 66, - 67 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "StorageSlotUpgradeable", - "source_mapping": { - "start": 1279, - "length": 1402, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "is_dependency": true, - "lines": [ - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getBooleanSlot(bytes32)" - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 2050, - "length": 47, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "is_dependency": true, - "lines": [ - 64, - 65, - 66 - ], - "starting_column": 9, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getBooleanSlot", - "source_mapping": { - "start": 1913, - "length": 190, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "is_dependency": true, - "lines": [ - 62, - 63, - 64, - 65, - 66, - 67 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "StorageSlotUpgradeable", - "source_mapping": { - "start": 1279, - "length": 1402, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "is_dependency": true, - "lines": [ - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getBooleanSlot(bytes32)" - } - } - } - } - ], - "description": "StorageSlotUpgradeable.getBooleanSlot(bytes32) (lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#62-67) uses assembly\n\t- INLINE ASM (lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#64-66)\n", - "markdown": "[StorageSlotUpgradeable.getBooleanSlot(bytes32)](lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#L62-L67) uses assembly\n\t- [INLINE ASM](lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#L64-L66)\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#L62-L67", - "id": "abed8f4ef4fa2e3da0dfadfbc2db35dab5f0cddac1132ccf3de6ff9dfd330e08", - "check": "assembly", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 741, - "length": 4127, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FullMath", - "source_mapping": { - "start": 354, - "length": 5163, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 1369, - "length": 166, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 27, - 28, - 29, - 30, - 31 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 741, - "length": 4127, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FullMath", - "source_mapping": { - "start": 354, - "length": 5163, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 1687, - "length": 82, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 36, - 37, - 38 - ], - "starting_column": 17, - "ending_column": 18 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 741, - "length": 4127, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FullMath", - "source_mapping": { - "start": 354, - "length": 5163, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 2291, - "length": 79, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 53, - 54, - 55 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 741, - "length": 4127, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FullMath", - "source_mapping": { - "start": 354, - "length": 5163, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 2442, - "length": 129, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 57, - 58, - 59, - 60 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 741, - "length": 4127, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FullMath", - "source_mapping": { - "start": 354, - "length": 5163, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 2846, - "length": 78, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 67, - 68, - 69 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 741, - "length": 4127, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FullMath", - "source_mapping": { - "start": 354, - "length": 5163, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 2996, - "length": 66, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 72, - 73, - 74 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 741, - "length": 4127, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FullMath", - "source_mapping": { - "start": 354, - "length": 5163, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 3257, - "length": 80, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 78, - 79, - 80 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 741, - "length": 4127, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FullMath", - "source_mapping": { - "start": 354, - "length": 5163, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - } - ], - "description": "FullMath.mulDiv(uint256,uint256,uint256) (lib/v3-core/contracts/libraries/FullMath.sol#14-108) uses assembly\n\t- INLINE ASM (lib/v3-core/contracts/libraries/FullMath.sol#27-31)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/FullMath.sol#36-38)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/FullMath.sol#53-55)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/FullMath.sol#57-60)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/FullMath.sol#67-69)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/FullMath.sol#72-74)\n\t- INLINE ASM (lib/v3-core/contracts/libraries/FullMath.sol#78-80)\n", - "markdown": "[FullMath.mulDiv(uint256,uint256,uint256)](lib/v3-core/contracts/libraries/FullMath.sol#L14-L108) uses assembly\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/FullMath.sol#L27-L31)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/FullMath.sol#L36-L38)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/FullMath.sol#L53-L55)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/FullMath.sol#L57-L60)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/FullMath.sol#L67-L69)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/FullMath.sol#L72-L74)\n\t- [INLINE ASM](lib/v3-core/contracts/libraries/FullMath.sol#L78-L80)\n", - "first_markdown_element": "lib/v3-core/contracts/libraries/FullMath.sol#L14-L108", - "id": "cd4781abcd1d41fa749dcf4cc7a4749057c50a313df29ef331b4bb2d83971a0c", - "check": "assembly", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 1678, - "length": 3925, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MathUpgradeable", - "source_mapping": { - "start": 202, - "length": 12313, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 2280, - "length": 166, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 66, - 67, - 68, - 69, - 70 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 1678, - "length": 3925, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MathUpgradeable", - "source_mapping": { - "start": 202, - "length": 12313, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 3015, - "length": 300, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 1678, - "length": 3925, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MathUpgradeable", - "source_mapping": { - "start": 202, - "length": 12313, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 3683, - "length": 371, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mulDiv", - "source_mapping": { - "start": 1678, - "length": 3925, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MathUpgradeable", - "source_mapping": { - "start": 202, - "length": 12313, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "mulDiv(uint256,uint256,uint256)" - } - } - } - } - ], - "description": "MathUpgradeable.mulDiv(uint256,uint256,uint256) (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#55-135) uses assembly\n\t- INLINE ASM (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#66-70)\n\t- INLINE ASM (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#86-93)\n\t- INLINE ASM (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#100-109)\n", - "markdown": "[MathUpgradeable.mulDiv(uint256,uint256,uint256)](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L55-L135) uses assembly\n\t- [INLINE ASM](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L66-L70)\n\t- [INLINE ASM](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L86-L93)\n\t- [INLINE ASM](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L100-L109)\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L55-L135", - "id": "eb7fc1d015df84fd39e386d4f4360b409e4375b3501e52d9825a5f98ce00bbbe", - "check": "assembly", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "getBytes32Slot", - "source_mapping": { - "start": 2201, - "length": 190, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "is_dependency": true, - "lines": [ - 72, - 73, - 74, - 75, - 76, - 77 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "StorageSlotUpgradeable", - "source_mapping": { - "start": 1279, - "length": 1402, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "is_dependency": true, - "lines": [ - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getBytes32Slot(bytes32)" - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 2338, - "length": 47, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "is_dependency": true, - "lines": [ - 74, - 75, - 76 - ], - "starting_column": 9, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getBytes32Slot", - "source_mapping": { - "start": 2201, - "length": 190, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "is_dependency": true, - "lines": [ - 72, - 73, - 74, - 75, - 76, - 77 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "StorageSlotUpgradeable", - "source_mapping": { - "start": 1279, - "length": 1402, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "is_dependency": true, - "lines": [ - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getBytes32Slot(bytes32)" - } - } - } - } - ], - "description": "StorageSlotUpgradeable.getBytes32Slot(bytes32) (lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#72-77) uses assembly\n\t- INLINE ASM (lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#74-76)\n", - "markdown": "[StorageSlotUpgradeable.getBytes32Slot(bytes32)](lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#L72-L77) uses assembly\n\t- [INLINE ASM](lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#L74-L76)\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#L72-L77", - "id": "f1477136301f065a939603e66af2ce9966e69e30be386b8261bade5d7a7d25f1", - "check": "assembly", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "getAddressSlot", - "source_mapping": { - "start": 1625, - "length": 190, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "is_dependency": true, - "lines": [ - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "StorageSlotUpgradeable", - "source_mapping": { - "start": 1279, - "length": 1402, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "is_dependency": true, - "lines": [ - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getAddressSlot(bytes32)" - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 1762, - "length": 47, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "is_dependency": true, - "lines": [ - 54, - 55, - 56 - ], - "starting_column": 9, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getAddressSlot", - "source_mapping": { - "start": 1625, - "length": 190, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "is_dependency": true, - "lines": [ - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "StorageSlotUpgradeable", - "source_mapping": { - "start": 1279, - "length": 1402, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "is_dependency": true, - "lines": [ - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getAddressSlot(bytes32)" - } - } - } - } - ], - "description": "StorageSlotUpgradeable.getAddressSlot(bytes32) (lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#52-57) uses assembly\n\t- INLINE ASM (lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#54-56)\n", - "markdown": "[StorageSlotUpgradeable.getAddressSlot(bytes32)](lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#L52-L57) uses assembly\n\t- [INLINE ASM](lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#L54-L56)\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#L52-L57", - "id": "fcaccdf637e880c618f6f15622fb469dee912b1a036bb71ad6b383881b62ae17", - "check": "assembly", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "_swapVelo", - "source_mapping": { - "start": 862, - "length": 1768, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VeloSolidMixin", - "source_mapping": { - "start": 313, - "length": 4635, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapVelo(address,address,uint256,uint256,address,uint256,bool)" - } - }, - { - "type": "node", - "name": "_tryCatchActive != false", - "source_mapping": { - "start": 1850, - "length": 24, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 51 - ], - "starting_column": 12, - "ending_column": 36 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapVelo", - "source_mapping": { - "start": 862, - "length": 1768, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VeloSolidMixin", - "source_mapping": { - "start": 313, - "length": 4635, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapVelo(address,address,uint256,uint256,address,uint256,bool)" - } - } - } - } - ], - "description": "VeloSolidMixin._swapVelo(address,address,uint256,uint256,address,uint256,bool) (lib/vault-v2/src/mixins/VeloSolidMixin.sol#24-71) compares to a boolean constant:\n\t-_tryCatchActive != false (lib/vault-v2/src/mixins/VeloSolidMixin.sol#51)\n", - "markdown": "[VeloSolidMixin._swapVelo(address,address,uint256,uint256,address,uint256,bool)](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L24-L71) compares to a boolean constant:\n\t-[_tryCatchActive != false](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L51)\n", - "first_markdown_element": "lib/vault-v2/src/mixins/VeloSolidMixin.sol#L24-L71", - "id": "3468c3b56c70dc328b6ce16a2e884a49779787f33d95ed13986ee13303b673fb", - "check": "boolean-equal", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "_swapUniV2", - "source_mapping": { - "start": 748, - "length": 1626, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "UniV2Mixin", - "source_mapping": { - "start": 234, - "length": 4634, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapUniV2(address,address,uint256,uint256,address,uint256,bool)" - } - }, - { - "type": "node", - "name": "_tryCatchActive != false", - "source_mapping": { - "start": 1622, - "length": 24, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 45 - ], - "starting_column": 13, - "ending_column": 37 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapUniV2", - "source_mapping": { - "start": 748, - "length": 1626, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "UniV2Mixin", - "source_mapping": { - "start": 234, - "length": 4634, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapUniV2(address,address,uint256,uint256,address,uint256,bool)" - } - } - } - } - ], - "description": "UniV2Mixin._swapUniV2(address,address,uint256,uint256,address,uint256,bool) (lib/vault-v2/src/mixins/UniV2Mixin.sol#20-60) compares to a boolean constant:\n\t-_tryCatchActive != false (lib/vault-v2/src/mixins/UniV2Mixin.sol#45)\n", - "markdown": "[UniV2Mixin._swapUniV2(address,address,uint256,uint256,address,uint256,bool)](lib/vault-v2/src/mixins/UniV2Mixin.sol#L20-L60) compares to a boolean constant:\n\t-[_tryCatchActive != false](lib/vault-v2/src/mixins/UniV2Mixin.sol#L45)\n", - "first_markdown_element": "lib/vault-v2/src/mixins/UniV2Mixin.sol#L20-L60", - "id": "4d722cef03d795c4c7527723911fc2803c15560ae0f19f483e776f19951c36e6", - "check": "boolean-equal", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "_swapBal", - "source_mapping": { - "start": 895, - "length": 1974, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BalMixin", - "source_mapping": { - "start": 307, - "length": 3662, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapBal(address,address,uint256,uint256,address,uint256,bool)" - } - }, - { - "type": "node", - "name": "_tryCatchActive != false", - "source_mapping": { - "start": 2254, - "length": 24, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 63 - ], - "starting_column": 13, - "ending_column": 37 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swapBal", - "source_mapping": { - "start": 895, - "length": 1974, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BalMixin", - "source_mapping": { - "start": 307, - "length": 3662, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_swapBal(address,address,uint256,uint256,address,uint256,bool)" - } - } - } - } - ], - "description": "BalMixin._swapBal(address,address,uint256,uint256,address,uint256,bool) (lib/vault-v2/src/mixins/BalMixin.sol#25-76) compares to a boolean constant:\n\t-_tryCatchActive != false (lib/vault-v2/src/mixins/BalMixin.sol#63)\n", - "markdown": "[BalMixin._swapBal(address,address,uint256,uint256,address,uint256,bool)](lib/vault-v2/src/mixins/BalMixin.sol#L25-L76) compares to a boolean constant:\n\t-[_tryCatchActive != false](lib/vault-v2/src/mixins/BalMixin.sol#L63)\n", - "first_markdown_element": "lib/vault-v2/src/mixins/BalMixin.sol#L25-L76", - "id": "7bfc25a8f3bd571f220c04ccf03c188600dbeeb995e1e600bb2cb95af4059ff2", - "check": "boolean-equal", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "pragma", - "name": ">=0.4.22<0.9.0", - "source_mapping": { - "start": 32, - "length": 32, - "filename_relative": "lib/forge-std/src/console.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/forge-std/src/console.sol", - "filename_short": "lib/forge-std/src/console.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 33 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.4", - ".22", - "<", - "0.9", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 118, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 108, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 104, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlEnumerableUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlEnumerableUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlEnumerableUpgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 94, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 102, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 107, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1967Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1967Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1967Upgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 113, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 93, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 115, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 105, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 106, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 110, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/IERC20MetadataUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/IERC20MetadataUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/IERC20MetadataUpgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 114, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 115, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 86, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 105, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 101, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 99, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 100, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 103, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 205, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "is_dependency": true, - "lines": [ - 5 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 105, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts/contracts/security/Pausable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/security/Pausable.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/security/Pausable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 106, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 114, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 115, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 86, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Context.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Context.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Context.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 32, - "length": 23, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 45, - "length": 23, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 37, - "length": 23, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 169, - "length": 23, - "filename_relative": "lib/vault-v2/src/interfaces/AggregatorV3Interface.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/AggregatorV3Interface.sol", - "filename_short": "lib/vault-v2/src/interfaces/AggregatorV3Interface.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 38, - "length": 23, - "filename_relative": "lib/vault-v2/src/interfaces/IAsset.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IAsset.sol", - "filename_short": "lib/vault-v2/src/interfaces/IAsset.sol", - "is_dependency": true, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 38, - "length": 23, - "filename_relative": "lib/vault-v2/src/interfaces/IAuthorizer.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IAuthorizer.sol", - "filename_short": "lib/vault-v2/src/interfaces/IAuthorizer.sol", - "is_dependency": true, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 38, - "length": 23, - "filename_relative": "lib/vault-v2/src/interfaces/IBasePool.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IBasePool.sol", - "filename_short": "lib/vault-v2/src/interfaces/IBasePool.sol", - "is_dependency": true, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 38, - "length": 23, - "filename_relative": "lib/vault-v2/src/interfaces/IBaseWeightedPool.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IBaseWeightedPool.sol", - "filename_short": "lib/vault-v2/src/interfaces/IBaseWeightedPool.sol", - "is_dependency": true, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 38, - "length": 23, - "filename_relative": "lib/vault-v2/src/interfaces/IBeetVault.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IBeetVault.sol", - "filename_short": "lib/vault-v2/src/interfaces/IBeetVault.sol", - "is_dependency": true, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 38, - "length": 23, - "filename_relative": "lib/vault-v2/src/interfaces/IPoolSwapStructs.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IPoolSwapStructs.sol", - "filename_short": "lib/vault-v2/src/interfaces/IPoolSwapStructs.sol", - "is_dependency": true, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 38, - "length": 23, - "filename_relative": "lib/vault-v2/src/interfaces/ISignaturesValidator.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/ISignaturesValidator.sol", - "filename_short": "lib/vault-v2/src/interfaces/ISignaturesValidator.sol", - "is_dependency": true, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 38, - "length": 23, - "filename_relative": "lib/vault-v2/src/interfaces/ISwapErrors.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/ISwapErrors.sol", - "filename_short": "lib/vault-v2/src/interfaces/ISwapErrors.sol", - "is_dependency": true, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 37, - "length": 23, - "filename_relative": "lib/vault-v2/src/interfaces/ISwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/ISwapper.sol", - "filename_short": "lib/vault-v2/src/interfaces/ISwapper.sol", - "is_dependency": true, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 37, - "length": 23, - "filename_relative": "lib/vault-v2/src/interfaces/ISwapperSwaps.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/ISwapperSwaps.sol", - "filename_short": "lib/vault-v2/src/interfaces/ISwapperSwaps.sol", - "is_dependency": true, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 38, - "length": 23, - "filename_relative": "lib/vault-v2/src/interfaces/ITemporarilyPausable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/ITemporarilyPausable.sol", - "filename_short": "lib/vault-v2/src/interfaces/ITemporarilyPausable.sol", - "is_dependency": true, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 36, - "length": 23, - "filename_relative": "lib/vault-v2/src/interfaces/IUniswapV2Router01.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IUniswapV2Router01.sol", - "filename_short": "lib/vault-v2/src/interfaces/IUniswapV2Router01.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 37, - "length": 23, - "filename_relative": "lib/vault-v2/src/interfaces/IVeloPair.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IVeloPair.sol", - "filename_short": "lib/vault-v2/src/interfaces/IVeloPair.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 37, - "length": 23, - "filename_relative": "lib/vault-v2/src/interfaces/IVeloRouter.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IVeloRouter.sol", - "filename_short": "lib/vault-v2/src/interfaces/IVeloRouter.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 32, - "length": 23, - "filename_relative": "lib/vault-v2/src/interfaces/IVeloV1AndV2Factory.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IVeloV1AndV2Factory.sol", - "filename_short": "lib/vault-v2/src/interfaces/IVeloV1AndV2Factory.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 38, - "length": 23, - "filename_relative": "lib/vault-v2/src/libraries/Babylonian.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/Babylonian.sol", - "filename_short": "lib/vault-v2/src/libraries/Babylonian.sol", - "is_dependency": true, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 38, - "length": 23, - "filename_relative": "lib/vault-v2/src/libraries/ReaperMathUtils.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/ReaperMathUtils.sol", - "filename_short": "lib/vault-v2/src/libraries/ReaperMathUtils.sol", - "is_dependency": true, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 38, - "length": 23, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 82, - "length": 23, - "filename_relative": "lib/vault-v2/src/mixins/ReaperAccessControl.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/ReaperAccessControl.sol", - "filename_short": "lib/vault-v2/src/mixins/ReaperAccessControl.sol", - "is_dependency": true, - "lines": [ - 5 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 38, - "length": 23, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 38, - "length": 23, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 38, - "length": 23, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 38, - "length": 23, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 679, - "length": 23, - "filename_relative": "src/interfaces/IBalancerTwapOracle.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/interfaces/IBalancerTwapOracle.sol", - "filename_short": "src/interfaces/IBalancerTwapOracle.sol", - "is_dependency": false, - "lines": [ - 15 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 37, - "length": 23, - "filename_relative": "src/interfaces/ISwapperSwaps.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/interfaces/ISwapperSwaps.sol", - "filename_short": "src/interfaces/ISwapperSwaps.sol", - "is_dependency": false, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.2", - "source_mapping": { - "start": 116, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".2" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.2", - "source_mapping": { - "start": 113, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".2" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.1", - "source_mapping": { - "start": 101, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".1" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.1", - "source_mapping": { - "start": 101, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".1" - ] - } - }, - { - "type": "pragma", - "name": ">=0.8.0", - "source_mapping": { - "start": 42, - "length": 24, - "filename_relative": "lib/solmate/src/auth/Owned.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/auth/Owned.sol", - "filename_short": "lib/solmate/src/auth/Owned.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": ">=0.8.0", - "source_mapping": { - "start": 42, - "length": 24, - "filename_relative": "lib/solmate/src/tokens/ERC20.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/tokens/ERC20.sol", - "filename_short": "lib/solmate/src/tokens/ERC20.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": ">=0.8.0", - "source_mapping": { - "start": 42, - "length": 24, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": ">=0.5.0", - "source_mapping": { - "start": 45, - "length": 24, - "filename_relative": "lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol", - "filename_short": "lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.5", - ".0" - ] - } - }, - { - "type": "pragma", - "name": ">=0.5.0", - "source_mapping": { - "start": 45, - "length": 24, - "filename_relative": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol", - "filename_short": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.5", - ".0" - ] - } - }, - { - "type": "pragma", - "name": ">=0.5.0", - "source_mapping": { - "start": 45, - "length": 24, - "filename_relative": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol", - "filename_short": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.5", - ".0" - ] - } - }, - { - "type": "pragma", - "name": ">=0.5.0", - "source_mapping": { - "start": 45, - "length": 24, - "filename_relative": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol", - "filename_short": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.5", - ".0" - ] - } - }, - { - "type": "pragma", - "name": ">=0.5.0", - "source_mapping": { - "start": 45, - "length": 24, - "filename_relative": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol", - "filename_short": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.5", - ".0" - ] - } - }, - { - "type": "pragma", - "name": ">=0.5.0", - "source_mapping": { - "start": 45, - "length": 24, - "filename_relative": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol", - "filename_short": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.5", - ".0" - ] - } - }, - { - "type": "pragma", - "name": ">=0.5.0", - "source_mapping": { - "start": 45, - "length": 24, - "filename_relative": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol", - "filename_short": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.5", - ".0" - ] - } - }, - { - "type": "pragma", - "name": ">=0.5.0", - "source_mapping": { - "start": 45, - "length": 24, - "filename_relative": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", - "filename_short": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.5", - ".0" - ] - } - }, - { - "type": "pragma", - "name": ">=0.5.0", - "source_mapping": { - "start": 45, - "length": 24, - "filename_relative": "lib/vault-v2/src/interfaces/IPeripheryImmutableState.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IPeripheryImmutableState.sol", - "filename_short": "lib/vault-v2/src/interfaces/IPeripheryImmutableState.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.5", - ".0" - ] - } - }, - { - "type": "pragma", - "name": ">=0.5.0", - "source_mapping": { - "start": 45, - "length": 24, - "filename_relative": "lib/vault-v2/src/interfaces/IUniswapV3Factory.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IUniswapV3Factory.sol", - "filename_short": "lib/vault-v2/src/interfaces/IUniswapV3Factory.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.5", - ".0" - ] - } - }, - { - "type": "pragma", - "name": ">=0.5.0", - "source_mapping": { - "start": 45, - "length": 24, - "filename_relative": "lib/vault-v2/src/interfaces/IUniswapV3SwapCallback.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IUniswapV3SwapCallback.sol", - "filename_short": "lib/vault-v2/src/interfaces/IUniswapV3SwapCallback.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.5", - ".0" - ] - } - }, - { - "type": "pragma", - "name": ">=0.7.5", - "source_mapping": { - "start": 45, - "length": 24, - "filename_relative": "lib/vault-v2/src/interfaces/ISwapRouter.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/ISwapRouter.sol", - "filename_short": "lib/vault-v2/src/interfaces/ISwapRouter.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.7", - ".5" - ] - } - }, - { - "type": "pragma", - "name": ">=0.6.2", - "source_mapping": { - "start": 36, - "length": 24, - "filename_relative": "lib/vault-v2/src/interfaces/IUniswapV2Router02.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IUniswapV2Router02.sol", - "filename_short": "lib/vault-v2/src/interfaces/IUniswapV2Router02.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.6", - ".2" - ] - } - }, - { - "type": "pragma", - "name": ">=0.6.0", - "source_mapping": { - "start": 45, - "length": 24, - "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.6", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.13", - "source_mapping": { - "start": 37, - "length": 24, - "filename_relative": "src/OptionsToken.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", - "filename_short": "src/OptionsToken.sol", - "is_dependency": false, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".13" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.13", - "source_mapping": { - "start": 37, - "length": 24, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".13" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.13", - "source_mapping": { - "start": 37, - "length": 24, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".13" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.13", - "source_mapping": { - "start": 37, - "length": 24, - "filename_relative": "src/interfaces/IBalancer2TokensPool.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/interfaces/IBalancer2TokensPool.sol", - "filename_short": "src/interfaces/IBalancer2TokensPool.sol", - "is_dependency": false, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".13" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.13", - "source_mapping": { - "start": 37, - "length": 24, - "filename_relative": "src/interfaces/IExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/interfaces/IExercise.sol", - "filename_short": "src/interfaces/IExercise.sol", - "is_dependency": false, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".13" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.13", - "source_mapping": { - "start": 37, - "length": 24, - "filename_relative": "src/interfaces/IOptionsToken.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/interfaces/IOptionsToken.sol", - "filename_short": "src/interfaces/IOptionsToken.sol", - "is_dependency": false, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".13" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.13", - "source_mapping": { - "start": 37, - "length": 24, - "filename_relative": "src/oracles/BalancerOracle.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/BalancerOracle.sol", - "filename_short": "src/oracles/BalancerOracle.sol", - "is_dependency": false, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".13" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.13", - "source_mapping": { - "start": 37, - "length": 24, - "filename_relative": "src/oracles/ThenaOracle.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/ThenaOracle.sol", - "filename_short": "src/oracles/ThenaOracle.sol", - "is_dependency": false, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".13" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.13", - "source_mapping": { - "start": 37, - "length": 24, - "filename_relative": "src/oracles/UniswapV3Oracle.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/UniswapV3Oracle.sol", - "filename_short": "src/oracles/UniswapV3Oracle.sol", - "is_dependency": false, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".13" - ] - } - }, - { - "type": "pragma", - "name": ">=0.7.0<0.9.0", - "source_mapping": { - "start": 723, - "length": 31, - "filename_relative": "src/interfaces/IBalancerVault.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/interfaces/IBalancerVault.sol", - "filename_short": "src/interfaces/IBalancerVault.sol", - "is_dependency": false, - "lines": [ - 17 - ], - "starting_column": 1, - "ending_column": 32 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.7", - ".0", - "<", - "0.9", - ".0" - ] - } - }, - { - "type": "pragma", - "name": ">=0.7.0<0.9.0", - "source_mapping": { - "start": 38, - "length": 31, - "filename_relative": "src/interfaces/IERC20Mintable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/interfaces/IERC20Mintable.sol", - "filename_short": "src/interfaces/IERC20Mintable.sol", - "is_dependency": false, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 32 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.7", - ".0", - "<", - "0.9", - ".0" - ] - } - }, - { - "type": "pragma", - "name": ">=0.7.0<0.9.0", - "source_mapping": { - "start": 38, - "length": 31, - "filename_relative": "src/interfaces/IOracle.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/interfaces/IOracle.sol", - "filename_short": "src/interfaces/IOracle.sol", - "is_dependency": false, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 32 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.7", - ".0", - "<", - "0.9", - ".0" - ] - } - }, - { - "type": "pragma", - "name": ">=0.5", - "source_mapping": { - "start": 0, - "length": 22, - "filename_relative": "src/interfaces/IThenaPair.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/interfaces/IThenaPair.sol", - "filename_short": "src/interfaces/IThenaPair.sol", - "is_dependency": false, - "lines": [ - 1 - ], - "starting_column": 1, - "ending_column": 23 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.5" - ] - } - } - ], - "description": "12 different versions of Solidity are used:\n\t- Version constraint >=0.4.22<0.9.0 is used by:\n\t\t->=0.4.22<0.9.0 (lib/forge-std/src/console.sol#2)\n\t- Version constraint ^0.8.0 is used by:\n\t\t-^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlEnumerableUpgradeable.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1967Upgradeable.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/IERC20MetadataUpgradeable.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#5)\n\t\t-^0.8.0 (lib/openzeppelin-contracts/contracts/security/Pausable.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#4)\n\t\t-^0.8.0 (lib/openzeppelin-contracts/contracts/utils/Context.sol#4)\n\t\t-^0.8.0 (lib/v3-core/contracts/libraries/FullMath.sol#2)\n\t\t-^0.8.0 (lib/v3-core/contracts/libraries/TickMath.sol#2)\n\t\t-^0.8.0 (lib/vault-v2/src/ReaperSwapper.sol#3)\n\t\t-^0.8.0 (lib/vault-v2/src/interfaces/AggregatorV3Interface.sol#4)\n\t\t-^0.8.0 (lib/vault-v2/src/interfaces/IAsset.sol#3)\n\t\t-^0.8.0 (lib/vault-v2/src/interfaces/IAuthorizer.sol#3)\n\t\t-^0.8.0 (lib/vault-v2/src/interfaces/IBasePool.sol#3)\n\t\t-^0.8.0 (lib/vault-v2/src/interfaces/IBaseWeightedPool.sol#3)\n\t\t-^0.8.0 (lib/vault-v2/src/interfaces/IBeetVault.sol#3)\n\t\t-^0.8.0 (lib/vault-v2/src/interfaces/IPoolSwapStructs.sol#3)\n\t\t-^0.8.0 (lib/vault-v2/src/interfaces/ISignaturesValidator.sol#3)\n\t\t-^0.8.0 (lib/vault-v2/src/interfaces/ISwapErrors.sol#3)\n\t\t-^0.8.0 (lib/vault-v2/src/interfaces/ISwapper.sol#3)\n\t\t-^0.8.0 (lib/vault-v2/src/interfaces/ISwapperSwaps.sol#3)\n\t\t-^0.8.0 (lib/vault-v2/src/interfaces/ITemporarilyPausable.sol#3)\n\t\t-^0.8.0 (lib/vault-v2/src/interfaces/IUniswapV2Router01.sol#2)\n\t\t-^0.8.0 (lib/vault-v2/src/interfaces/IVeloPair.sol#2)\n\t\t-^0.8.0 (lib/vault-v2/src/interfaces/IVeloRouter.sol#2)\n\t\t-^0.8.0 (lib/vault-v2/src/interfaces/IVeloV1AndV2Factory.sol#2)\n\t\t-^0.8.0 (lib/vault-v2/src/libraries/Babylonian.sol#3)\n\t\t-^0.8.0 (lib/vault-v2/src/libraries/ReaperMathUtils.sol#3)\n\t\t-^0.8.0 (lib/vault-v2/src/mixins/BalMixin.sol#3)\n\t\t-^0.8.0 (lib/vault-v2/src/mixins/ReaperAccessControl.sol#5)\n\t\t-^0.8.0 (lib/vault-v2/src/mixins/UniV2Mixin.sol#3)\n\t\t-^0.8.0 (lib/vault-v2/src/mixins/UniV3Mixin.sol#3)\n\t\t-^0.8.0 (lib/vault-v2/src/mixins/VeloSolidMixin.sol#3)\n\t\t-^0.8.0 (src/helpers/SwapHelper.sol#3)\n\t\t-^0.8.0 (src/interfaces/IBalancerTwapOracle.sol#15)\n\t\t-^0.8.0 (src/interfaces/ISwapperSwaps.sol#3)\n\t- Version constraint ^0.8.2 is used by:\n\t\t-^0.8.2 (lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#4)\n\t\t-^0.8.2 (lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol#4)\n\t- Version constraint ^0.8.1 is used by:\n\t\t-^0.8.1 (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#4)\n\t\t-^0.8.1 (lib/openzeppelin-contracts/contracts/utils/Address.sol#4)\n\t- Version constraint >=0.8.0 is used by:\n\t\t->=0.8.0 (lib/solmate/src/auth/Owned.sol#2)\n\t\t->=0.8.0 (lib/solmate/src/tokens/ERC20.sol#2)\n\t\t->=0.8.0 (lib/solmate/src/utils/FixedPointMathLib.sol#2)\n\t- Version constraint >=0.5.0 is used by:\n\t\t->=0.5.0 (lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol#2)\n\t\t->=0.5.0 (lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol#2)\n\t\t->=0.5.0 (lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol#2)\n\t\t->=0.5.0 (lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol#2)\n\t\t->=0.5.0 (lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol#2)\n\t\t->=0.5.0 (lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol#2)\n\t\t->=0.5.0 (lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol#2)\n\t\t->=0.5.0 (lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol#2)\n\t\t->=0.5.0 (lib/vault-v2/src/interfaces/IPeripheryImmutableState.sol#2)\n\t\t->=0.5.0 (lib/vault-v2/src/interfaces/IUniswapV3Factory.sol#2)\n\t\t->=0.5.0 (lib/vault-v2/src/interfaces/IUniswapV3SwapCallback.sol#2)\n\t- Version constraint >=0.7.5 is used by:\n\t\t->=0.7.5 (lib/vault-v2/src/interfaces/ISwapRouter.sol#2)\n\t- Version constraint >=0.6.2 is used by:\n\t\t->=0.6.2 (lib/vault-v2/src/interfaces/IUniswapV2Router02.sol#2)\n\t- Version constraint >=0.6.0 is used by:\n\t\t->=0.6.0 (lib/vault-v2/src/libraries/TransferHelper.sol#2)\n\t- Version constraint ^0.8.13 is used by:\n\t\t-^0.8.13 (src/OptionsToken.sol#2)\n\t\t-^0.8.13 (src/exercise/BaseExercise.sol#2)\n\t\t-^0.8.13 (src/exercise/DiscountExercise.sol#2)\n\t\t-^0.8.13 (src/interfaces/IBalancer2TokensPool.sol#2)\n\t\t-^0.8.13 (src/interfaces/IExercise.sol#2)\n\t\t-^0.8.13 (src/interfaces/IOptionsToken.sol#2)\n\t\t-^0.8.13 (src/oracles/BalancerOracle.sol#2)\n\t\t-^0.8.13 (src/oracles/ThenaOracle.sol#2)\n\t\t-^0.8.13 (src/oracles/UniswapV3Oracle.sol#2)\n\t- Version constraint >=0.7.0<0.9.0 is used by:\n\t\t->=0.7.0<0.9.0 (src/interfaces/IBalancerVault.sol#17)\n\t\t->=0.7.0<0.9.0 (src/interfaces/IERC20Mintable.sol#3)\n\t\t->=0.7.0<0.9.0 (src/interfaces/IOracle.sol#3)\n\t- Version constraint >=0.5 is used by:\n\t\t->=0.5 (src/interfaces/IThenaPair.sol#1)\n", - "markdown": "12 different versions of Solidity are used:\n\t- Version constraint >=0.4.22<0.9.0 is used by:\n\t\t-[>=0.4.22<0.9.0](lib/forge-std/src/console.sol#L2)\n\t- Version constraint ^0.8.0 is used by:\n\t\t-[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlEnumerableUpgradeable.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1967Upgradeable.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/IERC20MetadataUpgradeable.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#L5)\n\t\t-[^0.8.0](lib/openzeppelin-contracts/contracts/security/Pausable.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#L4)\n\t\t-[^0.8.0](lib/openzeppelin-contracts/contracts/utils/Context.sol#L4)\n\t\t-[^0.8.0](lib/v3-core/contracts/libraries/FullMath.sol#L2)\n\t\t-[^0.8.0](lib/v3-core/contracts/libraries/TickMath.sol#L2)\n\t\t-[^0.8.0](lib/vault-v2/src/ReaperSwapper.sol#L3)\n\t\t-[^0.8.0](lib/vault-v2/src/interfaces/AggregatorV3Interface.sol#L4)\n\t\t-[^0.8.0](lib/vault-v2/src/interfaces/IAsset.sol#L3)\n\t\t-[^0.8.0](lib/vault-v2/src/interfaces/IAuthorizer.sol#L3)\n\t\t-[^0.8.0](lib/vault-v2/src/interfaces/IBasePool.sol#L3)\n\t\t-[^0.8.0](lib/vault-v2/src/interfaces/IBaseWeightedPool.sol#L3)\n\t\t-[^0.8.0](lib/vault-v2/src/interfaces/IBeetVault.sol#L3)\n\t\t-[^0.8.0](lib/vault-v2/src/interfaces/IPoolSwapStructs.sol#L3)\n\t\t-[^0.8.0](lib/vault-v2/src/interfaces/ISignaturesValidator.sol#L3)\n\t\t-[^0.8.0](lib/vault-v2/src/interfaces/ISwapErrors.sol#L3)\n\t\t-[^0.8.0](lib/vault-v2/src/interfaces/ISwapper.sol#L3)\n\t\t-[^0.8.0](lib/vault-v2/src/interfaces/ISwapperSwaps.sol#L3)\n\t\t-[^0.8.0](lib/vault-v2/src/interfaces/ITemporarilyPausable.sol#L3)\n\t\t-[^0.8.0](lib/vault-v2/src/interfaces/IUniswapV2Router01.sol#L2)\n\t\t-[^0.8.0](lib/vault-v2/src/interfaces/IVeloPair.sol#L2)\n\t\t-[^0.8.0](lib/vault-v2/src/interfaces/IVeloRouter.sol#L2)\n\t\t-[^0.8.0](lib/vault-v2/src/interfaces/IVeloV1AndV2Factory.sol#L2)\n\t\t-[^0.8.0](lib/vault-v2/src/libraries/Babylonian.sol#L3)\n\t\t-[^0.8.0](lib/vault-v2/src/libraries/ReaperMathUtils.sol#L3)\n\t\t-[^0.8.0](lib/vault-v2/src/mixins/BalMixin.sol#L3)\n\t\t-[^0.8.0](lib/vault-v2/src/mixins/ReaperAccessControl.sol#L5)\n\t\t-[^0.8.0](lib/vault-v2/src/mixins/UniV2Mixin.sol#L3)\n\t\t-[^0.8.0](lib/vault-v2/src/mixins/UniV3Mixin.sol#L3)\n\t\t-[^0.8.0](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L3)\n\t\t-[^0.8.0](src/helpers/SwapHelper.sol#L3)\n\t\t-[^0.8.0](src/interfaces/IBalancerTwapOracle.sol#L15)\n\t\t-[^0.8.0](src/interfaces/ISwapperSwaps.sol#L3)\n\t- Version constraint ^0.8.2 is used by:\n\t\t-[^0.8.2](lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#L4)\n\t\t-[^0.8.2](lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol#L4)\n\t- Version constraint ^0.8.1 is used by:\n\t\t-[^0.8.1](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L4)\n\t\t-[^0.8.1](lib/openzeppelin-contracts/contracts/utils/Address.sol#L4)\n\t- Version constraint >=0.8.0 is used by:\n\t\t-[>=0.8.0](lib/solmate/src/auth/Owned.sol#L2)\n\t\t-[>=0.8.0](lib/solmate/src/tokens/ERC20.sol#L2)\n\t\t-[>=0.8.0](lib/solmate/src/utils/FixedPointMathLib.sol#L2)\n\t- Version constraint >=0.5.0 is used by:\n\t\t-[>=0.5.0](lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol#L2)\n\t\t-[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol#L2)\n\t\t-[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol#L2)\n\t\t-[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol#L2)\n\t\t-[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol#L2)\n\t\t-[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol#L2)\n\t\t-[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol#L2)\n\t\t-[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol#L2)\n\t\t-[>=0.5.0](lib/vault-v2/src/interfaces/IPeripheryImmutableState.sol#L2)\n\t\t-[>=0.5.0](lib/vault-v2/src/interfaces/IUniswapV3Factory.sol#L2)\n\t\t-[>=0.5.0](lib/vault-v2/src/interfaces/IUniswapV3SwapCallback.sol#L2)\n\t- Version constraint >=0.7.5 is used by:\n\t\t-[>=0.7.5](lib/vault-v2/src/interfaces/ISwapRouter.sol#L2)\n\t- Version constraint >=0.6.2 is used by:\n\t\t-[>=0.6.2](lib/vault-v2/src/interfaces/IUniswapV2Router02.sol#L2)\n\t- Version constraint >=0.6.0 is used by:\n\t\t-[>=0.6.0](lib/vault-v2/src/libraries/TransferHelper.sol#L2)\n\t- Version constraint ^0.8.13 is used by:\n\t\t-[^0.8.13](src/OptionsToken.sol#L2)\n\t\t-[^0.8.13](src/exercise/BaseExercise.sol#L2)\n\t\t-[^0.8.13](src/exercise/DiscountExercise.sol#L2)\n\t\t-[^0.8.13](src/interfaces/IBalancer2TokensPool.sol#L2)\n\t\t-[^0.8.13](src/interfaces/IExercise.sol#L2)\n\t\t-[^0.8.13](src/interfaces/IOptionsToken.sol#L2)\n\t\t-[^0.8.13](src/oracles/BalancerOracle.sol#L2)\n\t\t-[^0.8.13](src/oracles/ThenaOracle.sol#L2)\n\t\t-[^0.8.13](src/oracles/UniswapV3Oracle.sol#L2)\n\t- Version constraint >=0.7.0<0.9.0 is used by:\n\t\t-[>=0.7.0<0.9.0](src/interfaces/IBalancerVault.sol#L17)\n\t\t-[>=0.7.0<0.9.0](src/interfaces/IERC20Mintable.sol#L3)\n\t\t-[>=0.7.0<0.9.0](src/interfaces/IOracle.sol#L3)\n\t- Version constraint >=0.5 is used by:\n\t\t-[>=0.5](src/interfaces/IThenaPair.sol#L1)\n", - "first_markdown_element": "lib/forge-std/src/console.sol#L2", - "id": "85edfa625830fd6d39749390d8a28c826b7e0471c23044a55a1d99f92b7f5482", - "check": "pragma", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - } - ], - "description": "TickMath.getSqrtRatioAtTick(int24) (lib/v3-core/contracts/libraries/TickMath.sol#26-61) has a high cyclomatic complexity (25).\n", - "markdown": "[TickMath.getSqrtRatioAtTick(int24)](lib/v3-core/contracts/libraries/TickMath.sol#L26-L61) has a high cyclomatic complexity (25).\n", - "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L26-L61", - "id": "7dc850151568c0ccbadfaf18e5baa7aba58df9a7be7ede854c7801abedfda59a", - "check": "cyclomatic-complexity", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "pragma", - "name": "^0.8.2", - "source_mapping": { - "start": 116, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".2" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.2", - "source_mapping": { - "start": 113, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".2" - ] - } - } - ], - "description": "Version constraint ^0.8.2 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)\n\t- FullInlinerNonExpressionSplitArgumentEvaluationOrder\n\t- MissingSideEffectsOnSelectorAccess\n\t- AbiReencodingHeadOverflowWithStaticArrayCleanup\n\t- DirtyBytesArrayToStorage\n\t- DataLocationChangeInInternalOverride\n\t- NestedCalldataArrayAbiReencodingSizeValidation\n\t- SignedImmutables\n\t- ABIDecodeTwoDimensionalArrayMemory\n\t- KeccakCaching.\nIt is used by:\n\t- ^0.8.2 (lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#4)\n\t- ^0.8.2 (lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol#4)\n", - "markdown": "Version constraint ^0.8.2 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)\n\t- FullInlinerNonExpressionSplitArgumentEvaluationOrder\n\t- MissingSideEffectsOnSelectorAccess\n\t- AbiReencodingHeadOverflowWithStaticArrayCleanup\n\t- DirtyBytesArrayToStorage\n\t- DataLocationChangeInInternalOverride\n\t- NestedCalldataArrayAbiReencodingSizeValidation\n\t- SignedImmutables\n\t- ABIDecodeTwoDimensionalArrayMemory\n\t- KeccakCaching.\nIt is used by:\n\t- [^0.8.2](lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#L4)\n\t- [^0.8.2](lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol#L4)\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#L4", - "id": "23c567b20d0424f0b9fdc3bc9515dded7c47d0f2c92a6223ce773baf018abb20", - "check": "solc-version", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "pragma", - "name": ">=0.6.0", - "source_mapping": { - "start": 45, - "length": 24, - "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.6", - ".0" - ] - } - } - ], - "description": "Version constraint >=0.6.0 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)\n\t- AbiReencodingHeadOverflowWithStaticArrayCleanup\n\t- DirtyBytesArrayToStorage\n\t- NestedCalldataArrayAbiReencodingSizeValidation\n\t- ABIDecodeTwoDimensionalArrayMemory\n\t- KeccakCaching\n\t- EmptyByteArrayCopy\n\t- DynamicArrayCleanup\n\t- MissingEscapingInFormatting\n\t- ArraySliceDynamicallyEncodedBaseType\n\t- ImplicitConstructorCallvalueCheck\n\t- TupleAssignmentMultiStackSlotComponents\n\t- MemoryArrayCreationOverflow\n\t- YulOptimizerRedundantAssignmentBreakContinue.\nIt is used by:\n\t- >=0.6.0 (lib/vault-v2/src/libraries/TransferHelper.sol#2)\n", - "markdown": "Version constraint >=0.6.0 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)\n\t- AbiReencodingHeadOverflowWithStaticArrayCleanup\n\t- DirtyBytesArrayToStorage\n\t- NestedCalldataArrayAbiReencodingSizeValidation\n\t- ABIDecodeTwoDimensionalArrayMemory\n\t- KeccakCaching\n\t- EmptyByteArrayCopy\n\t- DynamicArrayCleanup\n\t- MissingEscapingInFormatting\n\t- ArraySliceDynamicallyEncodedBaseType\n\t- ImplicitConstructorCallvalueCheck\n\t- TupleAssignmentMultiStackSlotComponents\n\t- MemoryArrayCreationOverflow\n\t- YulOptimizerRedundantAssignmentBreakContinue.\nIt is used by:\n\t- [>=0.6.0](lib/vault-v2/src/libraries/TransferHelper.sol#L2)\n", - "first_markdown_element": "lib/vault-v2/src/libraries/TransferHelper.sol#L2", - "id": "2ad22408bbd50c54342714ef4d73fdcb7de70fc26f2f719e2d94e74975873eb7", - "check": "solc-version", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "pragma", - "name": ">=0.5", - "source_mapping": { - "start": 0, - "length": 22, - "filename_relative": "src/interfaces/IThenaPair.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/interfaces/IThenaPair.sol", - "filename_short": "src/interfaces/IThenaPair.sol", - "is_dependency": false, - "lines": [ - 1 - ], - "starting_column": 1, - "ending_column": 23 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.5" - ] - } - } - ], - "description": "Version constraint >=0.5 is too complex.\nIt is used by:\n\t- >=0.5 (src/interfaces/IThenaPair.sol#1)\n", - "markdown": "Version constraint >=0.5 is too complex.\nIt is used by:\n\t- [>=0.5](src/interfaces/IThenaPair.sol#L1)\n", - "first_markdown_element": "src/interfaces/IThenaPair.sol#L1", - "id": "2ad70665f7cd347f547e5a92ff885c19999dbf2fae965bf1a9e88ae34d4842da", - "check": "solc-version", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "pragma", - "name": "^0.8.1", - "source_mapping": { - "start": 101, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".1" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.1", - "source_mapping": { - "start": 101, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".1" - ] - } - } - ], - "description": "Version constraint ^0.8.1 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)\n\t- FullInlinerNonExpressionSplitArgumentEvaluationOrder\n\t- MissingSideEffectsOnSelectorAccess\n\t- AbiReencodingHeadOverflowWithStaticArrayCleanup\n\t- DirtyBytesArrayToStorage\n\t- DataLocationChangeInInternalOverride\n\t- NestedCalldataArrayAbiReencodingSizeValidation\n\t- SignedImmutables\n\t- ABIDecodeTwoDimensionalArrayMemory\n\t- KeccakCaching.\nIt is used by:\n\t- ^0.8.1 (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#4)\n\t- ^0.8.1 (lib/openzeppelin-contracts/contracts/utils/Address.sol#4)\n", - "markdown": "Version constraint ^0.8.1 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)\n\t- FullInlinerNonExpressionSplitArgumentEvaluationOrder\n\t- MissingSideEffectsOnSelectorAccess\n\t- AbiReencodingHeadOverflowWithStaticArrayCleanup\n\t- DirtyBytesArrayToStorage\n\t- DataLocationChangeInInternalOverride\n\t- NestedCalldataArrayAbiReencodingSizeValidation\n\t- SignedImmutables\n\t- ABIDecodeTwoDimensionalArrayMemory\n\t- KeccakCaching.\nIt is used by:\n\t- [^0.8.1](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L4)\n\t- [^0.8.1](lib/openzeppelin-contracts/contracts/utils/Address.sol#L4)\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L4", - "id": "5b4c66a1bb40ec6a66dbf52a4cf24f6a91614ede5bb20cae9a049c071c3b9be2", - "check": "solc-version", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "pragma", - "name": ">=0.8.0", - "source_mapping": { - "start": 42, - "length": 24, - "filename_relative": "lib/solmate/src/auth/Owned.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/auth/Owned.sol", - "filename_short": "lib/solmate/src/auth/Owned.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": ">=0.8.0", - "source_mapping": { - "start": 42, - "length": 24, - "filename_relative": "lib/solmate/src/tokens/ERC20.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/tokens/ERC20.sol", - "filename_short": "lib/solmate/src/tokens/ERC20.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": ">=0.8.0", - "source_mapping": { - "start": 42, - "length": 24, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.8", - ".0" - ] - } - } - ], - "description": "Version constraint >=0.8.0 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)\n\t- FullInlinerNonExpressionSplitArgumentEvaluationOrder\n\t- MissingSideEffectsOnSelectorAccess\n\t- AbiReencodingHeadOverflowWithStaticArrayCleanup\n\t- DirtyBytesArrayToStorage\n\t- DataLocationChangeInInternalOverride\n\t- NestedCalldataArrayAbiReencodingSizeValidation\n\t- SignedImmutables\n\t- ABIDecodeTwoDimensionalArrayMemory\n\t- KeccakCaching.\nIt is used by:\n\t- >=0.8.0 (lib/solmate/src/auth/Owned.sol#2)\n\t- >=0.8.0 (lib/solmate/src/tokens/ERC20.sol#2)\n\t- >=0.8.0 (lib/solmate/src/utils/FixedPointMathLib.sol#2)\n", - "markdown": "Version constraint >=0.8.0 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)\n\t- FullInlinerNonExpressionSplitArgumentEvaluationOrder\n\t- MissingSideEffectsOnSelectorAccess\n\t- AbiReencodingHeadOverflowWithStaticArrayCleanup\n\t- DirtyBytesArrayToStorage\n\t- DataLocationChangeInInternalOverride\n\t- NestedCalldataArrayAbiReencodingSizeValidation\n\t- SignedImmutables\n\t- ABIDecodeTwoDimensionalArrayMemory\n\t- KeccakCaching.\nIt is used by:\n\t- [>=0.8.0](lib/solmate/src/auth/Owned.sol#L2)\n\t- [>=0.8.0](lib/solmate/src/tokens/ERC20.sol#L2)\n\t- [>=0.8.0](lib/solmate/src/utils/FixedPointMathLib.sol#L2)\n", - "first_markdown_element": "lib/solmate/src/auth/Owned.sol#L2", - "id": "608762324767ce76c3af44990a7836a9dfdba566defdc7b70d6131bf689edff6", - "check": "solc-version", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "pragma", - "name": ">=0.4.22<0.9.0", - "source_mapping": { - "start": 32, - "length": 32, - "filename_relative": "lib/forge-std/src/console.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/forge-std/src/console.sol", - "filename_short": "lib/forge-std/src/console.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 33 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.4", - ".22", - "<", - "0.9", - ".0" - ] - } - } - ], - "description": "Version constraint >=0.4.22<0.9.0 is too complex.\nIt is used by:\n\t- >=0.4.22<0.9.0 (lib/forge-std/src/console.sol#2)\n", - "markdown": "Version constraint >=0.4.22<0.9.0 is too complex.\nIt is used by:\n\t- [>=0.4.22<0.9.0](lib/forge-std/src/console.sol#L2)\n", - "first_markdown_element": "lib/forge-std/src/console.sol#L2", - "id": "6c8ea62efd4799f5b24c03f450a6e012ab55c2446251d81bfa3eca7df3593083", - "check": "solc-version", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "pragma", - "name": ">=0.7.0<0.9.0", - "source_mapping": { - "start": 723, - "length": 31, - "filename_relative": "src/interfaces/IBalancerVault.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/interfaces/IBalancerVault.sol", - "filename_short": "src/interfaces/IBalancerVault.sol", - "is_dependency": false, - "lines": [ - 17 - ], - "starting_column": 1, - "ending_column": 32 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.7", - ".0", - "<", - "0.9", - ".0" - ] - } - }, - { - "type": "pragma", - "name": ">=0.7.0<0.9.0", - "source_mapping": { - "start": 38, - "length": 31, - "filename_relative": "src/interfaces/IERC20Mintable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/interfaces/IERC20Mintable.sol", - "filename_short": "src/interfaces/IERC20Mintable.sol", - "is_dependency": false, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 32 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.7", - ".0", - "<", - "0.9", - ".0" - ] - } - }, - { - "type": "pragma", - "name": ">=0.7.0<0.9.0", - "source_mapping": { - "start": 38, - "length": 31, - "filename_relative": "src/interfaces/IOracle.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/interfaces/IOracle.sol", - "filename_short": "src/interfaces/IOracle.sol", - "is_dependency": false, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 32 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.7", - ".0", - "<", - "0.9", - ".0" - ] - } - } - ], - "description": "Version constraint >=0.7.0<0.9.0 is too complex.\nIt is used by:\n\t- >=0.7.0<0.9.0 (src/interfaces/IBalancerVault.sol#17)\n\t- >=0.7.0<0.9.0 (src/interfaces/IERC20Mintable.sol#3)\n\t- >=0.7.0<0.9.0 (src/interfaces/IOracle.sol#3)\n", - "markdown": "Version constraint >=0.7.0<0.9.0 is too complex.\nIt is used by:\n\t- [>=0.7.0<0.9.0](src/interfaces/IBalancerVault.sol#L17)\n\t- [>=0.7.0<0.9.0](src/interfaces/IERC20Mintable.sol#L3)\n\t- [>=0.7.0<0.9.0](src/interfaces/IOracle.sol#L3)\n", - "first_markdown_element": "src/interfaces/IBalancerVault.sol#L17", - "id": "76329079d414df38af98aae17d79222e359e9f99d2775292b8f625e9c4ee13d0", - "check": "solc-version", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 118, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 108, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 104, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlEnumerableUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlEnumerableUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlEnumerableUpgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 94, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 102, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 107, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1967Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1967Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1967Upgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 113, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 93, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 115, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 105, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 106, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 110, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/IERC20MetadataUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/IERC20MetadataUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/IERC20MetadataUpgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 114, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 115, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 86, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 105, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 101, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 99, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 100, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 103, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 205, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol", - "is_dependency": true, - "lines": [ - 5 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 105, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts/contracts/security/Pausable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/security/Pausable.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/security/Pausable.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 106, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 114, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 115, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 86, - "length": 23, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Context.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Context.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Context.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 32, - "length": 23, - "filename_relative": "lib/v3-core/contracts/libraries/FullMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/FullMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/FullMath.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 45, - "length": 23, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 37, - "length": 23, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 169, - "length": 23, - "filename_relative": "lib/vault-v2/src/interfaces/AggregatorV3Interface.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/AggregatorV3Interface.sol", - "filename_short": "lib/vault-v2/src/interfaces/AggregatorV3Interface.sol", - "is_dependency": true, - "lines": [ - 4 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 38, - "length": 23, - "filename_relative": "lib/vault-v2/src/interfaces/IAsset.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IAsset.sol", - "filename_short": "lib/vault-v2/src/interfaces/IAsset.sol", - "is_dependency": true, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 38, - "length": 23, - "filename_relative": "lib/vault-v2/src/interfaces/IAuthorizer.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IAuthorizer.sol", - "filename_short": "lib/vault-v2/src/interfaces/IAuthorizer.sol", - "is_dependency": true, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 38, - "length": 23, - "filename_relative": "lib/vault-v2/src/interfaces/IBasePool.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IBasePool.sol", - "filename_short": "lib/vault-v2/src/interfaces/IBasePool.sol", - "is_dependency": true, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 38, - "length": 23, - "filename_relative": "lib/vault-v2/src/interfaces/IBaseWeightedPool.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IBaseWeightedPool.sol", - "filename_short": "lib/vault-v2/src/interfaces/IBaseWeightedPool.sol", - "is_dependency": true, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 38, - "length": 23, - "filename_relative": "lib/vault-v2/src/interfaces/IBeetVault.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IBeetVault.sol", - "filename_short": "lib/vault-v2/src/interfaces/IBeetVault.sol", - "is_dependency": true, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 38, - "length": 23, - "filename_relative": "lib/vault-v2/src/interfaces/IPoolSwapStructs.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IPoolSwapStructs.sol", - "filename_short": "lib/vault-v2/src/interfaces/IPoolSwapStructs.sol", - "is_dependency": true, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 38, - "length": 23, - "filename_relative": "lib/vault-v2/src/interfaces/ISignaturesValidator.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/ISignaturesValidator.sol", - "filename_short": "lib/vault-v2/src/interfaces/ISignaturesValidator.sol", - "is_dependency": true, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 38, - "length": 23, - "filename_relative": "lib/vault-v2/src/interfaces/ISwapErrors.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/ISwapErrors.sol", - "filename_short": "lib/vault-v2/src/interfaces/ISwapErrors.sol", - "is_dependency": true, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 37, - "length": 23, - "filename_relative": "lib/vault-v2/src/interfaces/ISwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/ISwapper.sol", - "filename_short": "lib/vault-v2/src/interfaces/ISwapper.sol", - "is_dependency": true, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 37, - "length": 23, - "filename_relative": "lib/vault-v2/src/interfaces/ISwapperSwaps.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/ISwapperSwaps.sol", - "filename_short": "lib/vault-v2/src/interfaces/ISwapperSwaps.sol", - "is_dependency": true, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 38, - "length": 23, - "filename_relative": "lib/vault-v2/src/interfaces/ITemporarilyPausable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/ITemporarilyPausable.sol", - "filename_short": "lib/vault-v2/src/interfaces/ITemporarilyPausable.sol", - "is_dependency": true, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 36, - "length": 23, - "filename_relative": "lib/vault-v2/src/interfaces/IUniswapV2Router01.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IUniswapV2Router01.sol", - "filename_short": "lib/vault-v2/src/interfaces/IUniswapV2Router01.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 37, - "length": 23, - "filename_relative": "lib/vault-v2/src/interfaces/IVeloPair.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IVeloPair.sol", - "filename_short": "lib/vault-v2/src/interfaces/IVeloPair.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 37, - "length": 23, - "filename_relative": "lib/vault-v2/src/interfaces/IVeloRouter.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IVeloRouter.sol", - "filename_short": "lib/vault-v2/src/interfaces/IVeloRouter.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 32, - "length": 23, - "filename_relative": "lib/vault-v2/src/interfaces/IVeloV1AndV2Factory.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IVeloV1AndV2Factory.sol", - "filename_short": "lib/vault-v2/src/interfaces/IVeloV1AndV2Factory.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 38, - "length": 23, - "filename_relative": "lib/vault-v2/src/libraries/Babylonian.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/Babylonian.sol", - "filename_short": "lib/vault-v2/src/libraries/Babylonian.sol", - "is_dependency": true, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 38, - "length": 23, - "filename_relative": "lib/vault-v2/src/libraries/ReaperMathUtils.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/ReaperMathUtils.sol", - "filename_short": "lib/vault-v2/src/libraries/ReaperMathUtils.sol", - "is_dependency": true, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 38, - "length": 23, - "filename_relative": "lib/vault-v2/src/mixins/BalMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/BalMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/BalMixin.sol", - "is_dependency": true, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 82, - "length": 23, - "filename_relative": "lib/vault-v2/src/mixins/ReaperAccessControl.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/ReaperAccessControl.sol", - "filename_short": "lib/vault-v2/src/mixins/ReaperAccessControl.sol", - "is_dependency": true, - "lines": [ - 5 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 38, - "length": 23, - "filename_relative": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV2Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV2Mixin.sol", - "is_dependency": true, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 38, - "length": 23, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 38, - "length": 23, - "filename_relative": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "filename_short": "lib/vault-v2/src/mixins/VeloSolidMixin.sol", - "is_dependency": true, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 38, - "length": 23, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 679, - "length": 23, - "filename_relative": "src/interfaces/IBalancerTwapOracle.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/interfaces/IBalancerTwapOracle.sol", - "filename_short": "src/interfaces/IBalancerTwapOracle.sol", - "is_dependency": false, - "lines": [ - 15 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.0", - "source_mapping": { - "start": 37, - "length": 23, - "filename_relative": "src/interfaces/ISwapperSwaps.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/interfaces/ISwapperSwaps.sol", - "filename_short": "src/interfaces/ISwapperSwaps.sol", - "is_dependency": false, - "lines": [ - 3 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".0" - ] - } - } - ], - "description": "Version constraint ^0.8.0 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)\n\t- FullInlinerNonExpressionSplitArgumentEvaluationOrder\n\t- MissingSideEffectsOnSelectorAccess\n\t- AbiReencodingHeadOverflowWithStaticArrayCleanup\n\t- DirtyBytesArrayToStorage\n\t- DataLocationChangeInInternalOverride\n\t- NestedCalldataArrayAbiReencodingSizeValidation\n\t- SignedImmutables\n\t- ABIDecodeTwoDimensionalArrayMemory\n\t- KeccakCaching.\nIt is used by:\n\t- ^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlEnumerableUpgradeable.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1967Upgradeable.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/IERC20MetadataUpgradeable.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#5)\n\t- ^0.8.0 (lib/openzeppelin-contracts/contracts/security/Pausable.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#4)\n\t- ^0.8.0 (lib/openzeppelin-contracts/contracts/utils/Context.sol#4)\n\t- ^0.8.0 (lib/v3-core/contracts/libraries/FullMath.sol#2)\n\t- ^0.8.0 (lib/v3-core/contracts/libraries/TickMath.sol#2)\n\t- ^0.8.0 (lib/vault-v2/src/ReaperSwapper.sol#3)\n\t- ^0.8.0 (lib/vault-v2/src/interfaces/AggregatorV3Interface.sol#4)\n\t- ^0.8.0 (lib/vault-v2/src/interfaces/IAsset.sol#3)\n\t- ^0.8.0 (lib/vault-v2/src/interfaces/IAuthorizer.sol#3)\n\t- ^0.8.0 (lib/vault-v2/src/interfaces/IBasePool.sol#3)\n\t- ^0.8.0 (lib/vault-v2/src/interfaces/IBaseWeightedPool.sol#3)\n\t- ^0.8.0 (lib/vault-v2/src/interfaces/IBeetVault.sol#3)\n\t- ^0.8.0 (lib/vault-v2/src/interfaces/IPoolSwapStructs.sol#3)\n\t- ^0.8.0 (lib/vault-v2/src/interfaces/ISignaturesValidator.sol#3)\n\t- ^0.8.0 (lib/vault-v2/src/interfaces/ISwapErrors.sol#3)\n\t- ^0.8.0 (lib/vault-v2/src/interfaces/ISwapper.sol#3)\n\t- ^0.8.0 (lib/vault-v2/src/interfaces/ISwapperSwaps.sol#3)\n\t- ^0.8.0 (lib/vault-v2/src/interfaces/ITemporarilyPausable.sol#3)\n\t- ^0.8.0 (lib/vault-v2/src/interfaces/IUniswapV2Router01.sol#2)\n\t- ^0.8.0 (lib/vault-v2/src/interfaces/IVeloPair.sol#2)\n\t- ^0.8.0 (lib/vault-v2/src/interfaces/IVeloRouter.sol#2)\n\t- ^0.8.0 (lib/vault-v2/src/interfaces/IVeloV1AndV2Factory.sol#2)\n\t- ^0.8.0 (lib/vault-v2/src/libraries/Babylonian.sol#3)\n\t- ^0.8.0 (lib/vault-v2/src/libraries/ReaperMathUtils.sol#3)\n\t- ^0.8.0 (lib/vault-v2/src/mixins/BalMixin.sol#3)\n\t- ^0.8.0 (lib/vault-v2/src/mixins/ReaperAccessControl.sol#5)\n\t- ^0.8.0 (lib/vault-v2/src/mixins/UniV2Mixin.sol#3)\n\t- ^0.8.0 (lib/vault-v2/src/mixins/UniV3Mixin.sol#3)\n\t- ^0.8.0 (lib/vault-v2/src/mixins/VeloSolidMixin.sol#3)\n\t- ^0.8.0 (src/helpers/SwapHelper.sol#3)\n\t- ^0.8.0 (src/interfaces/IBalancerTwapOracle.sol#15)\n\t- ^0.8.0 (src/interfaces/ISwapperSwaps.sol#3)\n", - "markdown": "Version constraint ^0.8.0 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)\n\t- FullInlinerNonExpressionSplitArgumentEvaluationOrder\n\t- MissingSideEffectsOnSelectorAccess\n\t- AbiReencodingHeadOverflowWithStaticArrayCleanup\n\t- DirtyBytesArrayToStorage\n\t- DataLocationChangeInInternalOverride\n\t- NestedCalldataArrayAbiReencodingSizeValidation\n\t- SignedImmutables\n\t- ABIDecodeTwoDimensionalArrayMemory\n\t- KeccakCaching.\nIt is used by:\n\t- [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlEnumerableUpgradeable.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1967Upgradeable.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/IERC20MetadataUpgradeable.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#L5)\n\t- [^0.8.0](lib/openzeppelin-contracts/contracts/security/Pausable.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#L4)\n\t- [^0.8.0](lib/openzeppelin-contracts/contracts/utils/Context.sol#L4)\n\t- [^0.8.0](lib/v3-core/contracts/libraries/FullMath.sol#L2)\n\t- [^0.8.0](lib/v3-core/contracts/libraries/TickMath.sol#L2)\n\t- [^0.8.0](lib/vault-v2/src/ReaperSwapper.sol#L3)\n\t- [^0.8.0](lib/vault-v2/src/interfaces/AggregatorV3Interface.sol#L4)\n\t- [^0.8.0](lib/vault-v2/src/interfaces/IAsset.sol#L3)\n\t- [^0.8.0](lib/vault-v2/src/interfaces/IAuthorizer.sol#L3)\n\t- [^0.8.0](lib/vault-v2/src/interfaces/IBasePool.sol#L3)\n\t- [^0.8.0](lib/vault-v2/src/interfaces/IBaseWeightedPool.sol#L3)\n\t- [^0.8.0](lib/vault-v2/src/interfaces/IBeetVault.sol#L3)\n\t- [^0.8.0](lib/vault-v2/src/interfaces/IPoolSwapStructs.sol#L3)\n\t- [^0.8.0](lib/vault-v2/src/interfaces/ISignaturesValidator.sol#L3)\n\t- [^0.8.0](lib/vault-v2/src/interfaces/ISwapErrors.sol#L3)\n\t- [^0.8.0](lib/vault-v2/src/interfaces/ISwapper.sol#L3)\n\t- [^0.8.0](lib/vault-v2/src/interfaces/ISwapperSwaps.sol#L3)\n\t- [^0.8.0](lib/vault-v2/src/interfaces/ITemporarilyPausable.sol#L3)\n\t- [^0.8.0](lib/vault-v2/src/interfaces/IUniswapV2Router01.sol#L2)\n\t- [^0.8.0](lib/vault-v2/src/interfaces/IVeloPair.sol#L2)\n\t- [^0.8.0](lib/vault-v2/src/interfaces/IVeloRouter.sol#L2)\n\t- [^0.8.0](lib/vault-v2/src/interfaces/IVeloV1AndV2Factory.sol#L2)\n\t- [^0.8.0](lib/vault-v2/src/libraries/Babylonian.sol#L3)\n\t- [^0.8.0](lib/vault-v2/src/libraries/ReaperMathUtils.sol#L3)\n\t- [^0.8.0](lib/vault-v2/src/mixins/BalMixin.sol#L3)\n\t- [^0.8.0](lib/vault-v2/src/mixins/ReaperAccessControl.sol#L5)\n\t- [^0.8.0](lib/vault-v2/src/mixins/UniV2Mixin.sol#L3)\n\t- [^0.8.0](lib/vault-v2/src/mixins/UniV3Mixin.sol#L3)\n\t- [^0.8.0](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L3)\n\t- [^0.8.0](src/helpers/SwapHelper.sol#L3)\n\t- [^0.8.0](src/interfaces/IBalancerTwapOracle.sol#L15)\n\t- [^0.8.0](src/interfaces/ISwapperSwaps.sol#L3)\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#L4", - "id": "7bba08adf487efdfae92c045cfb77dbad46ee58270f68522c853dc82c1e990d1", - "check": "solc-version", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "pragma", - "name": ">=0.7.5", - "source_mapping": { - "start": 45, - "length": 24, - "filename_relative": "lib/vault-v2/src/interfaces/ISwapRouter.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/ISwapRouter.sol", - "filename_short": "lib/vault-v2/src/interfaces/ISwapRouter.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.7", - ".5" - ] - } - } - ], - "description": "Version constraint >=0.7.5 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)\n\t- FullInlinerNonExpressionSplitArgumentEvaluationOrder\n\t- MissingSideEffectsOnSelectorAccess\n\t- AbiReencodingHeadOverflowWithStaticArrayCleanup\n\t- DirtyBytesArrayToStorage\n\t- DataLocationChangeInInternalOverride\n\t- NestedCalldataArrayAbiReencodingSizeValidation\n\t- SignedImmutables\n\t- ABIDecodeTwoDimensionalArrayMemory\n\t- KeccakCaching.\nIt is used by:\n\t- >=0.7.5 (lib/vault-v2/src/interfaces/ISwapRouter.sol#2)\n", - "markdown": "Version constraint >=0.7.5 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)\n\t- FullInlinerNonExpressionSplitArgumentEvaluationOrder\n\t- MissingSideEffectsOnSelectorAccess\n\t- AbiReencodingHeadOverflowWithStaticArrayCleanup\n\t- DirtyBytesArrayToStorage\n\t- DataLocationChangeInInternalOverride\n\t- NestedCalldataArrayAbiReencodingSizeValidation\n\t- SignedImmutables\n\t- ABIDecodeTwoDimensionalArrayMemory\n\t- KeccakCaching.\nIt is used by:\n\t- [>=0.7.5](lib/vault-v2/src/interfaces/ISwapRouter.sol#L2)\n", - "first_markdown_element": "lib/vault-v2/src/interfaces/ISwapRouter.sol#L2", - "id": "9c890bf1b0570a6ad5a5771e5200b17d26d14d586d8c631f6f0a188594d81fe9", - "check": "solc-version", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "pragma", - "name": ">=0.6.2", - "source_mapping": { - "start": 36, - "length": 24, - "filename_relative": "lib/vault-v2/src/interfaces/IUniswapV2Router02.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IUniswapV2Router02.sol", - "filename_short": "lib/vault-v2/src/interfaces/IUniswapV2Router02.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.6", - ".2" - ] - } - } - ], - "description": "Version constraint >=0.6.2 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)\n\t- MissingSideEffectsOnSelectorAccess\n\t- AbiReencodingHeadOverflowWithStaticArrayCleanup\n\t- DirtyBytesArrayToStorage\n\t- NestedCalldataArrayAbiReencodingSizeValidation\n\t- ABIDecodeTwoDimensionalArrayMemory\n\t- KeccakCaching\n\t- EmptyByteArrayCopy\n\t- DynamicArrayCleanup\n\t- MissingEscapingInFormatting\n\t- ArraySliceDynamicallyEncodedBaseType\n\t- ImplicitConstructorCallvalueCheck\n\t- TupleAssignmentMultiStackSlotComponents\n\t- MemoryArrayCreationOverflow.\nIt is used by:\n\t- >=0.6.2 (lib/vault-v2/src/interfaces/IUniswapV2Router02.sol#2)\n", - "markdown": "Version constraint >=0.6.2 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)\n\t- MissingSideEffectsOnSelectorAccess\n\t- AbiReencodingHeadOverflowWithStaticArrayCleanup\n\t- DirtyBytesArrayToStorage\n\t- NestedCalldataArrayAbiReencodingSizeValidation\n\t- ABIDecodeTwoDimensionalArrayMemory\n\t- KeccakCaching\n\t- EmptyByteArrayCopy\n\t- DynamicArrayCleanup\n\t- MissingEscapingInFormatting\n\t- ArraySliceDynamicallyEncodedBaseType\n\t- ImplicitConstructorCallvalueCheck\n\t- TupleAssignmentMultiStackSlotComponents\n\t- MemoryArrayCreationOverflow.\nIt is used by:\n\t- [>=0.6.2](lib/vault-v2/src/interfaces/IUniswapV2Router02.sol#L2)\n", - "first_markdown_element": "lib/vault-v2/src/interfaces/IUniswapV2Router02.sol#L2", - "id": "bb0533356ecafe8099cc0d63ad30c4f7a6c44a4cbc4b5ed69e728fc32e446f1f", - "check": "solc-version", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "pragma", - "name": "^0.8.13", - "source_mapping": { - "start": 37, - "length": 24, - "filename_relative": "src/OptionsToken.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", - "filename_short": "src/OptionsToken.sol", - "is_dependency": false, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".13" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.13", - "source_mapping": { - "start": 37, - "length": 24, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".13" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.13", - "source_mapping": { - "start": 37, - "length": 24, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".13" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.13", - "source_mapping": { - "start": 37, - "length": 24, - "filename_relative": "src/interfaces/IBalancer2TokensPool.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/interfaces/IBalancer2TokensPool.sol", - "filename_short": "src/interfaces/IBalancer2TokensPool.sol", - "is_dependency": false, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".13" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.13", - "source_mapping": { - "start": 37, - "length": 24, - "filename_relative": "src/interfaces/IExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/interfaces/IExercise.sol", - "filename_short": "src/interfaces/IExercise.sol", - "is_dependency": false, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".13" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.13", - "source_mapping": { - "start": 37, - "length": 24, - "filename_relative": "src/interfaces/IOptionsToken.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/interfaces/IOptionsToken.sol", - "filename_short": "src/interfaces/IOptionsToken.sol", - "is_dependency": false, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".13" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.13", - "source_mapping": { - "start": 37, - "length": 24, - "filename_relative": "src/oracles/BalancerOracle.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/BalancerOracle.sol", - "filename_short": "src/oracles/BalancerOracle.sol", - "is_dependency": false, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".13" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.13", - "source_mapping": { - "start": 37, - "length": 24, - "filename_relative": "src/oracles/ThenaOracle.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/ThenaOracle.sol", - "filename_short": "src/oracles/ThenaOracle.sol", - "is_dependency": false, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".13" - ] - } - }, - { - "type": "pragma", - "name": "^0.8.13", - "source_mapping": { - "start": 37, - "length": 24, - "filename_relative": "src/oracles/UniswapV3Oracle.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/UniswapV3Oracle.sol", - "filename_short": "src/oracles/UniswapV3Oracle.sol", - "is_dependency": false, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.8", - ".13" - ] - } - } - ], - "description": "Version constraint ^0.8.13 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)\n\t- VerbatimInvalidDeduplication\n\t- FullInlinerNonExpressionSplitArgumentEvaluationOrder\n\t- MissingSideEffectsOnSelectorAccess\n\t- StorageWriteRemovalBeforeConditionalTermination\n\t- AbiReencodingHeadOverflowWithStaticArrayCleanup\n\t- DirtyBytesArrayToStorage\n\t- InlineAssemblyMemorySideEffects\n\t- DataLocationChangeInInternalOverride\n\t- NestedCalldataArrayAbiReencodingSizeValidation.\nIt is used by:\n\t- ^0.8.13 (src/OptionsToken.sol#2)\n\t- ^0.8.13 (src/exercise/BaseExercise.sol#2)\n\t- ^0.8.13 (src/exercise/DiscountExercise.sol#2)\n\t- ^0.8.13 (src/interfaces/IBalancer2TokensPool.sol#2)\n\t- ^0.8.13 (src/interfaces/IExercise.sol#2)\n\t- ^0.8.13 (src/interfaces/IOptionsToken.sol#2)\n\t- ^0.8.13 (src/oracles/BalancerOracle.sol#2)\n\t- ^0.8.13 (src/oracles/ThenaOracle.sol#2)\n\t- ^0.8.13 (src/oracles/UniswapV3Oracle.sol#2)\n", - "markdown": "Version constraint ^0.8.13 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)\n\t- VerbatimInvalidDeduplication\n\t- FullInlinerNonExpressionSplitArgumentEvaluationOrder\n\t- MissingSideEffectsOnSelectorAccess\n\t- StorageWriteRemovalBeforeConditionalTermination\n\t- AbiReencodingHeadOverflowWithStaticArrayCleanup\n\t- DirtyBytesArrayToStorage\n\t- InlineAssemblyMemorySideEffects\n\t- DataLocationChangeInInternalOverride\n\t- NestedCalldataArrayAbiReencodingSizeValidation.\nIt is used by:\n\t- [^0.8.13](src/OptionsToken.sol#L2)\n\t- [^0.8.13](src/exercise/BaseExercise.sol#L2)\n\t- [^0.8.13](src/exercise/DiscountExercise.sol#L2)\n\t- [^0.8.13](src/interfaces/IBalancer2TokensPool.sol#L2)\n\t- [^0.8.13](src/interfaces/IExercise.sol#L2)\n\t- [^0.8.13](src/interfaces/IOptionsToken.sol#L2)\n\t- [^0.8.13](src/oracles/BalancerOracle.sol#L2)\n\t- [^0.8.13](src/oracles/ThenaOracle.sol#L2)\n\t- [^0.8.13](src/oracles/UniswapV3Oracle.sol#L2)\n", - "first_markdown_element": "src/OptionsToken.sol#L2", - "id": "d77d9a4f3322696453d48caf7374c78bcac298207384a6493c0203cab485063e", - "check": "solc-version", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "pragma", - "name": ">=0.5.0", - "source_mapping": { - "start": 45, - "length": 24, - "filename_relative": "lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol", - "filename_short": "lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.5", - ".0" - ] - } - }, - { - "type": "pragma", - "name": ">=0.5.0", - "source_mapping": { - "start": 45, - "length": 24, - "filename_relative": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol", - "filename_short": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.5", - ".0" - ] - } - }, - { - "type": "pragma", - "name": ">=0.5.0", - "source_mapping": { - "start": 45, - "length": 24, - "filename_relative": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol", - "filename_short": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.5", - ".0" - ] - } - }, - { - "type": "pragma", - "name": ">=0.5.0", - "source_mapping": { - "start": 45, - "length": 24, - "filename_relative": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol", - "filename_short": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.5", - ".0" - ] - } - }, - { - "type": "pragma", - "name": ">=0.5.0", - "source_mapping": { - "start": 45, - "length": 24, - "filename_relative": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol", - "filename_short": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.5", - ".0" - ] - } - }, - { - "type": "pragma", - "name": ">=0.5.0", - "source_mapping": { - "start": 45, - "length": 24, - "filename_relative": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol", - "filename_short": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.5", - ".0" - ] - } - }, - { - "type": "pragma", - "name": ">=0.5.0", - "source_mapping": { - "start": 45, - "length": 24, - "filename_relative": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol", - "filename_short": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.5", - ".0" - ] - } - }, - { - "type": "pragma", - "name": ">=0.5.0", - "source_mapping": { - "start": 45, - "length": 24, - "filename_relative": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", - "filename_short": "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.5", - ".0" - ] - } - }, - { - "type": "pragma", - "name": ">=0.5.0", - "source_mapping": { - "start": 45, - "length": 24, - "filename_relative": "lib/vault-v2/src/interfaces/IPeripheryImmutableState.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IPeripheryImmutableState.sol", - "filename_short": "lib/vault-v2/src/interfaces/IPeripheryImmutableState.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.5", - ".0" - ] - } - }, - { - "type": "pragma", - "name": ">=0.5.0", - "source_mapping": { - "start": 45, - "length": 24, - "filename_relative": "lib/vault-v2/src/interfaces/IUniswapV3Factory.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IUniswapV3Factory.sol", - "filename_short": "lib/vault-v2/src/interfaces/IUniswapV3Factory.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.5", - ".0" - ] - } - }, - { - "type": "pragma", - "name": ">=0.5.0", - "source_mapping": { - "start": 45, - "length": 24, - "filename_relative": "lib/vault-v2/src/interfaces/IUniswapV3SwapCallback.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IUniswapV3SwapCallback.sol", - "filename_short": "lib/vault-v2/src/interfaces/IUniswapV3SwapCallback.sol", - "is_dependency": true, - "lines": [ - 2 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.5", - ".0" - ] - } - } - ], - "description": "Version constraint >=0.5.0 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)\n\t- DirtyBytesArrayToStorage\n\t- ABIDecodeTwoDimensionalArrayMemory\n\t- KeccakCaching\n\t- EmptyByteArrayCopy\n\t- DynamicArrayCleanup\n\t- ImplicitConstructorCallvalueCheck\n\t- TupleAssignmentMultiStackSlotComponents\n\t- MemoryArrayCreationOverflow\n\t- privateCanBeOverridden\n\t- SignedArrayStorageCopy\n\t- ABIEncoderV2StorageArrayWithMultiSlotElement\n\t- DynamicConstructorArgumentsClippedABIV2\n\t- UninitializedFunctionPointerInConstructor\n\t- IncorrectEventSignatureInLibraries\n\t- ABIEncoderV2PackedStorage.\nIt is used by:\n\t- >=0.5.0 (lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol#2)\n\t- >=0.5.0 (lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol#2)\n\t- >=0.5.0 (lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol#2)\n\t- >=0.5.0 (lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol#2)\n\t- >=0.5.0 (lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol#2)\n\t- >=0.5.0 (lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol#2)\n\t- >=0.5.0 (lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol#2)\n\t- >=0.5.0 (lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol#2)\n\t- >=0.5.0 (lib/vault-v2/src/interfaces/IPeripheryImmutableState.sol#2)\n\t- >=0.5.0 (lib/vault-v2/src/interfaces/IUniswapV3Factory.sol#2)\n\t- >=0.5.0 (lib/vault-v2/src/interfaces/IUniswapV3SwapCallback.sol#2)\n", - "markdown": "Version constraint >=0.5.0 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)\n\t- DirtyBytesArrayToStorage\n\t- ABIDecodeTwoDimensionalArrayMemory\n\t- KeccakCaching\n\t- EmptyByteArrayCopy\n\t- DynamicArrayCleanup\n\t- ImplicitConstructorCallvalueCheck\n\t- TupleAssignmentMultiStackSlotComponents\n\t- MemoryArrayCreationOverflow\n\t- privateCanBeOverridden\n\t- SignedArrayStorageCopy\n\t- ABIEncoderV2StorageArrayWithMultiSlotElement\n\t- DynamicConstructorArgumentsClippedABIV2\n\t- UninitializedFunctionPointerInConstructor\n\t- IncorrectEventSignatureInLibraries\n\t- ABIEncoderV2PackedStorage.\nIt is used by:\n\t- [>=0.5.0](lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol#L2)\n\t- [>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol#L2)\n\t- [>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol#L2)\n\t- [>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol#L2)\n\t- [>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol#L2)\n\t- [>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol#L2)\n\t- [>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol#L2)\n\t- [>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol#L2)\n\t- [>=0.5.0](lib/vault-v2/src/interfaces/IPeripheryImmutableState.sol#L2)\n\t- [>=0.5.0](lib/vault-v2/src/interfaces/IUniswapV3Factory.sol#L2)\n\t- [>=0.5.0](lib/vault-v2/src/interfaces/IUniswapV3SwapCallback.sol#L2)\n", - "first_markdown_element": "lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol#L2", - "id": "e84a495d364105fdd86e3c7f8f77d282f0048ce3bd2dd58f1ffef9abeb868a29", - "check": "solc-version", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "functionCallWithValue", - "source_mapping": { - "start": 4960, - "length": 446, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Address", - "source_mapping": { - "start": 194, - "length": 8964, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "functionCallWithValue(address,bytes,uint256,string)" - } - }, - { - "type": "node", - "name": "(success,returndata) = target.call{value: value}(data)", - "source_mapping": { - "start": 5240, - "length": 73, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 135 - ], - "starting_column": 9, - "ending_column": 82 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "functionCallWithValue", - "source_mapping": { - "start": 4960, - "length": 446, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Address", - "source_mapping": { - "start": 194, - "length": 8964, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "functionCallWithValue(address,bytes,uint256,string)" - } - } - } - } - ], - "description": "Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (lib/openzeppelin-contracts/contracts/utils/Address.sol#128-137):\n\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts/contracts/utils/Address.sol#135)\n", - "markdown": "Low level call in [Address.functionCallWithValue(address,bytes,uint256,string)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L128-L137):\n\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135)\n", - "first_markdown_element": "lib/openzeppelin-contracts/contracts/utils/Address.sol#L128-L137", - "id": "117f0e40fe1352d1526a3c30c36971a0228cffa749da9528fa1d65423334e755", - "check": "low-level-calls", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "safeTransfer", - "source_mapping": { - "start": 1152, - "length": 279, - "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", - "is_dependency": true, - "lines": [ - 24, - 25, - 26, - 27 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TransferHelper", - "source_mapping": { - "start": 108, - "length": 2309, - "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", - "is_dependency": true, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "safeTransfer(address,address,uint256)" - } - }, - { - "type": "node", - "name": "(success,data) = token.call(abi.encodeWithSelector(IERC20.transfer.selector,to,value))", - "source_mapping": { - "start": 1235, - "length": 107, - "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", - "is_dependency": true, - "lines": [ - 25 - ], - "starting_column": 9, - "ending_column": 116 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "safeTransfer", - "source_mapping": { - "start": 1152, - "length": 279, - "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", - "is_dependency": true, - "lines": [ - 24, - 25, - 26, - 27 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TransferHelper", - "source_mapping": { - "start": 108, - "length": 2309, - "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", - "is_dependency": true, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "safeTransfer(address,address,uint256)" - } - } - } - } - ], - "description": "Low level call in TransferHelper.safeTransfer(address,address,uint256) (lib/vault-v2/src/libraries/TransferHelper.sol#24-27):\n\t- (success,data) = token.call(abi.encodeWithSelector(IERC20.transfer.selector,to,value)) (lib/vault-v2/src/libraries/TransferHelper.sol#25)\n", - "markdown": "Low level call in [TransferHelper.safeTransfer(address,address,uint256)](lib/vault-v2/src/libraries/TransferHelper.sol#L24-L27):\n\t- [(success,data) = token.call(abi.encodeWithSelector(IERC20.transfer.selector,to,value))](lib/vault-v2/src/libraries/TransferHelper.sol#L25)\n", - "first_markdown_element": "lib/vault-v2/src/libraries/TransferHelper.sol#L24-L27", - "id": "25ed2c6c6c60a5ffbabebdd4d6f7bfd18fd58359a16acbf51f11d083bbc5b7a6", - "check": "low-level-calls", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "safeTransferFrom", - "source_mapping": { - "start": 540, - "length": 320, - "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", - "is_dependency": true, - "lines": [ - 13, - 14, - 15, - 16, - 17 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TransferHelper", - "source_mapping": { - "start": 108, - "length": 2309, - "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", - "is_dependency": true, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "safeTransferFrom(address,address,address,uint256)" - } - }, - { - "type": "node", - "name": "(success,data) = token.call(abi.encodeWithSelector(IERC20.transferFrom.selector,from,to,value))", - "source_mapping": { - "start": 641, - "length": 129, - "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", - "is_dependency": true, - "lines": [ - 14, - 15 - ], - "starting_column": 9, - "ending_column": 94 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "safeTransferFrom", - "source_mapping": { - "start": 540, - "length": 320, - "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", - "is_dependency": true, - "lines": [ - 13, - 14, - 15, - 16, - 17 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TransferHelper", - "source_mapping": { - "start": 108, - "length": 2309, - "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", - "is_dependency": true, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "safeTransferFrom(address,address,address,uint256)" - } - } - } - } - ], - "description": "Low level call in TransferHelper.safeTransferFrom(address,address,address,uint256) (lib/vault-v2/src/libraries/TransferHelper.sol#13-17):\n\t- (success,data) = token.call(abi.encodeWithSelector(IERC20.transferFrom.selector,from,to,value)) (lib/vault-v2/src/libraries/TransferHelper.sol#14-15)\n", - "markdown": "Low level call in [TransferHelper.safeTransferFrom(address,address,address,uint256)](lib/vault-v2/src/libraries/TransferHelper.sol#L13-L17):\n\t- [(success,data) = token.call(abi.encodeWithSelector(IERC20.transferFrom.selector,from,to,value))](lib/vault-v2/src/libraries/TransferHelper.sol#L14-L15)\n", - "first_markdown_element": "lib/vault-v2/src/libraries/TransferHelper.sol#L13-L17", - "id": "4106472e91e5e4243fd3d3b66b2a8990e1c95c0a5bf0a286b8e1e6597c12ebb6", - "check": "low-level-calls", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "_functionDelegateCall", - "source_mapping": { - "start": 6780, - "length": 455, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "is_dependency": true, - "lines": [ - 184, - 185, - 186, - 187, - 188, - 189, - 190 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC1967UpgradeUpgradeable", - "source_mapping": { - "start": 661, - "length": 6867, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "is_dependency": true, - "lines": [ - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_functionDelegateCall(address,bytes)" - } - }, - { - "type": "node", - "name": "(success,returndata) = target.delegatecall(data)", - "source_mapping": { - "start": 7045, - "length": 67, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "is_dependency": true, - "lines": [ - 188 - ], - "starting_column": 9, - "ending_column": 76 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_functionDelegateCall", - "source_mapping": { - "start": 6780, - "length": 455, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "is_dependency": true, - "lines": [ - 184, - 185, - 186, - 187, - 188, - 189, - 190 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC1967UpgradeUpgradeable", - "source_mapping": { - "start": 661, - "length": 6867, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "is_dependency": true, - "lines": [ - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_functionDelegateCall(address,bytes)" - } - } - } - } - ], - "description": "Low level call in ERC1967UpgradeUpgradeable._functionDelegateCall(address,bytes) (lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#184-190):\n\t- (success,returndata) = target.delegatecall(data) (lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#188)\n", - "markdown": "Low level call in [ERC1967UpgradeUpgradeable._functionDelegateCall(address,bytes)](lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#L184-L190):\n\t- [(success,returndata) = target.delegatecall(data)](lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#L188)\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#L184-L190", - "id": "68c54f03456c9af14bc78976aaac6bce102000001fe91323e0ffc2d36d3acd64", - "check": "low-level-calls", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "sendValue", - "source_mapping": { - "start": 2412, - "length": 312, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 60, - 61, - 62, - 63, - 64, - 65 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Address", - "source_mapping": { - "start": 194, - "length": 8964, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "sendValue(address,uint256)" - } - }, - { - "type": "node", - "name": "(success,None) = recipient.call{value: amount}()", - "source_mapping": { - "start": 2577, - "length": 52, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 63 - ], - "starting_column": 9, - "ending_column": 61 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "sendValue", - "source_mapping": { - "start": 2412, - "length": 312, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 60, - 61, - 62, - 63, - 64, - 65 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Address", - "source_mapping": { - "start": 194, - "length": 8964, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "sendValue(address,uint256)" - } - } - } - } - ], - "description": "Low level call in Address.sendValue(address,uint256) (lib/openzeppelin-contracts/contracts/utils/Address.sol#60-65):\n\t- (success,None) = recipient.call{value: amount}() (lib/openzeppelin-contracts/contracts/utils/Address.sol#63)\n", - "markdown": "Low level call in [Address.sendValue(address,uint256)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L60-L65):\n\t- [(success,None) = recipient.call{value: amount}()](lib/openzeppelin-contracts/contracts/utils/Address.sol#L63)\n", - "first_markdown_element": "lib/openzeppelin-contracts/contracts/utils/Address.sol#L60-L65", - "id": "71a3a6ee368d2284f3a1f62a49cfd8cdecd854d6c9799bb82199830989d7fb6c", - "check": "low-level-calls", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "sendValue", - "source_mapping": { - "start": 2423, - "length": 312, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 60, - 61, - 62, - 63, - 64, - 65 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AddressUpgradeable", - "source_mapping": { - "start": 194, - "length": 8087, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "sendValue(address,uint256)" - } - }, - { - "type": "node", - "name": "(success,None) = recipient.call{value: amount}()", - "source_mapping": { - "start": 2588, - "length": 52, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 63 - ], - "starting_column": 9, - "ending_column": 61 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "sendValue", - "source_mapping": { - "start": 2423, - "length": 312, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 60, - 61, - 62, - 63, - 64, - 65 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AddressUpgradeable", - "source_mapping": { - "start": 194, - "length": 8087, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "sendValue(address,uint256)" - } - } - } - } - ], - "description": "Low level call in AddressUpgradeable.sendValue(address,uint256) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#60-65):\n\t- (success,None) = recipient.call{value: amount}() (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#63)\n", - "markdown": "Low level call in [AddressUpgradeable.sendValue(address,uint256)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L60-L65):\n\t- [(success,None) = recipient.call{value: amount}()](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L63)\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L60-L65", - "id": "89d29e5a468e08c404fcc98bf6872b9e33ca2f30eaea1879f1d6a95c9faca274", - "check": "low-level-calls", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "functionStaticCall", - "source_mapping": { - "start": 5975, - "length": 326, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AddressUpgradeable", - "source_mapping": { - "start": 194, - "length": 8087, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "functionStaticCall(address,bytes,string)" - } - }, - { - "type": "node", - "name": "(success,returndata) = target.staticcall(data)", - "source_mapping": { - "start": 6143, - "length": 65, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 160 - ], - "starting_column": 9, - "ending_column": 74 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "functionStaticCall", - "source_mapping": { - "start": 5975, - "length": 326, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AddressUpgradeable", - "source_mapping": { - "start": 194, - "length": 8087, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "functionStaticCall(address,bytes,string)" - } - } - } - } - ], - "description": "Low level call in AddressUpgradeable.functionStaticCall(address,bytes,string) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#155-162):\n\t- (success,returndata) = target.staticcall(data) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#160)\n", - "markdown": "Low level call in [AddressUpgradeable.functionStaticCall(address,bytes,string)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L155-L162):\n\t- [(success,returndata) = target.staticcall(data)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L160)\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L155-L162", - "id": "930ee0ffde6f0923876c4bc0067edc13707a3214f1d8d8954a2ef16471f1ee87", - "check": "low-level-calls", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "functionStaticCall", - "source_mapping": { - "start": 5964, - "length": 326, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Address", - "source_mapping": { - "start": 194, - "length": 8964, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "functionStaticCall(address,bytes,string)" - } - }, - { - "type": "node", - "name": "(success,returndata) = target.staticcall(data)", - "source_mapping": { - "start": 6132, - "length": 65, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 160 - ], - "starting_column": 9, - "ending_column": 74 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "functionStaticCall", - "source_mapping": { - "start": 5964, - "length": 326, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Address", - "source_mapping": { - "start": 194, - "length": 8964, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "functionStaticCall(address,bytes,string)" - } - } - } - } - ], - "description": "Low level call in Address.functionStaticCall(address,bytes,string) (lib/openzeppelin-contracts/contracts/utils/Address.sol#155-162):\n\t- (success,returndata) = target.staticcall(data) (lib/openzeppelin-contracts/contracts/utils/Address.sol#160)\n", - "markdown": "Low level call in [Address.functionStaticCall(address,bytes,string)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L155-L162):\n\t- [(success,returndata) = target.staticcall(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L160)\n", - "first_markdown_element": "lib/openzeppelin-contracts/contracts/utils/Address.sol#L155-L162", - "id": "93eb0561ad76cb924a6646e71a8388be0f653be8a9cd37bdb60e25805d8be051", - "check": "low-level-calls", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "safeTransferETH", - "source_mapping": { - "start": 2251, - "length": 164, - "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", - "is_dependency": true, - "lines": [ - 43, - 44, - 45, - 46 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TransferHelper", - "source_mapping": { - "start": 108, - "length": 2309, - "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", - "is_dependency": true, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "safeTransferETH(address,uint256)" - } - }, - { - "type": "node", - "name": "(success,None) = to.call{value: value}(new bytes(0))", - "source_mapping": { - "start": 2322, - "length": 53, - "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", - "is_dependency": true, - "lines": [ - 44 - ], - "starting_column": 9, - "ending_column": 62 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "safeTransferETH", - "source_mapping": { - "start": 2251, - "length": 164, - "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", - "is_dependency": true, - "lines": [ - 43, - 44, - 45, - 46 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TransferHelper", - "source_mapping": { - "start": 108, - "length": 2309, - "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", - "is_dependency": true, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "safeTransferETH(address,uint256)" - } - } - } - } - ], - "description": "Low level call in TransferHelper.safeTransferETH(address,uint256) (lib/vault-v2/src/libraries/TransferHelper.sol#43-46):\n\t- (success,None) = to.call{value: value}(new bytes(0)) (lib/vault-v2/src/libraries/TransferHelper.sol#44)\n", - "markdown": "Low level call in [TransferHelper.safeTransferETH(address,uint256)](lib/vault-v2/src/libraries/TransferHelper.sol#L43-L46):\n\t- [(success,None) = to.call{value: value}(new bytes(0))](lib/vault-v2/src/libraries/TransferHelper.sol#L44)\n", - "first_markdown_element": "lib/vault-v2/src/libraries/TransferHelper.sol#L43-L46", - "id": "a7ee1b8ee08e673c81b6be63d50aa8273a86fb1be76e38aa60b066b6cb985739", - "check": "low-level-calls", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "safeApprove", - "source_mapping": { - "start": 1784, - "length": 277, - "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", - "is_dependency": true, - "lines": [ - 34, - 35, - 36, - 37 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TransferHelper", - "source_mapping": { - "start": 108, - "length": 2309, - "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", - "is_dependency": true, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "safeApprove(address,address,uint256)" - } - }, - { - "type": "node", - "name": "(success,data) = token.call(abi.encodeWithSelector(IERC20.approve.selector,to,value))", - "source_mapping": { - "start": 1866, - "length": 106, - "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", - "is_dependency": true, - "lines": [ - 35 - ], - "starting_column": 9, - "ending_column": 115 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "safeApprove", - "source_mapping": { - "start": 1784, - "length": 277, - "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", - "is_dependency": true, - "lines": [ - 34, - 35, - 36, - 37 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TransferHelper", - "source_mapping": { - "start": 108, - "length": 2309, - "filename_relative": "lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/TransferHelper.sol", - "filename_short": "lib/vault-v2/src/libraries/TransferHelper.sol", - "is_dependency": true, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "safeApprove(address,address,uint256)" - } - } - } - } - ], - "description": "Low level call in TransferHelper.safeApprove(address,address,uint256) (lib/vault-v2/src/libraries/TransferHelper.sol#34-37):\n\t- (success,data) = token.call(abi.encodeWithSelector(IERC20.approve.selector,to,value)) (lib/vault-v2/src/libraries/TransferHelper.sol#35)\n", - "markdown": "Low level call in [TransferHelper.safeApprove(address,address,uint256)](lib/vault-v2/src/libraries/TransferHelper.sol#L34-L37):\n\t- [(success,data) = token.call(abi.encodeWithSelector(IERC20.approve.selector,to,value))](lib/vault-v2/src/libraries/TransferHelper.sol#L35)\n", - "first_markdown_element": "lib/vault-v2/src/libraries/TransferHelper.sol#L34-L37", - "id": "c7fac630cfc9b967d8af50ae5e1c350df9a222c8c9e8ef56e33726ed42bf6bfd", - "check": "low-level-calls", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "functionCallWithValue", - "source_mapping": { - "start": 4971, - "length": 446, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AddressUpgradeable", - "source_mapping": { - "start": 194, - "length": 8087, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "functionCallWithValue(address,bytes,uint256,string)" - } - }, - { - "type": "node", - "name": "(success,returndata) = target.call{value: value}(data)", - "source_mapping": { - "start": 5251, - "length": 73, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 135 - ], - "starting_column": 9, - "ending_column": 82 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "functionCallWithValue", - "source_mapping": { - "start": 4971, - "length": 446, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AddressUpgradeable", - "source_mapping": { - "start": 194, - "length": 8087, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "functionCallWithValue(address,bytes,uint256,string)" - } - } - } - } - ], - "description": "Low level call in AddressUpgradeable.functionCallWithValue(address,bytes,uint256,string) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#128-137):\n\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#135)\n", - "markdown": "Low level call in [AddressUpgradeable.functionCallWithValue(address,bytes,uint256,string)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L128-L137):\n\t- [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L135)\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L128-L137", - "id": "c89bbc1f4bb1262a39f9090cc1b9e7447b4593134afdcf6677ccbd6a394243ae", - "check": "low-level-calls", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "functionDelegateCall", - "source_mapping": { - "start": 6853, - "length": 325, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Address", - "source_mapping": { - "start": 194, - "length": 8964, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "functionDelegateCall(address,bytes,string)" - } - }, - { - "type": "node", - "name": "(success,returndata) = target.delegatecall(data)", - "source_mapping": { - "start": 7018, - "length": 67, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 185 - ], - "starting_column": 9, - "ending_column": 76 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "functionDelegateCall", - "source_mapping": { - "start": 6853, - "length": 325, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Address", - "source_mapping": { - "start": 194, - "length": 8964, - "filename_relative": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/utils/Address.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/utils/Address.sol", - "is_dependency": true, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "functionDelegateCall(address,bytes,string)" - } - } - } - } - ], - "description": "Low level call in Address.functionDelegateCall(address,bytes,string) (lib/openzeppelin-contracts/contracts/utils/Address.sol#180-187):\n\t- (success,returndata) = target.delegatecall(data) (lib/openzeppelin-contracts/contracts/utils/Address.sol#185)\n", - "markdown": "Low level call in [Address.functionDelegateCall(address,bytes,string)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L180-L187):\n\t- [(success,returndata) = target.delegatecall(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L185)\n", - "first_markdown_element": "lib/openzeppelin-contracts/contracts/utils/Address.sol#L180-L187", - "id": "d195a90c4848e59b62bdf1e5bf577abf5a3a0d92ac7dad04aef4ca0c978598bb", - "check": "low-level-calls", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_router", - "source_mapping": { - "start": 3672, - "length": 15, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 97 - ], - "starting_column": 71, - "ending_column": 86 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "updateUniV2SwapPath", - "source_mapping": { - "start": 3606, - "length": 253, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 97, - 98, - 99, - 100, - 101, - 102, - 103 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "updateUniV2SwapPath(address,address,address,address[])" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.updateUniV2SwapPath(address,address,address,address[])._router (lib/vault-v2/src/ReaperSwapper.sol#97) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.updateUniV2SwapPath(address,address,address,address[])._router](lib/vault-v2/src/ReaperSwapper.sol#L97) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L97", - "id": "045fb660d1db15a01f9c99a6b5f6fb1408a8fd0d9c8a18d9df6c0ba49a374583", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_minAmountOutData", - "source_mapping": { - "start": 9195, - "length": 41, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 258 - ], - "starting_column": 9, - "ending_column": 50 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV3", - "source_mapping": { - "start": 9098, - "length": 323, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address,uint256)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256)._minAmountOutData (lib/vault-v2/src/ReaperSwapper.sol#258) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256)._minAmountOutData](lib/vault-v2/src/ReaperSwapper.sol#L258) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L258", - "id": "056e10de3ceb71ae24ecfcaa44f6c9ca1e39f54e0a350667ed239b6dc8076db7", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_router", - "source_mapping": { - "start": 5256, - "length": 15, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 144 - ], - "starting_column": 9, - "ending_column": 24 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV2", - "source_mapping": { - "start": 5108, - "length": 515, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)._router (lib/vault-v2/src/ReaperSwapper.sol#144) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)._router](lib/vault-v2/src/ReaperSwapper.sol#L144) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L144", - "id": "0787751791a4c77b7495d89adc97395e4ffcf397cb1818fdb17614015b8de9dc", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_amount", - "source_mapping": { - "start": 8323, - "length": 15, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 234 - ], - "starting_column": 9, - "ending_column": 24 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapVelo", - "source_mapping": { - "start": 8252, - "length": 300, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapVelo(address,address,uint256,MinAmountOutData,address)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address)._amount (lib/vault-v2/src/ReaperSwapper.sol#234) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address)._amount](lib/vault-v2/src/ReaperSwapper.sol#L234) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L234", - "id": "08b84b7756b996f86a47f6056fbae30a072defadc58214f35cfc7d507bbbf801", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_deadline", - "source_mapping": { - "start": 8731, - "length": 17, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 247 - ], - "starting_column": 9, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV3", - "source_mapping": { - "start": 8558, - "length": 534, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)._deadline (lib/vault-v2/src/ReaperSwapper.sol#247) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)._deadline](lib/vault-v2/src/ReaperSwapper.sol#L247) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L247", - "id": "08efa8121ff57e30ff0150c964c8970a993a0edcaca089059974cbfcc6366943", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_tokenIn", - "source_mapping": { - "start": 3635, - "length": 16, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 97 - ], - "starting_column": 34, - "ending_column": 50 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "updateUniV2SwapPath", - "source_mapping": { - "start": 3606, - "length": 253, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 97, - 98, - 99, - 100, - 101, - 102, - 103 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "updateUniV2SwapPath(address,address,address,address[])" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.updateUniV2SwapPath(address,address,address,address[])._tokenIn (lib/vault-v2/src/ReaperSwapper.sol#97) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.updateUniV2SwapPath(address,address,address,address[])._tokenIn](lib/vault-v2/src/ReaperSwapper.sol#L97) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L97", - "id": "0b27fda3861b3fe8e55b99783814bc1cee3e0c23c1f343feb33c325f4501d68c", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_to", - "source_mapping": { - "start": 9149, - "length": 11, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 256 - ], - "starting_column": 9, - "ending_column": 20 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV3", - "source_mapping": { - "start": 9098, - "length": 323, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address,uint256)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256)._to (lib/vault-v2/src/ReaperSwapper.sol#256) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256)._to](lib/vault-v2/src/ReaperSwapper.sol#L256) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L256", - "id": "0b4fd12a14dd7d67ae408415c747efa419594368b633030ff52d6c977203874c", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_deadline", - "source_mapping": { - "start": 8097, - "length": 17, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 226 - ], - "starting_column": 9, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapVelo", - "source_mapping": { - "start": 7925, - "length": 321, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256)._deadline (lib/vault-v2/src/ReaperSwapper.sol#226) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256)._deadline](lib/vault-v2/src/ReaperSwapper.sol#L226) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L226", - "id": "0cdc556021475f0af1abd7fd72e843e33927c369b1e1c0ffaae3798048a0c1ae", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_swapPathAndFees", - "source_mapping": { - "start": 4500, - "length": 37, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 125 - ], - "starting_column": 9, - "ending_column": 46 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "updateUniV3SwapPath", - "source_mapping": { - "start": 4384, - "length": 297, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "updateUniV3SwapPath(address,address,address,UniV3SwapData)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.updateUniV3SwapPath(address,address,address,UniV3SwapData)._swapPathAndFees (lib/vault-v2/src/ReaperSwapper.sol#125) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.updateUniV3SwapPath(address,address,address,UniV3SwapData)._swapPathAndFees](lib/vault-v2/src/ReaperSwapper.sol#L125) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L125", - "id": "0e642fe8b87d792e6c6d36b518053207216f97f0fef498badb6a7874ed3df69a", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_minAmountOutData", - "source_mapping": { - "start": 9524, - "length": 41, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 269 - ], - "starting_column": 9, - "ending_column": 50 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV3", - "source_mapping": { - "start": 9427, - "length": 302, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address)._minAmountOutData (lib/vault-v2/src/ReaperSwapper.sol#269) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address)._minAmountOutData](lib/vault-v2/src/ReaperSwapper.sol#L269) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L269", - "id": "10054eaf2fa911a848a5fad5a0dda5b107dcf5deb8cb4f17cbb21eed25bfe193", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "DOMAIN_SEPARATOR", - "source_mapping": { - "start": 2200, - "length": 60, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "is_dependency": true, - "lines": [ - 59 - ], - "starting_column": 5, - "ending_column": 65 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "IERC20PermitUpgradeable", - "source_mapping": { - "start": 620, - "length": 1642, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "is_dependency": true, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "DOMAIN_SEPARATOR()" - }, - "additional_fields": { - "target": "function", - "convention": "mixedCase" - } - } - ], - "description": "Function IERC20PermitUpgradeable.DOMAIN_SEPARATOR() (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol#59) is not in mixedCase\n", - "markdown": "Function [IERC20PermitUpgradeable.DOMAIN_SEPARATOR()](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol#L59) is not in mixedCase\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol#L59", - "id": "125dfc7c7f2b3906a5391a5c33308280a9b2578cf6bba9c9acfe0f81566a4a45", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_to", - "source_mapping": { - "start": 6009, - "length": 11, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 165 - ], - "starting_column": 9, - "ending_column": 20 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV2", - "source_mapping": { - "start": 5958, - "length": 302, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address)._to (lib/vault-v2/src/ReaperSwapper.sol#165) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address)._to](lib/vault-v2/src/ReaperSwapper.sol#L165) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L165", - "id": "13386020056a24202ba7c82b9d72db8fadd9fc2dd25e8f0619ad4ee353fa6be8", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_tryCatchActive", - "source_mapping": { - "start": 5308, - "length": 20, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 146 - ], - "starting_column": 9, - "ending_column": 29 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV2", - "source_mapping": { - "start": 5108, - "length": 515, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)._tryCatchActive (lib/vault-v2/src/ReaperSwapper.sol#146) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)._tryCatchActive](lib/vault-v2/src/ReaperSwapper.sol#L146) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L146", - "id": "1413c8e43afe2c3bb270b1d87658ac7a5460b58ea2c4207eff0b7f20572e3487", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_from", - "source_mapping": { - "start": 5657, - "length": 13, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 153 - ], - "starting_column": 9, - "ending_column": 22 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV2", - "source_mapping": { - "start": 5629, - "length": 323, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256)._from (lib/vault-v2/src/ReaperSwapper.sol#153) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256)._from](lib/vault-v2/src/ReaperSwapper.sol#L153) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L153", - "id": "167f6e358e928549089ddd67ae14cacf28a7b6b3d2ba49ecde0d95bbdf59a712", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_token", - "source_mapping": { - "start": 4718, - "length": 14, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 131 - ], - "starting_column": 36, - "ending_column": 50 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "updateTokenAggregator", - "source_mapping": { - "start": 4687, - "length": 415, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 131, - 132, - 133, - 134, - 135, - 136, - 137 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "updateTokenAggregator(address,address,uint256)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.updateTokenAggregator(address,address,uint256)._token (lib/vault-v2/src/ReaperSwapper.sol#131) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.updateTokenAggregator(address,address,uint256)._token](lib/vault-v2/src/ReaperSwapper.sol#L131) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L131", - "id": "16896e5595b8f444a953b0b29208119da1d296a34ca6563be4c53b709cc64eec", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_amount", - "source_mapping": { - "start": 5180, - "length": 15, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 142 - ], - "starting_column": 9, - "ending_column": 24 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV2", - "source_mapping": { - "start": 5108, - "length": 515, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)._amount (lib/vault-v2/src/ReaperSwapper.sol#142) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)._amount](lib/vault-v2/src/ReaperSwapper.sol#L142) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L142", - "id": "17950f73fc7894890b97248a7fa127919e88cf0d7f1253e8140b803d31fe376d", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_router", - "source_mapping": { - "start": 7553, - "length": 15, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 212 - ], - "starting_column": 9, - "ending_column": 24 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapVelo", - "source_mapping": { - "start": 7406, - "length": 513, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)._router (lib/vault-v2/src/ReaperSwapper.sol#212) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)._router](lib/vault-v2/src/ReaperSwapper.sol#L212) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L212", - "id": "2071ae182e04da551e03610f93d5f1c8cbd402de79ade41335d807e0c8f9ca2d", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_router", - "source_mapping": { - "start": 9246, - "length": 15, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 259 - ], - "starting_column": 9, - "ending_column": 24 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV3", - "source_mapping": { - "start": 9098, - "length": 323, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address,uint256)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256)._router (lib/vault-v2/src/ReaperSwapper.sol#259) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256)._router](lib/vault-v2/src/ReaperSwapper.sol#L259) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L259", - "id": "21aa1ba8369fb7a559e4c0fc1bf22fe287113c68f962299287db1014485354ae", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "__AccessControl_init_unchained", - "source_mapping": { - "start": 2096, - "length": 75, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", - "is_dependency": true, - "lines": [ - 54, - 55 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AccessControlUpgradeable", - "source_mapping": { - "start": 1893, - "length": 6829, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", - "is_dependency": true, - "lines": [ - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "__AccessControl_init_unchained()" - }, - "additional_fields": { - "target": "function", - "convention": "mixedCase" - } - } - ], - "description": "Function AccessControlUpgradeable.__AccessControl_init_unchained() (lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol#54-55) is not in mixedCase\n", - "markdown": "Function [AccessControlUpgradeable.__AccessControl_init_unchained()](lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol#L54-L55) is not in mixedCase\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol#L54-L55", - "id": "226e7d5af64c132f41abf0df79c0723e2a9ee53e2961f745732ce61ab1360dbe", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_deadline", - "source_mapping": { - "start": 7578, - "length": 17, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 213 - ], - "starting_column": 9, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapVelo", - "source_mapping": { - "start": 7406, - "length": 513, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)._deadline (lib/vault-v2/src/ReaperSwapper.sol#213) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)._deadline](lib/vault-v2/src/ReaperSwapper.sol#L213) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L213", - "id": "240474b72d2cdc4bd8b66ec268a242cf52bd88a0bd41e774e65b9f185e61fbbe", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "__ERC1967Upgrade_init_unchained", - "source_mapping": { - "start": 821, - "length": 76, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "is_dependency": true, - "lines": [ - 25, - 26 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC1967UpgradeUpgradeable", - "source_mapping": { - "start": 661, - "length": 6867, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "is_dependency": true, - "lines": [ - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "__ERC1967Upgrade_init_unchained()" - }, - "additional_fields": { - "target": "function", - "convention": "mixedCase" - } - } - ], - "description": "Function ERC1967UpgradeUpgradeable.__ERC1967Upgrade_init_unchained() (lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#25-26) is not in mixedCase\n", - "markdown": "Function [ERC1967UpgradeUpgradeable.__ERC1967Upgrade_init_unchained()](lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#L25-L26) is not in mixedCase\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#L25-L26", - "id": "29c5a9e0594a34ab55098292b0786be5a1f49f1e651ab7af2a669ca40aceb7cb", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_minAmountOutData", - "source_mapping": { - "start": 7199, - "length": 41, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 201 - ], - "starting_column": 9, - "ending_column": 50 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapBal", - "source_mapping": { - "start": 7104, - "length": 296, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapBal(address,address,uint256,MinAmountOutData,address)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address)._minAmountOutData (lib/vault-v2/src/ReaperSwapper.sol#201) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address)._minAmountOutData](lib/vault-v2/src/ReaperSwapper.sol#L201) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L201", - "id": "2be2dfb84a1a47a1fe2c701f27b43bdd31cbf35e78f89cc8ed3ef46fb5072bca", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_minAmountOutData", - "source_mapping": { - "start": 8655, - "length": 41, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 245 - ], - "starting_column": 9, - "ending_column": 50 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV3", - "source_mapping": { - "start": 8558, - "length": 534, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)._minAmountOutData (lib/vault-v2/src/ReaperSwapper.sol#245) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)._minAmountOutData](lib/vault-v2/src/ReaperSwapper.sol#L245) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L245", - "id": "2c2e8431129b1c52325a318d5db8219a891248cfc55c1a5cf2b2920f2c9fa9f8", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_tokenOut", - "source_mapping": { - "start": 3653, - "length": 17, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 97 - ], - "starting_column": 52, - "ending_column": 69 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "updateUniV2SwapPath", - "source_mapping": { - "start": 3606, - "length": 253, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 97, - 98, - 99, - 100, - 101, - 102, - 103 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "updateUniV2SwapPath(address,address,address,address[])" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.updateUniV2SwapPath(address,address,address,address[])._tokenOut (lib/vault-v2/src/ReaperSwapper.sol#97) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.updateUniV2SwapPath(address,address,address,address[])._tokenOut](lib/vault-v2/src/ReaperSwapper.sol#L97) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L97", - "id": "2c8a8bc61df4a18b388999061d6fa5010feaf9562fd8d62b188e468e456a7153", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "INITIAL_CHAIN_ID", - "source_mapping": { - "start": 1643, - "length": 43, - "filename_relative": "lib/solmate/src/tokens/ERC20.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/tokens/ERC20.sol", - "filename_short": "lib/solmate/src/tokens/ERC20.sol", - "is_dependency": true, - "lines": [ - 41 - ], - "starting_column": 5, - "ending_column": 48 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC20", - "source_mapping": { - "start": 474, - "length": 6337, - "filename_relative": "lib/solmate/src/tokens/ERC20.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/tokens/ERC20.sol", - "filename_short": "lib/solmate/src/tokens/ERC20.sol", - "is_dependency": true, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "variable", - "convention": "mixedCase" - } - } - ], - "description": "Variable ERC20.INITIAL_CHAIN_ID (lib/solmate/src/tokens/ERC20.sol#41) is not in mixedCase\n", - "markdown": "Variable [ERC20.INITIAL_CHAIN_ID](lib/solmate/src/tokens/ERC20.sol#L41) is not in mixedCase\n", - "first_markdown_element": "lib/solmate/src/tokens/ERC20.sol#L41", - "id": "2e819ac97dab8ee9a559c975cd452228b363b633f4622a8c32d0502767b91e40", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_from", - "source_mapping": { - "start": 9455, - "length": 13, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 266 - ], - "starting_column": 9, - "ending_column": 22 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV3", - "source_mapping": { - "start": 9427, - "length": 302, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address)._from (lib/vault-v2/src/ReaperSwapper.sol#266) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address)._from](lib/vault-v2/src/ReaperSwapper.sol#L266) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L266", - "id": "3018788d12fc4b75ffed237e40bf2d933f3f102f422ca4e6f6ec99588852c88a", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_amount", - "source_mapping": { - "start": 6336, - "length": 15, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 176 - ], - "starting_column": 9, - "ending_column": 24 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapBal", - "source_mapping": { - "start": 6266, - "length": 509, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)._amount (lib/vault-v2/src/ReaperSwapper.sol#176) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)._amount](lib/vault-v2/src/ReaperSwapper.sol#L176) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L176", - "id": "30afd9ece480d36302713f1423a92fdac5775d35d8e9084b6744f69d41cb35e5", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_nextImplementation", - "source_mapping": { - "start": 6725, - "length": 27, - "filename_relative": "src/OptionsToken.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", - "filename_short": "src/OptionsToken.sol", - "is_dependency": false, - "lines": [ - 162 - ], - "starting_column": 38, - "ending_column": 65 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "initiateUpgradeCooldown", - "source_mapping": { - "start": 6692, - "length": 185, - "filename_relative": "src/OptionsToken.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", - "filename_short": "src/OptionsToken.sol", - "is_dependency": false, - "lines": [ - 162, - 163, - 164, - 165 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OptionsToken", - "source_mapping": { - "start": 691, - "length": 7138, - "filename_relative": "src/OptionsToken.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", - "filename_short": "src/OptionsToken.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "initiateUpgradeCooldown(address)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter OptionsToken.initiateUpgradeCooldown(address)._nextImplementation (src/OptionsToken.sol#162) is not in mixedCase\n", - "markdown": "Parameter [OptionsToken.initiateUpgradeCooldown(address)._nextImplementation](src/OptionsToken.sol#L162) is not in mixedCase\n", - "first_markdown_element": "src/OptionsToken.sol#L162", - "id": "33e53f10ff3f49b18813d9dac0930ba1348d308496c90d9c1a00c0497f5c3cee", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_path", - "source_mapping": { - "start": 3689, - "length": 22, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 97 - ], - "starting_column": 88, - "ending_column": 110 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "updateUniV2SwapPath", - "source_mapping": { - "start": 3606, - "length": 253, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 97, - 98, - 99, - 100, - 101, - 102, - 103 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "updateUniV2SwapPath(address,address,address,address[])" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.updateUniV2SwapPath(address,address,address,address[])._path (lib/vault-v2/src/ReaperSwapper.sol#97) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.updateUniV2SwapPath(address,address,address,address[])._path](lib/vault-v2/src/ReaperSwapper.sol#L97) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L97", - "id": "3421d80536152c860bba400d09dfde114340f7d38d4da09d6edfbf1adb890352", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_tokenB", - "source_mapping": { - "start": 746, - "length": 15, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 20 - ], - "starting_column": 46, - "ending_column": 61 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "uniV3SwapPaths", - "source_mapping": { - "start": 705, - "length": 214, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "UniV3Mixin", - "source_mapping": { - "start": 269, - "length": 4771, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "uniV3SwapPaths(address,address,address)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter UniV3Mixin.uniV3SwapPaths(address,address,address)._tokenB (lib/vault-v2/src/mixins/UniV3Mixin.sol#20) is not in mixedCase\n", - "markdown": "Parameter [UniV3Mixin.uniV3SwapPaths(address,address,address)._tokenB](lib/vault-v2/src/mixins/UniV3Mixin.sol#L20) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/mixins/UniV3Mixin.sol#L20", - "id": "348fbebd40a224260ed0a3f0410ab794e4cdc194d7609d7c57ecede5098d527e", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_tryCatchActive", - "source_mapping": { - "start": 8758, - "length": 20, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 248 - ], - "starting_column": 9, - "ending_column": 29 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV3", - "source_mapping": { - "start": 8558, - "length": 534, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)._tryCatchActive (lib/vault-v2/src/ReaperSwapper.sol#248) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)._tryCatchActive](lib/vault-v2/src/ReaperSwapper.sol#L248) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L248", - "id": "34c29ba73612384447f21b695bb026ad188d469ca5f98fa472e6aa3a356a605c", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_to", - "source_mapping": { - "start": 5159, - "length": 11, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 141 - ], - "starting_column": 9, - "ending_column": 20 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV2", - "source_mapping": { - "start": 5108, - "length": 515, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)._to (lib/vault-v2/src/ReaperSwapper.sol#141) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)._to](lib/vault-v2/src/ReaperSwapper.sol#L141) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L141", - "id": "3527544cbdfbf1bebedc91e97603769f33a1dc4a2222084fe3f4bd86a36f9ae4", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_to", - "source_mapping": { - "start": 9478, - "length": 11, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 267 - ], - "starting_column": 9, - "ending_column": 20 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV3", - "source_mapping": { - "start": 9427, - "length": 302, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address)._to (lib/vault-v2/src/ReaperSwapper.sol#267) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address)._to](lib/vault-v2/src/ReaperSwapper.sol#L267) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L267", - "id": "35548d0c4635a0baa765bad2062c1031d24a1447c98997ef625d4024d4d39032", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "__gap", - "source_mapping": { - "start": 1316, - "length": 25, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", - "is_dependency": true, - "lines": [ - 36 - ], - "starting_column": 5, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ContextUpgradeable", - "source_mapping": { - "start": 651, - "length": 693, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", - "is_dependency": true, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "variable", - "convention": "mixedCase" - } - } - ], - "description": "Variable ContextUpgradeable.__gap (lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol#36) is not in mixedCase\n", - "markdown": "Variable [ContextUpgradeable.__gap](lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol#L36) is not in mixedCase\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol#L36", - "id": "36b0d7790b5ec0201a99f98a2f3b1afbd4248739c34889d0a9d08876f3462218", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_minAmountOutData", - "source_mapping": { - "start": 8021, - "length": 41, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 224 - ], - "starting_column": 9, - "ending_column": 50 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapVelo", - "source_mapping": { - "start": 7925, - "length": 321, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256)._minAmountOutData (lib/vault-v2/src/ReaperSwapper.sol#224) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256)._minAmountOutData](lib/vault-v2/src/ReaperSwapper.sol#L224) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L224", - "id": "3ec1f062d6f5a182e9f67dda7fd25e897ffe978e3fdbc7561351fbe383d21c95", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "__gap", - "source_mapping": { - "start": 8694, - "length": 25, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", - "is_dependency": true, - "lines": [ - 259 - ], - "starting_column": 5, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AccessControlUpgradeable", - "source_mapping": { - "start": 1893, - "length": 6829, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", - "is_dependency": true, - "lines": [ - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "variable", - "convention": "mixedCase" - } - } - ], - "description": "Variable AccessControlUpgradeable.__gap (lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol#259) is not in mixedCase\n", - "markdown": "Variable [AccessControlUpgradeable.__gap](lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol#L259) is not in mixedCase\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol#L259", - "id": "408a5a92ce9ee8bac5e964324c5e93c944b47606ce29c3515b4b54a7b28f372d", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_from", - "source_mapping": { - "start": 8279, - "length": 13, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 232 - ], - "starting_column": 9, - "ending_column": 22 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapVelo", - "source_mapping": { - "start": 8252, - "length": 300, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapVelo(address,address,uint256,MinAmountOutData,address)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address)._from (lib/vault-v2/src/ReaperSwapper.sol#232) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address)._from](lib/vault-v2/src/ReaperSwapper.sol#L232) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L232", - "id": "418fec69fa0a926c5aa4783ab996662cd9d15da3993b0c11ddc008e3789bc3f4", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_path", - "source_mapping": { - "start": 4199, - "length": 32, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 113 - ], - "starting_column": 87, - "ending_column": 119 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "updateVeloSwapPath", - "source_mapping": { - "start": 4117, - "length": 261, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 113, - 114, - 115, - 116, - 117, - 118, - 119 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "updateVeloSwapPath(address,address,address,IVeloRouter.Route[])" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.updateVeloSwapPath(address,address,address,IVeloRouter.Route[])._path (lib/vault-v2/src/ReaperSwapper.sol#113) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.updateVeloSwapPath(address,address,address,IVeloRouter.Route[])._path](lib/vault-v2/src/ReaperSwapper.sol#L113) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L113", - "id": "42609e99303070d0b460b62a3ec86983b6fd5109aaf634a9026fba1cb7e77c33", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_deadline", - "source_mapping": { - "start": 9271, - "length": 17, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 260 - ], - "starting_column": 9, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV3", - "source_mapping": { - "start": 9098, - "length": 323, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address,uint256)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256)._deadline (lib/vault-v2/src/ReaperSwapper.sol#260) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256)._deadline](lib/vault-v2/src/ReaperSwapper.sol#L260) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L260", - "id": "48154271b8c895c6b802a31b0ae8d16001c8ba95b0c1bef15c0adb32c0f98c5f", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_amount", - "source_mapping": { - "start": 6030, - "length": 15, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 166 - ], - "starting_column": 9, - "ending_column": 24 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV2", - "source_mapping": { - "start": 5958, - "length": 302, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address)._amount (lib/vault-v2/src/ReaperSwapper.sol#166) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address)._amount](lib/vault-v2/src/ReaperSwapper.sol#L166) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L166", - "id": "489c7627531111a361ddb5b0fa876959c0b5c227264305d2efbf558425eaa0c7", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "DOMAIN_SEPARATOR", - "source_mapping": { - "start": 5327, - "length": 177, - "filename_relative": "lib/solmate/src/tokens/ERC20.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/tokens/ERC20.sol", - "filename_short": "lib/solmate/src/tokens/ERC20.sol", - "is_dependency": true, - "lines": [ - 162, - 163, - 164 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC20", - "source_mapping": { - "start": 474, - "length": 6337, - "filename_relative": "lib/solmate/src/tokens/ERC20.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/tokens/ERC20.sol", - "filename_short": "lib/solmate/src/tokens/ERC20.sol", - "is_dependency": true, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "DOMAIN_SEPARATOR()" - }, - "additional_fields": { - "target": "function", - "convention": "mixedCase" - } - } - ], - "description": "Function ERC20.DOMAIN_SEPARATOR() (lib/solmate/src/tokens/ERC20.sol#162-164) is not in mixedCase\n", - "markdown": "Function [ERC20.DOMAIN_SEPARATOR()](lib/solmate/src/tokens/ERC20.sol#L162-L164) is not in mixedCase\n", - "first_markdown_element": "lib/solmate/src/tokens/ERC20.sol#L162-L164", - "id": "49160d2232fd1cf66e40eea2eb550f349c00a0d29cfaf4670e104b4832e0d5b0", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_router", - "source_mapping": { - "start": 8399, - "length": 15, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 236 - ], - "starting_column": 9, - "ending_column": 24 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapVelo", - "source_mapping": { - "start": 8252, - "length": 300, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapVelo(address,address,uint256,MinAmountOutData,address)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address)._router (lib/vault-v2/src/ReaperSwapper.sol#236) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address)._router](lib/vault-v2/src/ReaperSwapper.sol#L236) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L236", - "id": "51317259fb342989bb3002f86d27d0d8d3800e8013b1105278f724a65f97b3b2", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_token", - "source_mapping": { - "start": 12613, - "length": 14, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 333 - ], - "starting_column": 44, - "ending_column": 58 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getChainlinkPriceTargetDigits", - "source_mapping": { - "start": 12574, - "length": 693, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getChainlinkPriceTargetDigits(address)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.getChainlinkPriceTargetDigits(address)._token (lib/vault-v2/src/ReaperSwapper.sol#333) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.getChainlinkPriceTargetDigits(address)._token](lib/vault-v2/src/ReaperSwapper.sol#L333) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L333", - "id": "533159ba7d61d5fe5dfd676710c1ac88cf694c7032cc9afc20ed9b723401ae4e", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_tokenIn", - "source_mapping": { - "start": 4145, - "length": 16, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 113 - ], - "starting_column": 33, - "ending_column": 49 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "updateVeloSwapPath", - "source_mapping": { - "start": 4117, - "length": 261, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 113, - 114, - 115, - 116, - 117, - 118, - 119 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "updateVeloSwapPath(address,address,address,IVeloRouter.Route[])" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.updateVeloSwapPath(address,address,address,IVeloRouter.Route[])._tokenIn (lib/vault-v2/src/ReaperSwapper.sol#113) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.updateVeloSwapPath(address,address,address,IVeloRouter.Route[])._tokenIn](lib/vault-v2/src/ReaperSwapper.sol#L113) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L113", - "id": "53551379c42ab3877e8ee97cac181c5347ef7b0683ebe22b81e5bd192559e10c", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_router", - "source_mapping": { - "start": 5777, - "length": 15, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 157 - ], - "starting_column": 9, - "ending_column": 24 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV2", - "source_mapping": { - "start": 5629, - "length": 323, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256)._router (lib/vault-v2/src/ReaperSwapper.sol#157) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256)._router](lib/vault-v2/src/ReaperSwapper.sol#L157) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L157", - "id": "5480cdf71bb4a1fc4bad960293c816fab6eae1f7b1db72dc13c46eecdff29942", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_from", - "source_mapping": { - "start": 8586, - "length": 13, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 242 - ], - "starting_column": 9, - "ending_column": 22 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV3", - "source_mapping": { - "start": 8558, - "length": 534, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)._from (lib/vault-v2/src/ReaperSwapper.sol#242) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)._from](lib/vault-v2/src/ReaperSwapper.sol#L242) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L242", - "id": "54eee96f636dcc23d413ad789f8cc37b37b3ceffbb301fcc7c20ef44f9fa8dd1", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "__Ownable_init", - "source_mapping": { - "start": 1003, - "length": 95, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", - "is_dependency": true, - "lines": [ - 29, - 30, - 31 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OwnableUpgradeable", - "source_mapping": { - "start": 708, - "length": 2445, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", - "is_dependency": true, - "lines": [ - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "__Ownable_init()" - }, - "additional_fields": { - "target": "function", - "convention": "mixedCase" - } - } - ], - "description": "Function OwnableUpgradeable.__Ownable_init() (lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol#29-31) is not in mixedCase\n", - "markdown": "Function [OwnableUpgradeable.__Ownable_init()](lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol#L29-L31) is not in mixedCase\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol#L29-L31", - "id": "564a84db84ff90549701d9e3401970ecd35bb55e38a0ae2758178a34b03f99e8", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_minAmountToTriggerSwap", - "source_mapping": { - "start": 6542, - "length": 31, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 179 - ], - "starting_column": 40, - "ending_column": 71 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "setMinAmountToTriggerSwap", - "source_mapping": { - "start": 6507, - "length": 152, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 179, - 180, - 181 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "setMinAmountToTriggerSwap(uint256)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter DiscountExercise.setMinAmountToTriggerSwap(uint256)._minAmountToTriggerSwap (src/exercise/DiscountExercise.sol#179) is not in mixedCase\n", - "markdown": "Parameter [DiscountExercise.setMinAmountToTriggerSwap(uint256)._minAmountToTriggerSwap](src/exercise/DiscountExercise.sol#L179) is not in mixedCase\n", - "first_markdown_element": "src/exercise/DiscountExercise.sol#L179", - "id": "581d9756e46299b9236b584619603c7950d2a6ae937b632b19d6013c10199f9b", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "console", - "source_mapping": { - "start": 66, - "length": 66622, - "filename_relative": "lib/forge-std/src/console.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/forge-std/src/console.sol", - "filename_short": "lib/forge-std/src/console.sol", - "is_dependency": true, - "lines": [ - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500, - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520, - 521, - 522, - 523, - 524, - 525, - 526, - 527, - 528, - 529, - 530, - 531, - 532, - 533, - 534, - 535, - 536, - 537, - 538, - 539, - 540, - 541, - 542, - 543, - 544, - 545, - 546, - 547, - 548, - 549, - 550, - 551, - 552, - 553, - 554, - 555, - 556, - 557, - 558, - 559, - 560, - 561, - 562, - 563, - 564, - 565, - 566, - 567, - 568, - 569, - 570, - 571, - 572, - 573, - 574, - 575, - 576, - 577, - 578, - 579, - 580, - 581, - 582, - 583, - 584, - 585, - 586, - 587, - 588, - 589, - 590, - 591, - 592, - 593, - 594, - 595, - 596, - 597, - 598, - 599, - 600, - 601, - 602, - 603, - 604, - 605, - 606, - 607, - 608, - 609, - 610, - 611, - 612, - 613, - 614, - 615, - 616, - 617, - 618, - 619, - 620, - 621, - 622, - 623, - 624, - 625, - 626, - 627, - 628, - 629, - 630, - 631, - 632, - 633, - 634, - 635, - 636, - 637, - 638, - 639, - 640, - 641, - 642, - 643, - 644, - 645, - 646, - 647, - 648, - 649, - 650, - 651, - 652, - 653, - 654, - 655, - 656, - 657, - 658, - 659, - 660, - 661, - 662, - 663, - 664, - 665, - 666, - 667, - 668, - 669, - 670, - 671, - 672, - 673, - 674, - 675, - 676, - 677, - 678, - 679, - 680, - 681, - 682, - 683, - 684, - 685, - 686, - 687, - 688, - 689, - 690, - 691, - 692, - 693, - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223, - 1224, - 1225, - 1226, - 1227, - 1228, - 1229, - 1230, - 1231, - 1232, - 1233, - 1234, - 1235, - 1236, - 1237, - 1238, - 1239, - 1240, - 1241, - 1242, - 1243, - 1244, - 1245, - 1246, - 1247, - 1248, - 1249, - 1250, - 1251, - 1252, - 1253, - 1254, - 1255, - 1256, - 1257, - 1258, - 1259, - 1260, - 1261, - 1262, - 1263, - 1264, - 1265, - 1266, - 1267, - 1268, - 1269, - 1270, - 1271, - 1272, - 1273, - 1274, - 1275, - 1276, - 1277, - 1278, - 1279, - 1280, - 1281, - 1282, - 1283, - 1284, - 1285, - 1286, - 1287, - 1288, - 1289, - 1290, - 1291, - 1292, - 1293, - 1294, - 1295, - 1296, - 1297, - 1298, - 1299, - 1300, - 1301, - 1302, - 1303, - 1304, - 1305, - 1306, - 1307, - 1308, - 1309, - 1310, - 1311, - 1312, - 1313, - 1314, - 1315, - 1316, - 1317, - 1318, - 1319, - 1320, - 1321, - 1322, - 1323, - 1324, - 1325, - 1326, - 1327, - 1328, - 1329, - 1330, - 1331, - 1332, - 1333, - 1334, - 1335, - 1336, - 1337, - 1338, - 1339, - 1340, - 1341, - 1342, - 1343, - 1344, - 1345, - 1346, - 1347, - 1348, - 1349, - 1350, - 1351, - 1352, - 1353, - 1354, - 1355, - 1356, - 1357, - 1358, - 1359, - 1360, - 1361, - 1362, - 1363, - 1364, - 1365, - 1366, - 1367, - 1368, - 1369, - 1370, - 1371, - 1372, - 1373, - 1374, - 1375, - 1376, - 1377, - 1378, - 1379, - 1380, - 1381, - 1382, - 1383, - 1384, - 1385, - 1386, - 1387, - 1388, - 1389, - 1390, - 1391, - 1392, - 1393, - 1394, - 1395, - 1396, - 1397, - 1398, - 1399, - 1400, - 1401, - 1402, - 1403, - 1404, - 1405, - 1406, - 1407, - 1408, - 1409, - 1410, - 1411, - 1412, - 1413, - 1414, - 1415, - 1416, - 1417, - 1418, - 1419, - 1420, - 1421, - 1422, - 1423, - 1424, - 1425, - 1426, - 1427, - 1428, - 1429, - 1430, - 1431, - 1432, - 1433, - 1434, - 1435, - 1436, - 1437, - 1438, - 1439, - 1440, - 1441, - 1442, - 1443, - 1444, - 1445, - 1446, - 1447, - 1448, - 1449, - 1450, - 1451, - 1452, - 1453, - 1454, - 1455, - 1456, - 1457, - 1458, - 1459, - 1460, - 1461, - 1462, - 1463, - 1464, - 1465, - 1466, - 1467, - 1468, - 1469, - 1470, - 1471, - 1472, - 1473, - 1474, - 1475, - 1476, - 1477, - 1478, - 1479, - 1480, - 1481, - 1482, - 1483, - 1484, - 1485, - 1486, - 1487, - 1488, - 1489, - 1490, - 1491, - 1492, - 1493, - 1494, - 1495, - 1496, - 1497, - 1498, - 1499, - 1500, - 1501, - 1502, - 1503, - 1504, - 1505, - 1506, - 1507, - 1508, - 1509, - 1510, - 1511, - 1512, - 1513, - 1514, - 1515, - 1516, - 1517, - 1518, - 1519, - 1520, - 1521, - 1522, - 1523, - 1524, - 1525, - 1526, - 1527, - 1528, - 1529, - 1530, - 1531, - 1532, - 1533, - 1534 - ], - "starting_column": 1, - "ending_column": 0 - }, - "additional_fields": { - "target": "contract", - "convention": "CapWords" - } - } - ], - "description": "Contract console (lib/forge-std/src/console.sol#4-1534) is not in CapWords\n", - "markdown": "Contract [console](lib/forge-std/src/console.sol#L4-L1534) is not in CapWords\n", - "first_markdown_element": "lib/forge-std/src/console.sol#L4-L1534", - "id": "58c9dacc35a1219332b8b6ce561daac5384e938b9878894ede5d6cbaa444d455", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_feeRecipients", - "source_mapping": { - "start": 2183, - "length": 31, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 57 - ], - "starting_column": 22, - "ending_column": 53 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "setFees", - "source_mapping": { - "start": 2166, - "length": 145, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 57, - 58, - 59 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseExercise", - "source_mapping": { - "start": 432, - "length": 3936, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "setFees(address[],uint256[])" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter BaseExercise.setFees(address[],uint256[])._feeRecipients (src/exercise/BaseExercise.sol#57) is not in mixedCase\n", - "markdown": "Parameter [BaseExercise.setFees(address[],uint256[])._feeRecipients](src/exercise/BaseExercise.sol#L57) is not in mixedCase\n", - "first_markdown_element": "src/exercise/BaseExercise.sol#L57", - "id": "5944f924de77c988f31b403664373f2876aff03596234cc58b4afadd8a71d5a9", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_deadline", - "source_mapping": { - "start": 5802, - "length": 17, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 158 - ], - "starting_column": 9, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV2", - "source_mapping": { - "start": 5629, - "length": 323, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256)._deadline (lib/vault-v2/src/ReaperSwapper.sol#158) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256)._deadline](lib/vault-v2/src/ReaperSwapper.sol#L158) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L158", - "id": "6071c207bea25fb7f9bb412b5de02629482e66a2117c5fa91626351e29e9b02e", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_from", - "source_mapping": { - "start": 7952, - "length": 13, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 221 - ], - "starting_column": 9, - "ending_column": 22 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapVelo", - "source_mapping": { - "start": 7925, - "length": 321, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256)._from (lib/vault-v2/src/ReaperSwapper.sol#221) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256)._from](lib/vault-v2/src/ReaperSwapper.sol#L221) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L221", - "id": "623f5d19356fa7b9bd0ab5df0402fd1e4d7c09639f95e63a0a4209cc8cc8bdfd", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "__gap", - "source_mapping": { - "start": 3125, - "length": 25, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", - "is_dependency": true, - "lines": [ - 94 - ], - "starting_column": 5, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OwnableUpgradeable", - "source_mapping": { - "start": 708, - "length": 2445, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", - "is_dependency": true, - "lines": [ - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "variable", - "convention": "mixedCase" - } - } - ], - "description": "Variable OwnableUpgradeable.__gap (lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol#94) is not in mixedCase\n", - "markdown": "Variable [OwnableUpgradeable.__gap](lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol#L94) is not in mixedCase\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol#L94", - "id": "64595b3b974ce422ded6f4c3e75f4b8f263d80fe654b483274d85ea78d93515d", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "__gap", - "source_mapping": { - "start": 4729, - "length": 25, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", - "is_dependency": true, - "lines": [ - 107 - ], - "starting_column": 5, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "UUPSUpgradeable", - "source_mapping": { - "start": 928, - "length": 3829, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", - "is_dependency": true, - "lines": [ - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "variable", - "convention": "mixedCase" - } - } - ], - "description": "Variable UUPSUpgradeable.__gap (lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol#107) is not in mixedCase\n", - "markdown": "Variable [UUPSUpgradeable.__gap](lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol#L107) is not in mixedCase\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol#L107", - "id": "66e89635b3f1a39420c14852bce53cece9d715d261ed362fdfe323326d902681", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "struct", - "name": "Params__swapUniV3", - "source_mapping": { - "start": 925, - "length": 207, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "UniV3Mixin", - "source_mapping": { - "start": 269, - "length": 4771, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "structure", - "convention": "CapWords" - } - } - ], - "description": "Struct UniV3Mixin.Params__swapUniV3 (lib/vault-v2/src/mixins/UniV3Mixin.sol#28-36) is not in CapWords\n", - "markdown": "Struct [UniV3Mixin.Params__swapUniV3](lib/vault-v2/src/mixins/UniV3Mixin.sol#L28-L36) is not in CapWords\n", - "first_markdown_element": "lib/vault-v2/src/mixins/UniV3Mixin.sol#L28-L36", - "id": "686ea0a248be2f332d477f476112aafd31063649571e7caedc18a1f64cf140f3", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_router", - "source_mapping": { - "start": 4475, - "length": 15, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 124 - ], - "starting_column": 9, - "ending_column": 24 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "updateUniV3SwapPath", - "source_mapping": { - "start": 4384, - "length": 297, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "updateUniV3SwapPath(address,address,address,UniV3SwapData)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.updateUniV3SwapPath(address,address,address,UniV3SwapData)._router (lib/vault-v2/src/ReaperSwapper.sol#124) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.updateUniV3SwapPath(address,address,address,UniV3SwapData)._router](lib/vault-v2/src/ReaperSwapper.sol#L124) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L124", - "id": "6afae1f9d7e55e6076a51917ac9f65e8dead79697dd34ab763dc91b9bcb86e89", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_tokenIn", - "source_mapping": { - "start": 4422, - "length": 16, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 122 - ], - "starting_column": 9, - "ending_column": 25 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "updateUniV3SwapPath", - "source_mapping": { - "start": 4384, - "length": 297, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "updateUniV3SwapPath(address,address,address,UniV3SwapData)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.updateUniV3SwapPath(address,address,address,UniV3SwapData)._tokenIn (lib/vault-v2/src/ReaperSwapper.sol#122) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.updateUniV3SwapPath(address,address,address,UniV3SwapData)._tokenIn](lib/vault-v2/src/ReaperSwapper.sol#L122) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L122", - "id": "72977cf6ba4408d54c36fec2d76a45624faa51193a45d346cfd1f506c3276687", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "__ERC20_init_unchained", - "source_mapping": { - "start": 2267, - "length": 159, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", - "is_dependency": true, - "lines": [ - 59, - 60, - 61, - 62 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC20Upgradeable", - "source_mapping": { - "start": 1480, - "length": 12159, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", - "is_dependency": true, - "lines": [ - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "__ERC20_init_unchained(string,string)" - }, - "additional_fields": { - "target": "function", - "convention": "mixedCase" - } - } - ], - "description": "Function ERC20Upgradeable.__ERC20_init_unchained(string,string) (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#59-62) is not in mixedCase\n", - "markdown": "Function [ERC20Upgradeable.__ERC20_init_unchained(string,string)](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#L59-L62) is not in mixedCase\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#L59-L62", - "id": "74c629176a16cccc0c00bada69b465bc625751ea0b6a6c34a6948576e5a63d53", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_minAmountOutData", - "source_mapping": { - "start": 6876, - "length": 41, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 190 - ], - "starting_column": 9, - "ending_column": 50 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapBal", - "source_mapping": { - "start": 6781, - "length": 317, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapBal(address,address,uint256,MinAmountOutData,address,uint256)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256)._minAmountOutData (lib/vault-v2/src/ReaperSwapper.sol#190) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256)._minAmountOutData](lib/vault-v2/src/ReaperSwapper.sol#L190) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L190", - "id": "7966fe16a7fae3142addfdb2c5631dc7af108f9a0556e7e6e462bc93b4b0fd6a", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "__gap", - "source_mapping": { - "start": 7500, - "length": 25, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "is_dependency": true, - "lines": [ - 197 - ], - "starting_column": 5, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC1967UpgradeUpgradeable", - "source_mapping": { - "start": 661, - "length": 6867, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "is_dependency": true, - "lines": [ - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "variable", - "convention": "mixedCase" - } - } - ], - "description": "Variable ERC1967UpgradeUpgradeable.__gap (lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#197) is not in mixedCase\n", - "markdown": "Variable [ERC1967UpgradeUpgradeable.__gap](lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#L197) is not in mixedCase\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#L197", - "id": "7a925ee243c35fcbf7d26a13c9439f5f52653d41557544bf25a6dea8e1255a36", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_to", - "source_mapping": { - "start": 5680, - "length": 11, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 154 - ], - "starting_column": 9, - "ending_column": 20 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV2", - "source_mapping": { - "start": 5629, - "length": 323, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256)._to (lib/vault-v2/src/ReaperSwapper.sol#154) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256)._to](lib/vault-v2/src/ReaperSwapper.sol#L154) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L154", - "id": "7dd841bf64cae734263aa2ece5e257856fff5689200d9da336af8f149bc065d5", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_router", - "source_mapping": { - "start": 763, - "length": 15, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 20 - ], - "starting_column": 63, - "ending_column": 78 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "uniV3SwapPaths", - "source_mapping": { - "start": 705, - "length": 214, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "UniV3Mixin", - "source_mapping": { - "start": 269, - "length": 4771, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "uniV3SwapPaths(address,address,address)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter UniV3Mixin.uniV3SwapPaths(address,address,address)._router (lib/vault-v2/src/mixins/UniV3Mixin.sol#20) is not in mixedCase\n", - "markdown": "Parameter [UniV3Mixin.uniV3SwapPaths(address,address,address)._router](lib/vault-v2/src/mixins/UniV3Mixin.sol#L20) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/mixins/UniV3Mixin.sol#L20", - "id": "81b3767aefa146b755f320923f96e311ac717b193aade9ea9209fda84ec19507", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "__ERC20_init", - "source_mapping": { - "start": 2114, - "length": 147, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", - "is_dependency": true, - "lines": [ - 55, - 56, - 57 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC20Upgradeable", - "source_mapping": { - "start": 1480, - "length": 12159, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", - "is_dependency": true, - "lines": [ - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "__ERC20_init(string,string)" - }, - "additional_fields": { - "target": "function", - "convention": "mixedCase" - } - } - ], - "description": "Function ERC20Upgradeable.__ERC20_init(string,string) (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#55-57) is not in mixedCase\n", - "markdown": "Function [ERC20Upgradeable.__ERC20_init(string,string)](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#L55-L57) is not in mixedCase\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#L55-L57", - "id": "8238dcf62f913fda66edd22ee2b08e732cfae65517418f334b31b357d5fb02c5", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_amount", - "source_mapping": { - "start": 7996, - "length": 15, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 223 - ], - "starting_column": 9, - "ending_column": 24 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapVelo", - "source_mapping": { - "start": 7925, - "length": 321, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256)._amount (lib/vault-v2/src/ReaperSwapper.sol#223) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256)._amount](lib/vault-v2/src/ReaperSwapper.sol#L223) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L223", - "id": "831ee570df860b35fb7432639868412b8f3a89a1e163b5e0301268d3d015656e", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_aggregator", - "source_mapping": { - "start": 4734, - "length": 19, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 131 - ], - "starting_column": 52, - "ending_column": 71 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "updateTokenAggregator", - "source_mapping": { - "start": 4687, - "length": 415, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 131, - 132, - 133, - 134, - 135, - 136, - 137 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "updateTokenAggregator(address,address,uint256)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.updateTokenAggregator(address,address,uint256)._aggregator (lib/vault-v2/src/ReaperSwapper.sol#131) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.updateTokenAggregator(address,address,uint256)._aggregator](lib/vault-v2/src/ReaperSwapper.sol#L131) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L131", - "id": "840fd0afa4bae92ba91f2c94e5ff241d7edf4411fba4ca97efa57208909748a1", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "__ERC165_init_unchained", - "source_mapping": { - "start": 926, - "length": 68, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", - "is_dependency": true, - "lines": [ - 27, - 28 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC165Upgradeable", - "source_mapping": { - "start": 783, - "length": 736, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", - "is_dependency": true, - "lines": [ - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "__ERC165_init_unchained()" - }, - "additional_fields": { - "target": "function", - "convention": "mixedCase" - } - } - ], - "description": "Function ERC165Upgradeable.__ERC165_init_unchained() (lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol#27-28) is not in mixedCase\n", - "markdown": "Function [ERC165Upgradeable.__ERC165_init_unchained()](lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol#L27-L28) is not in mixedCase\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol#L27-L28", - "id": "85d4e6d503145e70d4f27b51c03c2aecc7efa120329a4cf27b34d33cd9a2c942", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "__Context_init_unchained", - "source_mapping": { - "start": 776, - "length": 69, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", - "is_dependency": true, - "lines": [ - 21, - 22 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ContextUpgradeable", - "source_mapping": { - "start": 651, - "length": 693, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", - "is_dependency": true, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "__Context_init_unchained()" - }, - "additional_fields": { - "target": "function", - "convention": "mixedCase" - } - } - ], - "description": "Function ContextUpgradeable.__Context_init_unchained() (lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol#21-22) is not in mixedCase\n", - "markdown": "Function [ContextUpgradeable.__Context_init_unchained()](lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol#L21-L22) is not in mixedCase\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol#L21-L22", - "id": "8629c89abc9e568d22212182eb038287fc4f676ff34add41294173d644b25bcb", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_deadline", - "source_mapping": { - "start": 5281, - "length": 17, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 145 - ], - "starting_column": 9, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV2", - "source_mapping": { - "start": 5108, - "length": 515, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)._deadline (lib/vault-v2/src/ReaperSwapper.sol#145) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)._deadline](lib/vault-v2/src/ReaperSwapper.sol#L145) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L145", - "id": "878d7b0eca406e6625010c6a919e75fb6d1f56a2908909128dca18ae1aaecf5c", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_swapProps", - "source_mapping": { - "start": 1131, - "length": 27, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 43 - ], - "starting_column": 30, - "ending_column": 57 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "configSwapProps", - "source_mapping": { - "start": 1106, - "length": 116, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 43, - 44, - 45 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "SwapHelper", - "source_mapping": { - "start": 514, - "length": 3269, - "filename_relative": "src/helpers/SwapHelper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/helpers/SwapHelper.sol", - "filename_short": "src/helpers/SwapHelper.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "configSwapProps(SwapProps)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter SwapHelper.configSwapProps(SwapProps)._swapProps (src/helpers/SwapHelper.sol#43) is not in mixedCase\n", - "markdown": "Parameter [SwapHelper.configSwapProps(SwapProps)._swapProps](src/helpers/SwapHelper.sol#L43) is not in mixedCase\n", - "first_markdown_element": "src/helpers/SwapHelper.sol#L43", - "id": "898750aa30b4631541b715c67809ca54c02372e4e0ccd20753b470f5b41b4782", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_poolID", - "source_mapping": { - "start": 3947, - "length": 15, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 105 - ], - "starting_column": 87, - "ending_column": 102 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "updateBalSwapPoolID", - "source_mapping": { - "start": 3865, - "length": 246, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 105, - 106, - 107, - 108, - 109, - 110, - 111 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "updateBalSwapPoolID(address,address,address,bytes32)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.updateBalSwapPoolID(address,address,address,bytes32)._poolID (lib/vault-v2/src/ReaperSwapper.sol#105) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.updateBalSwapPoolID(address,address,address,bytes32)._poolID](lib/vault-v2/src/ReaperSwapper.sol#L105) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L105", - "id": "89a0bb2c6892a624dc788cb6e8e64769ea25541c09632a7ea8008ed5bdc9a7ae", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_from", - "source_mapping": { - "start": 5136, - "length": 13, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 140 - ], - "starting_column": 9, - "ending_column": 22 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV2", - "source_mapping": { - "start": 5108, - "length": 515, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)._from (lib/vault-v2/src/ReaperSwapper.sol#140) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)._from](lib/vault-v2/src/ReaperSwapper.sol#L140) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L140", - "id": "8b2e8470f4f721b3150a1c59a12f20d495a62229f08f57ad6a1241fb1e3e63bc", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_vault", - "source_mapping": { - "start": 3931, - "length": 14, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 105 - ], - "starting_column": 71, - "ending_column": 85 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "updateBalSwapPoolID", - "source_mapping": { - "start": 3865, - "length": 246, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 105, - 106, - 107, - 108, - 109, - 110, - 111 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "updateBalSwapPoolID(address,address,address,bytes32)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.updateBalSwapPoolID(address,address,address,bytes32)._vault (lib/vault-v2/src/ReaperSwapper.sol#105) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.updateBalSwapPoolID(address,address,address,bytes32)._vault](lib/vault-v2/src/ReaperSwapper.sol#L105) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L105", - "id": "8f302417a05d05dface61ffead3912df0c2e77cae9168156e4852a782f626cc8", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "__UUPSUpgradeable_init_unchained", - "source_mapping": { - "start": 1115, - "length": 77, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", - "is_dependency": true, - "lines": [ - 26, - 27 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "UUPSUpgradeable", - "source_mapping": { - "start": 928, - "length": 3829, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", - "is_dependency": true, - "lines": [ - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "__UUPSUpgradeable_init_unchained()" - }, - "additional_fields": { - "target": "function", - "convention": "mixedCase" - } - } - ], - "description": "Function UUPSUpgradeable.__UUPSUpgradeable_init_unchained() (lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol#26-27) is not in mixedCase\n", - "markdown": "Function [UUPSUpgradeable.__UUPSUpgradeable_init_unchained()](lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol#L26-L27) is not in mixedCase\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol#L26-L27", - "id": "8ff7b5e08e6880768da974c4a296eba4ffa484881ed81786ba37c7da4749321d", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "__gap", - "source_mapping": { - "start": 13611, - "length": 25, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", - "is_dependency": true, - "lines": [ - 400 - ], - "starting_column": 5, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC20Upgradeable", - "source_mapping": { - "start": 1480, - "length": 12159, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol", - "is_dependency": true, - "lines": [ - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "variable", - "convention": "mixedCase" - } - } - ], - "description": "Variable ERC20Upgradeable.__gap (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#400) is not in mixedCase\n", - "markdown": "Variable [ERC20Upgradeable.__gap](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#L400) is not in mixedCase\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#L400", - "id": "95b4f7519d8168eaf429605544f5939d63826ecdfb9fab9329b6802cbd21db77", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_from", - "source_mapping": { - "start": 5986, - "length": 13, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 164 - ], - "starting_column": 9, - "ending_column": 22 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV2", - "source_mapping": { - "start": 5958, - "length": 302, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address)._from (lib/vault-v2/src/ReaperSwapper.sol#164) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address)._from](lib/vault-v2/src/ReaperSwapper.sol#L164) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L164", - "id": "965c50bc3502579539b688717ecbda0b6b92a00dcefa592b05ba22d7d6f5dc7a", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_amount", - "source_mapping": { - "start": 7174, - "length": 15, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 200 - ], - "starting_column": 9, - "ending_column": 24 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapBal", - "source_mapping": { - "start": 7104, - "length": 296, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapBal(address,address,uint256,MinAmountOutData,address)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address)._amount (lib/vault-v2/src/ReaperSwapper.sol#200) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address)._amount](lib/vault-v2/src/ReaperSwapper.sol#L200) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L200", - "id": "96acd18fdb2f87cce682dd1aeb785807b87ade0805721541764b40e73f657d86", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_router", - "source_mapping": { - "start": 9575, - "length": 15, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 270 - ], - "starting_column": 9, - "ending_column": 24 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV3", - "source_mapping": { - "start": 9427, - "length": 302, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address)._router (lib/vault-v2/src/ReaperSwapper.sol#270) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address)._router](lib/vault-v2/src/ReaperSwapper.sol#L270) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L270", - "id": "97ed856a66a6a89065949ce6d4ad5806ed079684926be9350c3dba02a3a1e5ff", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "DOMAIN_SEPARATOR", - "source_mapping": { - "start": 2189, - "length": 60, - "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", - "is_dependency": true, - "lines": [ - 59 - ], - "starting_column": 5, - "ending_column": 65 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "IERC20Permit", - "source_mapping": { - "start": 620, - "length": 1631, - "filename_relative": "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", - "filename_short": "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", - "is_dependency": true, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "DOMAIN_SEPARATOR()" - }, - "additional_fields": { - "target": "function", - "convention": "mixedCase" - } - } - ], - "description": "Function IERC20Permit.DOMAIN_SEPARATOR() (lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol#59) is not in mixedCase\n", - "markdown": "Function [IERC20Permit.DOMAIN_SEPARATOR()](lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol#L59) is not in mixedCase\n", - "first_markdown_element": "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol#L59", - "id": "9a77c79a6cf40e2f151723e49ba63d30100a56d0f72688e58cdf4a550a6ff843", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_guardian", - "source_mapping": { - "start": 3089, - "length": 17, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 82 - ], - "starting_column": 56, - "ending_column": 73 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "initialize", - "source_mapping": { - "start": 3038, - "length": 562, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "initialize(address[],address,address)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.initialize(address[],address,address)._guardian (lib/vault-v2/src/ReaperSwapper.sol#82) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.initialize(address[],address,address)._guardian](lib/vault-v2/src/ReaperSwapper.sol#L82) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L82", - "id": "9efc132e350756a6688fb06dfbdfdae938d3f187fef09bcfb67ada2c12c55401", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_router", - "source_mapping": { - "start": 4182, - "length": 15, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 113 - ], - "starting_column": 70, - "ending_column": 85 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "updateVeloSwapPath", - "source_mapping": { - "start": 4117, - "length": 261, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 113, - 114, - 115, - 116, - 117, - 118, - 119 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "updateVeloSwapPath(address,address,address,IVeloRouter.Route[])" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.updateVeloSwapPath(address,address,address,IVeloRouter.Route[])._router (lib/vault-v2/src/ReaperSwapper.sol#113) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.updateVeloSwapPath(address,address,address,IVeloRouter.Route[])._router](lib/vault-v2/src/ReaperSwapper.sol#L113) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L113", - "id": "a06f43ce8e70ce834616ed15245c980a2b8ec50e858262bb670d47c66306e2ea", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "__AccessControl_init", - "source_mapping": { - "start": 2025, - "length": 65, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", - "is_dependency": true, - "lines": [ - 51, - 52 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AccessControlUpgradeable", - "source_mapping": { - "start": 1893, - "length": 6829, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", - "is_dependency": true, - "lines": [ - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "__AccessControl_init()" - }, - "additional_fields": { - "target": "function", - "convention": "mixedCase" - } - } - ], - "description": "Function AccessControlUpgradeable.__AccessControl_init() (lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol#51-52) is not in mixedCase\n", - "markdown": "Function [AccessControlUpgradeable.__AccessControl_init()](lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol#L51-L52) is not in mixedCase\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol#L51-L52", - "id": "a333fa38b5f96027543bfa2131aac6765059644ab6c7dae2f8d357b5fbaa2f2b", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_from", - "source_mapping": { - "start": 6807, - "length": 13, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 187 - ], - "starting_column": 9, - "ending_column": 22 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapBal", - "source_mapping": { - "start": 6781, - "length": 317, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapBal(address,address,uint256,MinAmountOutData,address,uint256)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256)._from (lib/vault-v2/src/ReaperSwapper.sol#187) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256)._from](lib/vault-v2/src/ReaperSwapper.sol#L187) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L187", - "id": "a7cafc58416d57ab9a4fcb99a3a7f30607a640b40bcf1d16a52915f7849094bc", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_to", - "source_mapping": { - "start": 6315, - "length": 11, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 175 - ], - "starting_column": 9, - "ending_column": 20 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapBal", - "source_mapping": { - "start": 6266, - "length": 509, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)._to (lib/vault-v2/src/ReaperSwapper.sol#175) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)._to](lib/vault-v2/src/ReaperSwapper.sol#L175) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L175", - "id": "ab2600b9834d875833f35b5332d32ef81c0bb2ac24c935e3830ff416c17fb322", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_isExercise", - "source_mapping": { - "start": 5123, - "length": 16, - "filename_relative": "src/OptionsToken.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", - "filename_short": "src/OptionsToken.sol", - "is_dependency": false, - "lines": [ - 119 - ], - "starting_column": 52, - "ending_column": 68 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "setExerciseContract", - "source_mapping": { - "start": 5076, - "length": 200, - "filename_relative": "src/OptionsToken.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", - "filename_short": "src/OptionsToken.sol", - "is_dependency": false, - "lines": [ - 119, - 120, - 121, - 122 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OptionsToken", - "source_mapping": { - "start": 691, - "length": 7138, - "filename_relative": "src/OptionsToken.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", - "filename_short": "src/OptionsToken.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "setExerciseContract(address,bool)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter OptionsToken.setExerciseContract(address,bool)._isExercise (src/OptionsToken.sol#119) is not in mixedCase\n", - "markdown": "Parameter [OptionsToken.setExerciseContract(address,bool)._isExercise](src/OptionsToken.sol#L119) is not in mixedCase\n", - "first_markdown_element": "src/OptionsToken.sol#L119", - "id": "abd2279ff0a0f0ddae64db4fff77259f7bae0530f6d0414a9c41d6ac351ae4c7", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_timeout", - "source_mapping": { - "start": 4755, - "length": 16, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 131 - ], - "starting_column": 73, - "ending_column": 89 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "updateTokenAggregator", - "source_mapping": { - "start": 4687, - "length": 415, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 131, - 132, - 133, - 134, - 135, - 136, - 137 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "updateTokenAggregator(address,address,uint256)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.updateTokenAggregator(address,address,uint256)._timeout (lib/vault-v2/src/ReaperSwapper.sol#131) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.updateTokenAggregator(address,address,uint256)._timeout](lib/vault-v2/src/ReaperSwapper.sol#L131) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L131", - "id": "adab57ba054783590c54847af448ea7811b9803f2da1801c367d97d4deb0bc85", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "INITIAL_DOMAIN_SEPARATOR", - "source_mapping": { - "start": 1693, - "length": 51, - "filename_relative": "lib/solmate/src/tokens/ERC20.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/tokens/ERC20.sol", - "filename_short": "lib/solmate/src/tokens/ERC20.sol", - "is_dependency": true, - "lines": [ - 43 - ], - "starting_column": 5, - "ending_column": 56 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC20", - "source_mapping": { - "start": 474, - "length": 6337, - "filename_relative": "lib/solmate/src/tokens/ERC20.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/tokens/ERC20.sol", - "filename_short": "lib/solmate/src/tokens/ERC20.sol", - "is_dependency": true, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "variable", - "convention": "mixedCase" - } - } - ], - "description": "Variable ERC20.INITIAL_DOMAIN_SEPARATOR (lib/solmate/src/tokens/ERC20.sol#43) is not in mixedCase\n", - "markdown": "Variable [ERC20.INITIAL_DOMAIN_SEPARATOR](lib/solmate/src/tokens/ERC20.sol#L43) is not in mixedCase\n", - "first_markdown_element": "lib/solmate/src/tokens/ERC20.sol#L43", - "id": "ae4180282f395232843a4e6b84163b4ee953cbbcb818ea7075ed05f2dcf646c6", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_amount", - "source_mapping": { - "start": 5701, - "length": 15, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 155 - ], - "starting_column": 9, - "ending_column": 24 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV2", - "source_mapping": { - "start": 5629, - "length": 323, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256)._amount (lib/vault-v2/src/ReaperSwapper.sol#155) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256)._amount](lib/vault-v2/src/ReaperSwapper.sol#L155) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L155", - "id": "af59693c738df45d04682c8e690c3cb70b1f7ae4cd02b04ef88723c8512974ff", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_minAmountOutData", - "source_mapping": { - "start": 7502, - "length": 41, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 211 - ], - "starting_column": 9, - "ending_column": 50 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapVelo", - "source_mapping": { - "start": 7406, - "length": 513, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)._minAmountOutData (lib/vault-v2/src/ReaperSwapper.sol#211) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)._minAmountOutData](lib/vault-v2/src/ReaperSwapper.sol#L211) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L211", - "id": "b0d802f1835a6a50141a3c3cad24ceedce32ed7aafecd16fb3799ad01e781111", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_from", - "source_mapping": { - "start": 9126, - "length": 13, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 255 - ], - "starting_column": 9, - "ending_column": 22 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV3", - "source_mapping": { - "start": 9098, - "length": 323, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address,uint256)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256)._from (lib/vault-v2/src/ReaperSwapper.sol#255) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256)._from](lib/vault-v2/src/ReaperSwapper.sol#L255) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L255", - "id": "b466af7b150b5c595dbea4172eb5b58058eac1319629786026c6c34991a529b8", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_tokenA", - "source_mapping": { - "start": 729, - "length": 15, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 20 - ], - "starting_column": 29, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "uniV3SwapPaths", - "source_mapping": { - "start": 705, - "length": 214, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "UniV3Mixin", - "source_mapping": { - "start": 269, - "length": 4771, - "filename_relative": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/mixins/UniV3Mixin.sol", - "filename_short": "lib/vault-v2/src/mixins/UniV3Mixin.sol", - "is_dependency": true, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "uniV3SwapPaths(address,address,address)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter UniV3Mixin.uniV3SwapPaths(address,address,address)._tokenA (lib/vault-v2/src/mixins/UniV3Mixin.sol#20) is not in mixedCase\n", - "markdown": "Parameter [UniV3Mixin.uniV3SwapPaths(address,address,address)._tokenA](lib/vault-v2/src/mixins/UniV3Mixin.sol#L20) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/mixins/UniV3Mixin.sol#L20", - "id": "b516ba65e9d50df8c481a3d485f057d04276e12596a303c1c3b03bcedea2fa4a", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_to", - "source_mapping": { - "start": 7153, - "length": 11, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 199 - ], - "starting_column": 9, - "ending_column": 20 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapBal", - "source_mapping": { - "start": 7104, - "length": 296, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapBal(address,address,uint256,MinAmountOutData,address)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address)._to (lib/vault-v2/src/ReaperSwapper.sol#199) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address)._to](lib/vault-v2/src/ReaperSwapper.sol#L199) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L199", - "id": "b6c8ae681b26b155c022f33fbf1b061e5f28765aae067bd89844326397fc87a2", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "__gap", - "source_mapping": { - "start": 3008, - "length": 25, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "is_dependency": true, - "lines": [ - 76 - ], - "starting_column": 5, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AccessControlEnumerableUpgradeable", - "source_mapping": { - "start": 431, - "length": 2605, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "is_dependency": true, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "variable", - "convention": "mixedCase" - } - } - ], - "description": "Variable AccessControlEnumerableUpgradeable.__gap (lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#76) is not in mixedCase\n", - "markdown": "Variable [AccessControlEnumerableUpgradeable.__gap](lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#L76) is not in mixedCase\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#L76", - "id": "bbb16c0dd495dfcbe2efc75d79bdea18fad2424d763b5456917a4f9ba68e140c", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "__gap", - "source_mapping": { - "start": 1491, - "length": 25, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", - "is_dependency": true, - "lines": [ - 41 - ], - "starting_column": 5, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC165Upgradeable", - "source_mapping": { - "start": 783, - "length": 736, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", - "is_dependency": true, - "lines": [ - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "variable", - "convention": "mixedCase" - } - } - ], - "description": "Variable ERC165Upgradeable.__gap (lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol#41) is not in mixedCase\n", - "markdown": "Variable [ERC165Upgradeable.__gap](lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol#L41) is not in mixedCase\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol#L41", - "id": "bdc2d8e808ddb749222cd3ed859af1782e2e982c72c8164d541233f50dec05af", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "__Ownable_init_unchained", - "source_mapping": { - "start": 1104, - "length": 111, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", - "is_dependency": true, - "lines": [ - 33, - 34, - 35 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OwnableUpgradeable", - "source_mapping": { - "start": 708, - "length": 2445, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", - "is_dependency": true, - "lines": [ - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "__Ownable_init_unchained()" - }, - "additional_fields": { - "target": "function", - "convention": "mixedCase" - } - } - ], - "description": "Function OwnableUpgradeable.__Ownable_init_unchained() (lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol#33-35) is not in mixedCase\n", - "markdown": "Function [OwnableUpgradeable.__Ownable_init_unchained()](lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol#L33-L35) is not in mixedCase\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol#L33-L35", - "id": "be1436ad6e7661ea17048b9b8432553bbd982a53256f0d44f0dddb582fee6a05", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_deadline", - "source_mapping": { - "start": 6436, - "length": 17, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 179 - ], - "starting_column": 9, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapBal", - "source_mapping": { - "start": 6266, - "length": 509, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)._deadline (lib/vault-v2/src/ReaperSwapper.sol#179) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)._deadline](lib/vault-v2/src/ReaperSwapper.sol#L179) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L179", - "id": "be279e16a979449d615e01c5f1b9240a112c2c4181f5d3ab033a2b58fa8bb14f", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_to", - "source_mapping": { - "start": 7456, - "length": 11, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 209 - ], - "starting_column": 9, - "ending_column": 20 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapVelo", - "source_mapping": { - "start": 7406, - "length": 513, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)._to (lib/vault-v2/src/ReaperSwapper.sol#209) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)._to](lib/vault-v2/src/ReaperSwapper.sol#L209) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L209", - "id": "bfd676c8349dabb5b01a6c154d45b647f52d93cc00f979b6c8878784a7b7eb77", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "__self", - "source_mapping": { - "start": 1289, - "length": 48, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", - "is_dependency": true, - "lines": [ - 29 - ], - "starting_column": 5, - "ending_column": 53 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "UUPSUpgradeable", - "source_mapping": { - "start": 928, - "length": 3829, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", - "is_dependency": true, - "lines": [ - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "variable", - "convention": "mixedCase" - } - } - ], - "description": "Variable UUPSUpgradeable.__self (lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol#29) is not in mixedCase\n", - "markdown": "Variable [UUPSUpgradeable.__self](lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol#L29) is not in mixedCase\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol#L29", - "id": "bfe49cc9b28397f73932ef963ff532a1f0ce51ddd0b26dae025d661602049864", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_amount", - "source_mapping": { - "start": 9499, - "length": 15, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 268 - ], - "starting_column": 9, - "ending_column": 24 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV3", - "source_mapping": { - "start": 9427, - "length": 302, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address)._amount (lib/vault-v2/src/ReaperSwapper.sol#268) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address)._amount](lib/vault-v2/src/ReaperSwapper.sol#L268) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L268", - "id": "c189e395c786c3b0719350511e8880bfffe15db6eea553df77bff74bf366946e", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "__ERC1967Upgrade_init", - "source_mapping": { - "start": 749, - "length": 66, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "is_dependency": true, - "lines": [ - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC1967UpgradeUpgradeable", - "source_mapping": { - "start": 661, - "length": 6867, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "is_dependency": true, - "lines": [ - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "__ERC1967Upgrade_init()" - }, - "additional_fields": { - "target": "function", - "convention": "mixedCase" - } - } - ], - "description": "Function ERC1967UpgradeUpgradeable.__ERC1967Upgrade_init() (lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#22-23) is not in mixedCase\n", - "markdown": "Function [ERC1967UpgradeUpgradeable.__ERC1967Upgrade_init()](lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#L22-L23) is not in mixedCase\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#L22-L23", - "id": "c342a80969d569f908a2cc5e14462dacdf5979e90597c95494a7518ab22ac361", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_amount", - "source_mapping": { - "start": 7477, - "length": 15, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 210 - ], - "starting_column": 9, - "ending_column": 24 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapVelo", - "source_mapping": { - "start": 7406, - "length": 513, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)._amount (lib/vault-v2/src/ReaperSwapper.sol#210) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)._amount](lib/vault-v2/src/ReaperSwapper.sol#L210) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L210", - "id": "c36595904f67f151274482257e034c6d4e99f7a12addf42daff19757016f42ae", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "__AccessControlEnumerable_init_unchained", - "source_mapping": { - "start": 651, - "length": 85, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "is_dependency": true, - "lines": [ - 18, - 19 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AccessControlEnumerableUpgradeable", - "source_mapping": { - "start": 431, - "length": 2605, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "is_dependency": true, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "__AccessControlEnumerable_init_unchained()" - }, - "additional_fields": { - "target": "function", - "convention": "mixedCase" - } - } - ], - "description": "Function AccessControlEnumerableUpgradeable.__AccessControlEnumerable_init_unchained() (lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#18-19) is not in mixedCase\n", - "markdown": "Function [AccessControlEnumerableUpgradeable.__AccessControlEnumerable_init_unchained()](lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#L18-L19) is not in mixedCase\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#L18-L19", - "id": "c5433a1d1949676dc711bcf3160f2439533f345ad44396e69fa216e8565cad1e", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_feeBPS", - "source_mapping": { - "start": 2216, - "length": 24, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 57 - ], - "starting_column": 55, - "ending_column": 79 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "setFees", - "source_mapping": { - "start": 2166, - "length": 145, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 57, - 58, - 59 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseExercise", - "source_mapping": { - "start": 432, - "length": 3936, - "filename_relative": "src/exercise/BaseExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/BaseExercise.sol", - "filename_short": "src/exercise/BaseExercise.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "setFees(address[],uint256[])" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter BaseExercise.setFees(address[],uint256[])._feeBPS (src/exercise/BaseExercise.sol#57) is not in mixedCase\n", - "markdown": "Parameter [BaseExercise.setFees(address[],uint256[])._feeBPS](src/exercise/BaseExercise.sol#L57) is not in mixedCase\n", - "first_markdown_element": "src/exercise/BaseExercise.sol#L57", - "id": "c5acfac490821733b96f3b7cb66bd64210e4d6f82651bab766aab5209e8c5324", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "UNSAFE_swapExactTokensForTokens", - "source_mapping": { - "start": 12674, - "length": 196, - "filename_relative": "lib/vault-v2/src/interfaces/IVeloRouter.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IVeloRouter.sol", - "filename_short": "lib/vault-v2/src/interfaces/IVeloRouter.sol", - "is_dependency": true, - "lines": [ - 294, - 295, - 296, - 297, - 298, - 299 - ], - "starting_column": 5, - "ending_column": 43 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "IVeloRouter", - "source_mapping": { - "start": 227, - "length": 20282, - "filename_relative": "lib/vault-v2/src/interfaces/IVeloRouter.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IVeloRouter.sol", - "filename_short": "lib/vault-v2/src/interfaces/IVeloRouter.sol", - "is_dependency": true, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "UNSAFE_swapExactTokensForTokens(uint256[],IVeloRouter.Route[],address,uint256)" - }, - "additional_fields": { - "target": "function", - "convention": "mixedCase" - } - } - ], - "description": "Function IVeloRouter.UNSAFE_swapExactTokensForTokens(uint256[],IVeloRouter.Route[],address,uint256) (lib/vault-v2/src/interfaces/IVeloRouter.sol#294-299) is not in mixedCase\n", - "markdown": "Function [IVeloRouter.UNSAFE_swapExactTokensForTokens(uint256[],IVeloRouter.Route[],address,uint256)](lib/vault-v2/src/interfaces/IVeloRouter.sol#L294-L299) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/interfaces/IVeloRouter.sol#L294-L299", - "id": "c84ed24d6caec5fb3fc2d28fc3e2c44242050d098a6626fd7b69c847d5d534a6", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_from", - "source_mapping": { - "start": 7433, - "length": 13, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 208 - ], - "starting_column": 9, - "ending_column": 22 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapVelo", - "source_mapping": { - "start": 7406, - "length": 513, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)._from (lib/vault-v2/src/ReaperSwapper.sol#208) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)._from](lib/vault-v2/src/ReaperSwapper.sol#L208) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L208", - "id": "ca06b4f3961de5f5ca9c9c964e4b25c5f6fb7d6cf7cc27fe3001bbb89c74675f", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "__UUPSUpgradeable_init", - "source_mapping": { - "start": 1042, - "length": 67, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", - "is_dependency": true, - "lines": [ - 23, - 24 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "UUPSUpgradeable", - "source_mapping": { - "start": 928, - "length": 3829, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", - "is_dependency": true, - "lines": [ - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "__UUPSUpgradeable_init()" - }, - "additional_fields": { - "target": "function", - "convention": "mixedCase" - } - } - ], - "description": "Function UUPSUpgradeable.__UUPSUpgradeable_init() (lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol#23-24) is not in mixedCase\n", - "markdown": "Function [UUPSUpgradeable.__UUPSUpgradeable_init()](lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol#L23-L24) is not in mixedCase\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol#L23-L24", - "id": "cb76c4a025b81b1d34120a39f72a25e8426de1c2f55fbd29d6a5eb8442335219", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_to", - "source_mapping": { - "start": 8302, - "length": 11, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 233 - ], - "starting_column": 9, - "ending_column": 20 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapVelo", - "source_mapping": { - "start": 8252, - "length": 300, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapVelo(address,address,uint256,MinAmountOutData,address)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address)._to (lib/vault-v2/src/ReaperSwapper.sol#233) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address)._to](lib/vault-v2/src/ReaperSwapper.sol#L233) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L233", - "id": "cc2c2d13c5fc96bbb8c8f183cd598ce40909b38213e3148d1f4410feedcdfbf9", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_i", - "source_mapping": { - "start": 302, - "length": 10, - "filename_relative": "lib/vault-v2/src/libraries/ReaperMathUtils.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/ReaperMathUtils.sol", - "filename_short": "lib/vault-v2/src/libraries/ReaperMathUtils.sol", - "is_dependency": true, - "lines": [ - 11 - ], - "starting_column": 27, - "ending_column": 37 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "uncheckedInc", - "source_mapping": { - "start": 280, - "length": 130, - "filename_relative": "lib/vault-v2/src/libraries/ReaperMathUtils.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/ReaperMathUtils.sol", - "filename_short": "lib/vault-v2/src/libraries/ReaperMathUtils.sol", - "is_dependency": true, - "lines": [ - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperMathUtils", - "source_mapping": { - "start": 63, - "length": 349, - "filename_relative": "lib/vault-v2/src/libraries/ReaperMathUtils.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/ReaperMathUtils.sol", - "filename_short": "lib/vault-v2/src/libraries/ReaperMathUtils.sol", - "is_dependency": true, - "lines": [ - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "uncheckedInc(uint256)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperMathUtils.uncheckedInc(uint256)._i (lib/vault-v2/src/libraries/ReaperMathUtils.sol#11) is not in mixedCase\n", - "markdown": "Parameter [ReaperMathUtils.uncheckedInc(uint256)._i](lib/vault-v2/src/libraries/ReaperMathUtils.sol#L11) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/libraries/ReaperMathUtils.sol#L11", - "id": "cd8dd23a87dae4ac1b0ac22762f0d6ca9a11107161eb11ecc8559a52962999da", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_to", - "source_mapping": { - "start": 6830, - "length": 11, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 188 - ], - "starting_column": 9, - "ending_column": 20 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapBal", - "source_mapping": { - "start": 6781, - "length": 317, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapBal(address,address,uint256,MinAmountOutData,address,uint256)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256)._to (lib/vault-v2/src/ReaperSwapper.sol#188) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256)._to](lib/vault-v2/src/ReaperSwapper.sol#L188) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L188", - "id": "ce9e771782f69e8d3da763e8d0e5d55510b3673e5af35d5030cd3e1f607f698e", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_deadline", - "source_mapping": { - "start": 6951, - "length": 17, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 192 - ], - "starting_column": 9, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapBal", - "source_mapping": { - "start": 6781, - "length": 317, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapBal(address,address,uint256,MinAmountOutData,address,uint256)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256)._deadline (lib/vault-v2/src/ReaperSwapper.sol#192) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256)._deadline](lib/vault-v2/src/ReaperSwapper.sol#L192) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L192", - "id": "d096162e89d285c6f6eacc550d68dd7057cd03ed9fdd2fbee53da1dacff60853", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_minAmountOutData", - "source_mapping": { - "start": 8348, - "length": 41, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 235 - ], - "starting_column": 9, - "ending_column": 50 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapVelo", - "source_mapping": { - "start": 8252, - "length": 300, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapVelo(address,address,uint256,MinAmountOutData,address)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address)._minAmountOutData (lib/vault-v2/src/ReaperSwapper.sol#235) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address)._minAmountOutData](lib/vault-v2/src/ReaperSwapper.sol#L235) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L235", - "id": "d400a010cfc54a36c2bbabf0d7fedd1ab9a7387ba1f4017fe16eac3e6d19092e", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_vault", - "source_mapping": { - "start": 7250, - "length": 14, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 202 - ], - "starting_column": 9, - "ending_column": 23 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapBal", - "source_mapping": { - "start": 7104, - "length": 296, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapBal(address,address,uint256,MinAmountOutData,address)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address)._vault (lib/vault-v2/src/ReaperSwapper.sol#202) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address)._vault](lib/vault-v2/src/ReaperSwapper.sol#L202) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L202", - "id": "d4fceacb95f86ee83b4bf85da0582077c266098f97e1ce7dbaec2b59cdcef204", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "WETH", - "source_mapping": { - "start": 153, - "length": 48, - "filename_relative": "lib/vault-v2/src/interfaces/IUniswapV2Router01.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IUniswapV2Router01.sol", - "filename_short": "lib/vault-v2/src/interfaces/IUniswapV2Router01.sol", - "is_dependency": true, - "lines": [ - 7 - ], - "starting_column": 5, - "ending_column": 53 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "IUniswapV2Router01", - "source_mapping": { - "start": 61, - "length": 3950, - "filename_relative": "lib/vault-v2/src/interfaces/IUniswapV2Router01.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/interfaces/IUniswapV2Router01.sol", - "filename_short": "lib/vault-v2/src/interfaces/IUniswapV2Router01.sol", - "is_dependency": true, - "lines": [ - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "WETH()" - }, - "additional_fields": { - "target": "function", - "convention": "mixedCase" - } - } - ], - "description": "Function IUniswapV2Router01.WETH() (lib/vault-v2/src/interfaces/IUniswapV2Router01.sol#7) is not in mixedCase\n", - "markdown": "Function [IUniswapV2Router01.WETH()](lib/vault-v2/src/interfaces/IUniswapV2Router01.sol#L7) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/interfaces/IUniswapV2Router01.sol#L7", - "id": "d51441d319d7710ff998d12e83899a9d644921d950f639a7b86fcc4ddf61e63a", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_router", - "source_mapping": { - "start": 8706, - "length": 15, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 246 - ], - "starting_column": 9, - "ending_column": 24 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV3", - "source_mapping": { - "start": 8558, - "length": 534, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)._router (lib/vault-v2/src/ReaperSwapper.sol#246) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)._router](lib/vault-v2/src/ReaperSwapper.sol#L246) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L246", - "id": "d6dabfed2329ec05b9b11ef9c0aa939f5f9548e1243ac69e7908749887d95f3b", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_minAmountOutData", - "source_mapping": { - "start": 5726, - "length": 41, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 156 - ], - "starting_column": 9, - "ending_column": 50 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV2", - "source_mapping": { - "start": 5629, - "length": 323, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256)._minAmountOutData (lib/vault-v2/src/ReaperSwapper.sol#156) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256)._minAmountOutData](lib/vault-v2/src/ReaperSwapper.sol#L156) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L156", - "id": "dcc6a654dccf15314a4bd6d18240796b3d5a90ad0965512db30fb29fc2d69f4f", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_minAmountOutData", - "source_mapping": { - "start": 6055, - "length": 41, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 167 - ], - "starting_column": 9, - "ending_column": 50 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV2", - "source_mapping": { - "start": 5958, - "length": 302, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address)._minAmountOutData (lib/vault-v2/src/ReaperSwapper.sol#167) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address)._minAmountOutData](lib/vault-v2/src/ReaperSwapper.sol#L167) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L167", - "id": "deeadcde9d8d2a903c85c3e2c9ba0e8b3609ceddae1916e3766e5c84b22c466a", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_minAmountOutData", - "source_mapping": { - "start": 5205, - "length": 41, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 143 - ], - "starting_column": 9, - "ending_column": 50 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV2", - "source_mapping": { - "start": 5108, - "length": 515, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)._minAmountOutData (lib/vault-v2/src/ReaperSwapper.sol#143) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address,uint256,bool)._minAmountOutData](lib/vault-v2/src/ReaperSwapper.sol#L143) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L143", - "id": "e10ef44a86a407b93bfe33cf20782ef285fd9eb4af3c33bc2e14261b516c0038", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_superAdmin", - "source_mapping": { - "start": 3108, - "length": 19, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 82 - ], - "starting_column": 75, - "ending_column": 94 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "initialize", - "source_mapping": { - "start": 3038, - "length": 562, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "initialize(address[],address,address)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.initialize(address[],address,address)._superAdmin (lib/vault-v2/src/ReaperSwapper.sol#82) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.initialize(address[],address,address)._superAdmin](lib/vault-v2/src/ReaperSwapper.sol#L82) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L82", - "id": "e1f9cb8188c7d2a47d6d3f5f2abd12779ea61cb7f5df57014d8b381dd18519f4", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_amount", - "source_mapping": { - "start": 9170, - "length": 15, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 257 - ], - "starting_column": 9, - "ending_column": 24 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV3", - "source_mapping": { - "start": 9098, - "length": 323, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address,uint256)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256)._amount (lib/vault-v2/src/ReaperSwapper.sol#257) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256)._amount](lib/vault-v2/src/ReaperSwapper.sol#L257) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L257", - "id": "e372392e376217b031464798d9d6768c25b19113dd6cb6674fa902715063982f", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_from", - "source_mapping": { - "start": 6292, - "length": 13, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 174 - ], - "starting_column": 9, - "ending_column": 22 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapBal", - "source_mapping": { - "start": 6266, - "length": 509, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)._from (lib/vault-v2/src/ReaperSwapper.sol#174) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)._from](lib/vault-v2/src/ReaperSwapper.sol#L174) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L174", - "id": "e41b000f65857a61219c2dc0b5d0f4bd15cf77d9dc70e29235aac4739efc28ee", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_address", - "source_mapping": { - "start": 5105, - "length": 16, - "filename_relative": "src/OptionsToken.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", - "filename_short": "src/OptionsToken.sol", - "is_dependency": false, - "lines": [ - 119 - ], - "starting_column": 34, - "ending_column": 50 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "setExerciseContract", - "source_mapping": { - "start": 5076, - "length": 200, - "filename_relative": "src/OptionsToken.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", - "filename_short": "src/OptionsToken.sol", - "is_dependency": false, - "lines": [ - 119, - 120, - 121, - 122 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OptionsToken", - "source_mapping": { - "start": 691, - "length": 7138, - "filename_relative": "src/OptionsToken.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/OptionsToken.sol", - "filename_short": "src/OptionsToken.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "setExerciseContract(address,bool)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter OptionsToken.setExerciseContract(address,bool)._address (src/OptionsToken.sol#119) is not in mixedCase\n", - "markdown": "Parameter [OptionsToken.setExerciseContract(address,bool)._address](src/OptionsToken.sol#L119) is not in mixedCase\n", - "first_markdown_element": "src/OptionsToken.sol#L119", - "id": "e4c0233eb5b643def437c9c1f7c6853aa2f1fea782bfadf846c2fcb8c3819ad4", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_tokenIn", - "source_mapping": { - "start": 3894, - "length": 16, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 105 - ], - "starting_column": 34, - "ending_column": 50 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "updateBalSwapPoolID", - "source_mapping": { - "start": 3865, - "length": 246, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 105, - 106, - 107, - 108, - 109, - 110, - 111 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "updateBalSwapPoolID(address,address,address,bytes32)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.updateBalSwapPoolID(address,address,address,bytes32)._tokenIn (lib/vault-v2/src/ReaperSwapper.sol#105) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.updateBalSwapPoolID(address,address,address,bytes32)._tokenIn](lib/vault-v2/src/ReaperSwapper.sol#L105) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L105", - "id": "e4c97d884fbc8ebc6174dbb08f7148ca0d5d354bbd7673b33287963362a75fac", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_router", - "source_mapping": { - "start": 8072, - "length": 15, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 225 - ], - "starting_column": 9, - "ending_column": 24 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapVelo", - "source_mapping": { - "start": 7925, - "length": 321, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256)._router (lib/vault-v2/src/ReaperSwapper.sol#225) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256)._router](lib/vault-v2/src/ReaperSwapper.sol#L225) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L225", - "id": "e7849af7604ed52e3aba5cc48333f0e4e71b99a0c0eead2614dad5ee6a834648", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_amount", - "source_mapping": { - "start": 6851, - "length": 15, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 189 - ], - "starting_column": 9, - "ending_column": 24 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapBal", - "source_mapping": { - "start": 6781, - "length": 317, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapBal(address,address,uint256,MinAmountOutData,address,uint256)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256)._amount (lib/vault-v2/src/ReaperSwapper.sol#189) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256)._amount](lib/vault-v2/src/ReaperSwapper.sol#L189) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L189", - "id": "ebf15d601b456582fb3fb1f26bfd7094936b95bf6bab66e069b0c047b066a470", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "__Context_init", - "source_mapping": { - "start": 711, - "length": 59, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", - "is_dependency": true, - "lines": [ - 18, - 19 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ContextUpgradeable", - "source_mapping": { - "start": 651, - "length": 693, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", - "is_dependency": true, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "__Context_init()" - }, - "additional_fields": { - "target": "function", - "convention": "mixedCase" - } - } - ], - "description": "Function ContextUpgradeable.__Context_init() (lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol#18-19) is not in mixedCase\n", - "markdown": "Function [ContextUpgradeable.__Context_init()](lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol#L18-L19) is not in mixedCase\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol#L18-L19", - "id": "ec47067e22967ab37ddb79c5eae4c225b0c9f1e4e15f1452db70b0a6f86103e0", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_from", - "source_mapping": { - "start": 7130, - "length": 13, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 198 - ], - "starting_column": 9, - "ending_column": 22 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapBal", - "source_mapping": { - "start": 7104, - "length": 296, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapBal(address,address,uint256,MinAmountOutData,address)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address)._from (lib/vault-v2/src/ReaperSwapper.sol#198) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address)._from](lib/vault-v2/src/ReaperSwapper.sol#L198) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L198", - "id": "ee09748ad580f1e17ba44ec7063a9e46e48e09f119e406c49bc6f27fbc52333c", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "__AccessControlEnumerable_init", - "source_mapping": { - "start": 570, - "length": 75, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "is_dependency": true, - "lines": [ - 15, - 16 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AccessControlEnumerableUpgradeable", - "source_mapping": { - "start": 431, - "length": 2605, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol", - "is_dependency": true, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "__AccessControlEnumerable_init()" - }, - "additional_fields": { - "target": "function", - "convention": "mixedCase" - } - } - ], - "description": "Function AccessControlEnumerableUpgradeable.__AccessControlEnumerable_init() (lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#15-16) is not in mixedCase\n", - "markdown": "Function [AccessControlEnumerableUpgradeable.__AccessControlEnumerable_init()](lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#L15-L16) is not in mixedCase\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#L15-L16", - "id": "ef5d0800c6abeec9cf95ba22a2b5356b466e7266ac453d3ed2d8d6715e2a485d", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_tokenOut", - "source_mapping": { - "start": 4448, - "length": 17, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 123 - ], - "starting_column": 9, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "updateUniV3SwapPath", - "source_mapping": { - "start": 4384, - "length": 297, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "updateUniV3SwapPath(address,address,address,UniV3SwapData)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.updateUniV3SwapPath(address,address,address,UniV3SwapData)._tokenOut (lib/vault-v2/src/ReaperSwapper.sol#123) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.updateUniV3SwapPath(address,address,address,UniV3SwapData)._tokenOut](lib/vault-v2/src/ReaperSwapper.sol#L123) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L123", - "id": "ef7fda16f5ed14577f83309fd8ecabd89b0ebc40bb57a21ff7f6bb30ca604ded", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_to", - "source_mapping": { - "start": 7975, - "length": 11, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 222 - ], - "starting_column": 9, - "ending_column": 20 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapVelo", - "source_mapping": { - "start": 7925, - "length": 321, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256)._to (lib/vault-v2/src/ReaperSwapper.sol#222) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256)._to](lib/vault-v2/src/ReaperSwapper.sol#L222) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L222", - "id": "ef99c641c2dfab7b1d3b3387d2ee29b8c2fe143b6573293aa82a96d9e24c4ed8", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "__ERC165_init", - "source_mapping": { - "start": 862, - "length": 58, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", - "is_dependency": true, - "lines": [ - 24, - 25 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC165Upgradeable", - "source_mapping": { - "start": 783, - "length": 736, - "filename_relative": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", - "filename_short": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", - "is_dependency": true, - "lines": [ - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "__ERC165_init()" - }, - "additional_fields": { - "target": "function", - "convention": "mixedCase" - } - } - ], - "description": "Function ERC165Upgradeable.__ERC165_init() (lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol#24-25) is not in mixedCase\n", - "markdown": "Function [ERC165Upgradeable.__ERC165_init()](lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol#L24-L25) is not in mixedCase\n", - "first_markdown_element": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol#L24-L25", - "id": "f226b70c0c428d938e421293c43b68d973d744168b94b568e0deb7b189c26f50", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_tryCatchActive", - "source_mapping": { - "start": 7605, - "length": 20, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 214 - ], - "starting_column": 9, - "ending_column": 29 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapVelo", - "source_mapping": { - "start": 7406, - "length": 513, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)._tryCatchActive (lib/vault-v2/src/ReaperSwapper.sol#214) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapVelo(address,address,uint256,MinAmountOutData,address,uint256,bool)._tryCatchActive](lib/vault-v2/src/ReaperSwapper.sol#L214) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L214", - "id": "f3b862d7b6a4c0d902c5505fa61fe589c65b1853823797fa41ecacdd2d9ea250", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_to", - "source_mapping": { - "start": 8609, - "length": 11, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 243 - ], - "starting_column": 9, - "ending_column": 20 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV3", - "source_mapping": { - "start": 8558, - "length": 534, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)._to (lib/vault-v2/src/ReaperSwapper.sol#243) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)._to](lib/vault-v2/src/ReaperSwapper.sol#L243) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L243", - "id": "f5ac32f324cb58d5086f8317679267d629598a093f9744b805224745cd6a4a98", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_tokenOut", - "source_mapping": { - "start": 3912, - "length": 17, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 105 - ], - "starting_column": 52, - "ending_column": 69 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "updateBalSwapPoolID", - "source_mapping": { - "start": 3865, - "length": 246, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 105, - 106, - 107, - 108, - 109, - 110, - 111 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "updateBalSwapPoolID(address,address,address,bytes32)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.updateBalSwapPoolID(address,address,address,bytes32)._tokenOut (lib/vault-v2/src/ReaperSwapper.sol#105) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.updateBalSwapPoolID(address,address,address,bytes32)._tokenOut](lib/vault-v2/src/ReaperSwapper.sol#L105) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L105", - "id": "f6df1545fe7e00b5fd2a959284fe6088686751e8c7cc23f57a5cd452cf1d1e58", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_minAmountOutData", - "source_mapping": { - "start": 6361, - "length": 41, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 177 - ], - "starting_column": 9, - "ending_column": 50 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapBal", - "source_mapping": { - "start": 6266, - "length": 509, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)._minAmountOutData (lib/vault-v2/src/ReaperSwapper.sol#177) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)._minAmountOutData](lib/vault-v2/src/ReaperSwapper.sol#L177) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L177", - "id": "f6f24fbb241e4df38de4d7a6812d9589f5ef7dfbf4d14334b09a01a8f35c5d51", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_vault", - "source_mapping": { - "start": 6412, - "length": 14, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 178 - ], - "starting_column": 9, - "ending_column": 23 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapBal", - "source_mapping": { - "start": 6266, - "length": 509, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)._vault (lib/vault-v2/src/ReaperSwapper.sol#178) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)._vault](lib/vault-v2/src/ReaperSwapper.sol#L178) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L178", - "id": "f95934574f1bf834e84810d59234ad1a34504a4e9db16b4ca5622230997341d5", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_strategists", - "source_mapping": { - "start": 3058, - "length": 29, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 82 - ], - "starting_column": 25, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "initialize", - "source_mapping": { - "start": 3038, - "length": 562, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "initialize(address[],address,address)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.initialize(address[],address,address)._strategists (lib/vault-v2/src/ReaperSwapper.sol#82) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.initialize(address[],address,address)._strategists](lib/vault-v2/src/ReaperSwapper.sol#L82) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L82", - "id": "f96d266d8b1835f94a34c648dc6724dfc7f543cfa8fa4a7e942b121681eab748", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_router", - "source_mapping": { - "start": 6106, - "length": 15, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 168 - ], - "starting_column": 9, - "ending_column": 24 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV2", - "source_mapping": { - "start": 5958, - "length": 302, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV2(address,address,uint256,MinAmountOutData,address)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address)._router (lib/vault-v2/src/ReaperSwapper.sol#168) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapUniV2(address,address,uint256,MinAmountOutData,address)._router](lib/vault-v2/src/ReaperSwapper.sol#L168) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L168", - "id": "fa6dcd2f29fbd832c383ff7357c474e98aba7ad3fe37aa86aa8c26cf32c98cb8", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_tryCatchActive", - "source_mapping": { - "start": 6463, - "length": 20, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 180 - ], - "starting_column": 9, - "ending_column": 29 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapBal", - "source_mapping": { - "start": 6266, - "length": 509, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)._tryCatchActive (lib/vault-v2/src/ReaperSwapper.sol#180) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256,bool)._tryCatchActive](lib/vault-v2/src/ReaperSwapper.sol#L180) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L180", - "id": "fe29d9bfd86c06851a2a3e1b3c0db25699abadca8db8b78c71ae875293417d86", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_instantExitFee", - "source_mapping": { - "start": 6185, - "length": 23, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 168 - ], - "starting_column": 32, - "ending_column": 55 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "setInstantExitFee", - "source_mapping": { - "start": 6158, - "length": 123, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 168, - 169, - 170 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DiscountExercise", - "source_mapping": { - "start": 1052, - "length": 9969, - "filename_relative": "src/exercise/DiscountExercise.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/exercise/DiscountExercise.sol", - "filename_short": "src/exercise/DiscountExercise.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "setInstantExitFee(uint256)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter DiscountExercise.setInstantExitFee(uint256)._instantExitFee (src/exercise/DiscountExercise.sol#168) is not in mixedCase\n", - "markdown": "Parameter [DiscountExercise.setInstantExitFee(uint256)._instantExitFee](src/exercise/DiscountExercise.sol#L168) is not in mixedCase\n", - "first_markdown_element": "src/exercise/DiscountExercise.sol#L168", - "id": "ff1617a3413fc4e31072073ea6fc5e0e9bf4ead3476a5cb3e755d52d77461b93", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_tokenOut", - "source_mapping": { - "start": 4163, - "length": 17, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 113 - ], - "starting_column": 51, - "ending_column": 68 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "updateVeloSwapPath", - "source_mapping": { - "start": 4117, - "length": 261, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 113, - 114, - 115, - 116, - 117, - 118, - 119 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "updateVeloSwapPath(address,address,address,IVeloRouter.Route[])" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.updateVeloSwapPath(address,address,address,IVeloRouter.Route[])._tokenOut (lib/vault-v2/src/ReaperSwapper.sol#113) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.updateVeloSwapPath(address,address,address,IVeloRouter.Route[])._tokenOut](lib/vault-v2/src/ReaperSwapper.sol#L113) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L113", - "id": "ff85b7c367841884a8674d678ffff63e31caeb488f05d941ec34479fd6baf50c", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_vault", - "source_mapping": { - "start": 6927, - "length": 14, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 191 - ], - "starting_column": 9, - "ending_column": 23 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapBal", - "source_mapping": { - "start": 6781, - "length": 317, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapBal(address,address,uint256,MinAmountOutData,address,uint256)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256)._vault (lib/vault-v2/src/ReaperSwapper.sol#191) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapBal(address,address,uint256,MinAmountOutData,address,uint256)._vault](lib/vault-v2/src/ReaperSwapper.sol#L191) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L191", - "id": "ffc2ede031c84d632d708b92ea1e8bcb081c69066ff3fcc008d2e6cd01e71788", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_amount", - "source_mapping": { - "start": 8630, - "length": 15, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 244 - ], - "starting_column": 9, - "ending_column": 24 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapUniV3", - "source_mapping": { - "start": 8558, - "length": 534, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReaperSwapper", - "source_mapping": { - "start": 705, - "length": 19366, - "filename_relative": "lib/vault-v2/src/ReaperSwapper.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/ReaperSwapper.sol", - "filename_short": "lib/vault-v2/src/ReaperSwapper.sol", - "is_dependency": true, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)._amount (lib/vault-v2/src/ReaperSwapper.sol#244) is not in mixedCase\n", - "markdown": "Parameter [ReaperSwapper.swapUniV3(address,address,uint256,MinAmountOutData,address,uint256,bool)._amount](lib/vault-v2/src/ReaperSwapper.sol#L244) is not in mixedCase\n", - "first_markdown_element": "lib/vault-v2/src/ReaperSwapper.sol#L244", - "id": "ffe58a8a038564f540670c2f6b6c6fa52d43784115d341afa1eba179df2efe8b", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "sqrt", - "source_mapping": { - "start": 5746, - "length": 3396, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FixedPointMathLib", - "source_mapping": { - "start": 341, - "length": 9712, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "sqrt(uint256)" - } - }, - { - "type": "node", - "name": "! y_sqrt_asm_0 < 0x1000000000000000000", - "source_mapping": { - "start": 6558, - "length": 119, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 180, - 181, - 182, - 183 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "sqrt", - "source_mapping": { - "start": 5746, - "length": 3396, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FixedPointMathLib", - "source_mapping": { - "start": 341, - "length": 9712, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "sqrt(uint256)" - } - } - } - } - ], - "description": "FixedPointMathLib.sqrt(uint256) (lib/solmate/src/utils/FixedPointMathLib.sol#164-227) uses literals with too many digits:\n\t- ! y_sqrt_asm_0 < 0x1000000000000000000 (lib/solmate/src/utils/FixedPointMathLib.sol#180-183)\n", - "markdown": "[FixedPointMathLib.sqrt(uint256)](lib/solmate/src/utils/FixedPointMathLib.sol#L164-L227) uses literals with too many digits:\n\t- [! y_sqrt_asm_0 < 0x1000000000000000000](lib/solmate/src/utils/FixedPointMathLib.sol#L180-L183)\n", - "first_markdown_element": "lib/solmate/src/utils/FixedPointMathLib.sol#L164-L227", - "id": "0a819fb5f92a6f6a7948d6198a20a71e9693691c915fd452e5b41729e13b3356", - "check": "too-many-digits", - "impact": "Informational", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "sqrt", - "source_mapping": { - "start": 5746, - "length": 3396, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FixedPointMathLib", - "source_mapping": { - "start": 341, - "length": 9712, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "sqrt(uint256)" - } - }, - { - "type": "node", - "name": "! y_sqrt_asm_0 < 0x10000000000000000000000000000000000", - "source_mapping": { - "start": 6409, - "length": 136, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 176, - 177, - 178, - 179 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "sqrt", - "source_mapping": { - "start": 5746, - "length": 3396, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FixedPointMathLib", - "source_mapping": { - "start": 341, - "length": 9712, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "sqrt(uint256)" - } - } - } - } - ], - "description": "FixedPointMathLib.sqrt(uint256) (lib/solmate/src/utils/FixedPointMathLib.sol#164-227) uses literals with too many digits:\n\t- ! y_sqrt_asm_0 < 0x10000000000000000000000000000000000 (lib/solmate/src/utils/FixedPointMathLib.sol#176-179)\n", - "markdown": "[FixedPointMathLib.sqrt(uint256)](lib/solmate/src/utils/FixedPointMathLib.sol#L164-L227) uses literals with too many digits:\n\t- [! y_sqrt_asm_0 < 0x10000000000000000000000000000000000](lib/solmate/src/utils/FixedPointMathLib.sol#L176-L179)\n", - "first_markdown_element": "lib/solmate/src/utils/FixedPointMathLib.sol#L164-L227", - "id": "1356e20c62f39f7e407734298d046498a04468c6b830d2e9f2d11b012ceb8af6", - "check": "too-many-digits", - "impact": "Informational", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "sqrt", - "source_mapping": { - "start": 5746, - "length": 3396, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FixedPointMathLib", - "source_mapping": { - "start": 341, - "length": 9712, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "sqrt(uint256)" - } - }, - { - "type": "node", - "name": "! y_sqrt_asm_0 < 0x10000000000", - "source_mapping": { - "start": 6690, - "length": 111, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 184, - 185, - 186, - 187 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "sqrt", - "source_mapping": { - "start": 5746, - "length": 3396, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FixedPointMathLib", - "source_mapping": { - "start": 341, - "length": 9712, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "sqrt(uint256)" - } - } - } - } - ], - "description": "FixedPointMathLib.sqrt(uint256) (lib/solmate/src/utils/FixedPointMathLib.sol#164-227) uses literals with too many digits:\n\t- ! y_sqrt_asm_0 < 0x10000000000 (lib/solmate/src/utils/FixedPointMathLib.sol#184-187)\n", - "markdown": "[FixedPointMathLib.sqrt(uint256)](lib/solmate/src/utils/FixedPointMathLib.sol#L164-L227) uses literals with too many digits:\n\t- [! y_sqrt_asm_0 < 0x10000000000](lib/solmate/src/utils/FixedPointMathLib.sol#L184-L187)\n", - "first_markdown_element": "lib/solmate/src/utils/FixedPointMathLib.sol#L164-L227", - "id": "4547466ed7b7e6105f203a76bcd6ab35e0154e0fc16f7c2ed0cf4f753cbcbb6d", - "check": "too-many-digits", - "impact": "Informational", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - }, - { - "type": "node", - "name": "ratio = 0x100000000000000000000000000000000", - "source_mapping": { - "start": 1659, - "length": 141, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 31, - 32, - 33 - ], - "starting_column": 13, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getSqrtRatioAtTick", - "source_mapping": { - "start": 1385, - "length": 2759, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TickMath", - "source_mapping": { - "start": 305, - "length": 9112, - "filename_relative": "lib/v3-core/contracts/libraries/TickMath.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/v3-core/contracts/libraries/TickMath.sol", - "filename_short": "lib/v3-core/contracts/libraries/TickMath.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getSqrtRatioAtTick(int24)" - } - } - } - } - ], - "description": "TickMath.getSqrtRatioAtTick(int24) (lib/v3-core/contracts/libraries/TickMath.sol#26-61) uses literals with too many digits:\n\t- ratio = 0x100000000000000000000000000000000 (lib/v3-core/contracts/libraries/TickMath.sol#31-33)\n", - "markdown": "[TickMath.getSqrtRatioAtTick(int24)](lib/v3-core/contracts/libraries/TickMath.sol#L26-L61) uses literals with too many digits:\n\t- [ratio = 0x100000000000000000000000000000000](lib/v3-core/contracts/libraries/TickMath.sol#L31-L33)\n", - "first_markdown_element": "lib/v3-core/contracts/libraries/TickMath.sol#L26-L61", - "id": "756616de9aca12ab02acf2bbcd459f0074cea7de1b8fbd815a63cf4473e1d454", - "check": "too-many-digits", - "impact": "Informational", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "sqrt", - "source_mapping": { - "start": 373, - "length": 1221, - "filename_relative": "lib/vault-v2/src/libraries/Babylonian.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/Babylonian.sol", - "filename_short": "lib/vault-v2/src/libraries/Babylonian.sol", - "is_dependency": true, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Babylonian", - "source_mapping": { - "start": 201, - "length": 1395, - "filename_relative": "lib/vault-v2/src/libraries/Babylonian.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/Babylonian.sol", - "filename_short": "lib/vault-v2/src/libraries/Babylonian.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "sqrt(uint256)" - } - }, - { - "type": "node", - "name": "xx >= 0x100000000000000000000000000000000", - "source_mapping": { - "start": 697, - "length": 41, - "filename_relative": "lib/vault-v2/src/libraries/Babylonian.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/Babylonian.sol", - "filename_short": "lib/vault-v2/src/libraries/Babylonian.sol", - "is_dependency": true, - "lines": [ - 18 - ], - "starting_column": 13, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "sqrt", - "source_mapping": { - "start": 373, - "length": 1221, - "filename_relative": "lib/vault-v2/src/libraries/Babylonian.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/Babylonian.sol", - "filename_short": "lib/vault-v2/src/libraries/Babylonian.sol", - "is_dependency": true, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Babylonian", - "source_mapping": { - "start": 201, - "length": 1395, - "filename_relative": "lib/vault-v2/src/libraries/Babylonian.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/Babylonian.sol", - "filename_short": "lib/vault-v2/src/libraries/Babylonian.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "sqrt(uint256)" - } - } - } - } - ], - "description": "Babylonian.sqrt(uint256) (lib/vault-v2/src/libraries/Babylonian.sol#10-54) uses literals with too many digits:\n\t- xx >= 0x100000000000000000000000000000000 (lib/vault-v2/src/libraries/Babylonian.sol#18)\n", - "markdown": "[Babylonian.sqrt(uint256)](lib/vault-v2/src/libraries/Babylonian.sol#L10-L54) uses literals with too many digits:\n\t- [xx >= 0x100000000000000000000000000000000](lib/vault-v2/src/libraries/Babylonian.sol#L18)\n", - "first_markdown_element": "lib/vault-v2/src/libraries/Babylonian.sol#L10-L54", - "id": "a0fba3455384ac1e6d71c40190239592f39a24734f29beb5951cfa0d1eac9cca", - "check": "too-many-digits", - "impact": "Informational", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "sqrt", - "source_mapping": { - "start": 373, - "length": 1221, - "filename_relative": "lib/vault-v2/src/libraries/Babylonian.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/Babylonian.sol", - "filename_short": "lib/vault-v2/src/libraries/Babylonian.sol", - "is_dependency": true, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Babylonian", - "source_mapping": { - "start": 201, - "length": 1395, - "filename_relative": "lib/vault-v2/src/libraries/Babylonian.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/Babylonian.sol", - "filename_short": "lib/vault-v2/src/libraries/Babylonian.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "sqrt(uint256)" - } - }, - { - "type": "node", - "name": "xx >= 0x10000000000000000", - "source_mapping": { - "start": 810, - "length": 25, - "filename_relative": "lib/vault-v2/src/libraries/Babylonian.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/Babylonian.sol", - "filename_short": "lib/vault-v2/src/libraries/Babylonian.sol", - "is_dependency": true, - "lines": [ - 22 - ], - "starting_column": 13, - "ending_column": 38 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "sqrt", - "source_mapping": { - "start": 373, - "length": 1221, - "filename_relative": "lib/vault-v2/src/libraries/Babylonian.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/Babylonian.sol", - "filename_short": "lib/vault-v2/src/libraries/Babylonian.sol", - "is_dependency": true, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Babylonian", - "source_mapping": { - "start": 201, - "length": 1395, - "filename_relative": "lib/vault-v2/src/libraries/Babylonian.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/Babylonian.sol", - "filename_short": "lib/vault-v2/src/libraries/Babylonian.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "sqrt(uint256)" - } - } - } - } - ], - "description": "Babylonian.sqrt(uint256) (lib/vault-v2/src/libraries/Babylonian.sol#10-54) uses literals with too many digits:\n\t- xx >= 0x10000000000000000 (lib/vault-v2/src/libraries/Babylonian.sol#22)\n", - "markdown": "[Babylonian.sqrt(uint256)](lib/vault-v2/src/libraries/Babylonian.sol#L10-L54) uses literals with too many digits:\n\t- [xx >= 0x10000000000000000](lib/vault-v2/src/libraries/Babylonian.sol#L22)\n", - "first_markdown_element": "lib/vault-v2/src/libraries/Babylonian.sol#L10-L54", - "id": "e5cea88aa35e144390464a50cd74e5ef0814fa17832eaacde7698aa0a1c5c98f", - "check": "too-many-digits", - "impact": "Informational", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "sqrt", - "source_mapping": { - "start": 373, - "length": 1221, - "filename_relative": "lib/vault-v2/src/libraries/Babylonian.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/Babylonian.sol", - "filename_short": "lib/vault-v2/src/libraries/Babylonian.sol", - "is_dependency": true, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Babylonian", - "source_mapping": { - "start": 201, - "length": 1395, - "filename_relative": "lib/vault-v2/src/libraries/Babylonian.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/Babylonian.sol", - "filename_short": "lib/vault-v2/src/libraries/Babylonian.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "sqrt(uint256)" - } - }, - { - "type": "node", - "name": "xx >= 0x100000000", - "source_mapping": { - "start": 906, - "length": 17, - "filename_relative": "lib/vault-v2/src/libraries/Babylonian.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/Babylonian.sol", - "filename_short": "lib/vault-v2/src/libraries/Babylonian.sol", - "is_dependency": true, - "lines": [ - 26 - ], - "starting_column": 13, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "sqrt", - "source_mapping": { - "start": 373, - "length": 1221, - "filename_relative": "lib/vault-v2/src/libraries/Babylonian.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/Babylonian.sol", - "filename_short": "lib/vault-v2/src/libraries/Babylonian.sol", - "is_dependency": true, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Babylonian", - "source_mapping": { - "start": 201, - "length": 1395, - "filename_relative": "lib/vault-v2/src/libraries/Babylonian.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/vault-v2/src/libraries/Babylonian.sol", - "filename_short": "lib/vault-v2/src/libraries/Babylonian.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "sqrt(uint256)" - } - } - } - } - ], - "description": "Babylonian.sqrt(uint256) (lib/vault-v2/src/libraries/Babylonian.sol#10-54) uses literals with too many digits:\n\t- xx >= 0x100000000 (lib/vault-v2/src/libraries/Babylonian.sol#26)\n", - "markdown": "[Babylonian.sqrt(uint256)](lib/vault-v2/src/libraries/Babylonian.sol#L10-L54) uses literals with too many digits:\n\t- [xx >= 0x100000000](lib/vault-v2/src/libraries/Babylonian.sol#L26)\n", - "first_markdown_element": "lib/vault-v2/src/libraries/Babylonian.sol#L10-L54", - "id": "e8d06912ce8ea156a58638083700c8eb9591c4bd2968b12ff93038bc775de738", - "check": "too-many-digits", - "impact": "Informational", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "sqrt", - "source_mapping": { - "start": 5746, - "length": 3396, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FixedPointMathLib", - "source_mapping": { - "start": 341, - "length": 9712, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "sqrt(uint256)" - } - }, - { - "type": "node", - "name": "! y_sqrt_asm_0 < 0x1000000", - "source_mapping": { - "start": 6814, - "length": 106, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 188, - 189, - 190, - 191 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "sqrt", - "source_mapping": { - "start": 5746, - "length": 3396, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FixedPointMathLib", - "source_mapping": { - "start": 341, - "length": 9712, - "filename_relative": "lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/lib/solmate/src/utils/FixedPointMathLib.sol", - "filename_short": "lib/solmate/src/utils/FixedPointMathLib.sol", - "is_dependency": true, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "sqrt(uint256)" - } - } - } - } - ], - "description": "FixedPointMathLib.sqrt(uint256) (lib/solmate/src/utils/FixedPointMathLib.sol#164-227) uses literals with too many digits:\n\t- ! y_sqrt_asm_0 < 0x1000000 (lib/solmate/src/utils/FixedPointMathLib.sol#188-191)\n", - "markdown": "[FixedPointMathLib.sqrt(uint256)](lib/solmate/src/utils/FixedPointMathLib.sol#L164-L227) uses literals with too many digits:\n\t- [! y_sqrt_asm_0 < 0x1000000](lib/solmate/src/utils/FixedPointMathLib.sol#L188-L191)\n", - "first_markdown_element": "lib/solmate/src/utils/FixedPointMathLib.sol#L164-L227", - "id": "f28694d3e6e5fcf9a2f3366378ebef6a30892b6367b9ade09d2faca0f8828b17", - "check": "too-many-digits", - "impact": "Informational", - "confidence": "Medium" - }, - { - "elements": [], - "description": "The following unused import(s) in src/helpers/SwapHelper.sol should be removed:\n\t-import \"forge-std/console.sol\"; (src/helpers/SwapHelper.sol#9)\n", - "markdown": "The following unused import(s) in src/helpers/SwapHelper.sol should be removed:\n\t-import \"forge-std/console.sol\"; (src/helpers/SwapHelper.sol#9)\n", - "first_markdown_element": "", - "id": "6f50be6825ed38206d4fb51dd6876afc1476363bb114f0ef2ebff4c45cde45e0", - "check": "unused-import", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "isToken0", - "source_mapping": { - "start": 2441, - "length": 20, - "filename_relative": "src/oracles/ThenaOracle.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/ThenaOracle.sol", - "filename_short": "src/oracles/ThenaOracle.sol", - "is_dependency": false, - "lines": [ - 60 - ], - "starting_column": 5, - "ending_column": 25 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ThenaOracle", - "source_mapping": { - "start": 587, - "length": 5996, - "filename_relative": "src/oracles/ThenaOracle.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/ThenaOracle.sol", - "filename_short": "src/oracles/ThenaOracle.sol", - "is_dependency": false, - "lines": [ - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "ThenaOracle.isToken0 (src/oracles/ThenaOracle.sol#60) should be immutable \n", - "markdown": "[ThenaOracle.isToken0](src/oracles/ThenaOracle.sol#L60) should be immutable \n", - "first_markdown_element": "src/oracles/ThenaOracle.sol#L60", - "id": "e0b61928eb6070b87873ce63ac8b19811c80ba5bc00753317605d06c2cac17ae", - "check": "immutable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "isToken0", - "source_mapping": { - "start": 2701, - "length": 20, - "filename_relative": "src/oracles/UniswapV3Oracle.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/UniswapV3Oracle.sol", - "filename_short": "src/oracles/UniswapV3Oracle.sol", - "is_dependency": false, - "lines": [ - 65 - ], - "starting_column": 5, - "ending_column": 25 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "UniswapV3Oracle", - "source_mapping": { - "start": 729, - "length": 6210, - "filename_relative": "src/oracles/UniswapV3Oracle.sol", - "filename_absolute": "/home/anything/Blockchain/ByteMasons/options-token/src/oracles/UniswapV3Oracle.sol", - "filename_short": "src/oracles/UniswapV3Oracle.sol", - "is_dependency": false, - "lines": [ - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "UniswapV3Oracle.isToken0 (src/oracles/UniswapV3Oracle.sol#65) should be immutable \n", - "markdown": "[UniswapV3Oracle.isToken0](src/oracles/UniswapV3Oracle.sol#L65) should be immutable \n", - "first_markdown_element": "src/oracles/UniswapV3Oracle.sol#L65", - "id": "fe23c04d02b78e9e124d8ab8aa13ce54ede2783408d0e75877e7375466537adc", - "check": "immutable-states", - "impact": "Optimization", - "confidence": "High" - } - ] - } -} \ No newline at end of file diff --git a/src/OptionsToken.sol b/src/OptionsToken.sol index d51db05..42603f8 100644 --- a/src/OptionsToken.sol +++ b/src/OptionsToken.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.13; import {OwnableUpgradeable} from "oz-upgradeable/access/OwnableUpgradeable.sol"; import {ERC20Upgradeable} from "oz-upgradeable/token/ERC20/ERC20Upgradeable.sol"; import {UUPSUpgradeable} from "oz-upgradeable/proxy/utils/UUPSUpgradeable.sol"; - +import {PausableUpgradeable} from "oz-upgradeable/security/PausableUpgradeable.sol"; import {IOptionsToken} from "./interfaces/IOptionsToken.sol"; import {IOracle} from "./interfaces/IOracle.sol"; import {IExercise} from "./interfaces/IExercise.sol"; @@ -13,7 +13,7 @@ import {IExercise} from "./interfaces/IExercise.sol"; /// @author Eidolon & lookee /// @notice Options token representing the right to perform an advantageous action, /// such as purchasing the underlying token at a discount to the market price. -contract OptionsToken is IOptionsToken, ERC20Upgradeable, OwnableUpgradeable, UUPSUpgradeable { +contract OptionsToken is IOptionsToken, ERC20Upgradeable, OwnableUpgradeable, UUPSUpgradeable, PausableUpgradeable { /// ----------------------------------------------------------------------- /// Errors /// ----------------------------------------------------------------------- @@ -99,6 +99,7 @@ contract OptionsToken is IOptionsToken, ERC20Upgradeable, OwnableUpgradeable, UU function exercise(uint256 amount, address recipient, address option, bytes calldata params) external virtual + whenNotPaused returns ( uint256 paymentAmount, address, @@ -121,6 +122,16 @@ contract OptionsToken is IOptionsToken, ERC20Upgradeable, OwnableUpgradeable, UU emit SetExerciseContract(_address, _isExercise); } + /// @notice Pauses functionality related to exercises of contracts. + function pause() external onlyOwner { + _pause(); + } + + /// @notice Unpauses functionality related to exercises of contracts. + function unpause() external onlyOwner { + _unpause(); + } + /// ----------------------------------------------------------------------- /// Internal functions /// ----------------------------------------------------------------------- diff --git a/src/exercise/DiscountExercise.sol b/src/exercise/DiscountExercise.sol index 8348e6f..3be5686 100644 --- a/src/exercise/DiscountExercise.sol +++ b/src/exercise/DiscountExercise.sol @@ -35,7 +35,7 @@ contract DiscountExercise is BaseExercise, SwapHelper, Pausable { error Exercise__MultiplierOutOfRange(); error Exercise__InvalidOracle(); error Exercise__FeeGreaterThanMax(); - error Exercise__FeeDistributionFailed(); + error Exercise__AmountOutIsZero(); /// Events event Exercised(address indexed sender, address indexed recipient, uint256 amount, uint256 paymentAmount); @@ -138,8 +138,8 @@ contract DiscountExercise is BaseExercise, SwapHelper, Pausable { } /// Owner functions - function configSwapProps(SwapProps memory _swapProps) external virtual override onlyOwner { - _configSwapProps(_swapProps); + function setSwapProps(SwapProps memory _swapProps) external virtual override onlyOwner { + _setSwapProps(_swapProps); } /// @notice Sets the oracle contract. Only callable by the owner. @@ -208,7 +208,6 @@ contract DiscountExercise is BaseExercise, SwapHelper, Pausable { /// Internal functions function _zap(address from, uint256 amount, address recipient, DiscountExerciseParams memory params) internal - virtual returns (uint256 paymentAmount, address, uint256, uint256) { if (block.timestamp > params.deadline) revert Exercise__PastDeadline(); @@ -224,13 +223,19 @@ contract DiscountExercise is BaseExercise, SwapHelper, Pausable { /* Approve the underlying token to make swap */ underlyingToken.approve(swapProps.swapper, feeAmount); /* Swap underlying token to payment token (asset) */ - _generalSwap(swapProps.exchangeTypes, address(underlyingToken), address(paymentToken), feeAmount, minAmountOut, swapProps.exchangeAddress); + uint256 amountOut = _generalSwap( + swapProps.exchangeTypes, address(underlyingToken), address(paymentToken), feeAmount, minAmountOut, swapProps.exchangeAddress + ); + + if (amountOut == 0) { + revert Exercise__AmountOutIsZero(); + } + feeAmount = 0; + underlyingToken.approve(swapProps.swapper, 0); + // transfer payment tokens from user to the set receivers distributeFees(paymentToken.balanceOf(address(this)), paymentToken); - if (paymentToken.balanceOf(feeRecipients[0]) == 0 || paymentToken.balanceOf(feeRecipients[1]) == 0) { - revert Exercise__FeeDistributionFailed(); - } } // transfer underlying tokens to recipient without the bonus @@ -276,7 +281,7 @@ contract DiscountExercise is BaseExercise, SwapHelper, Pausable { return _getPaymentAmount(amount); } - function _getPaymentAmount(uint256 amount) private view returns (uint256 paymentAmount) { + function _getPaymentAmount(uint256 amount) internal view returns (uint256 paymentAmount) { paymentAmount = amount.mulWadUp(oracle.getPrice().mulDivUp(multiplier, BPS_DENOM)); } } diff --git a/src/helpers/SwapHelper.sol b/src/helpers/SwapHelper.sol index f4fbff0..828b600 100644 --- a/src/helpers/SwapHelper.sol +++ b/src/helpers/SwapHelper.sol @@ -33,12 +33,16 @@ abstract contract SwapHelper { error SwapHelper__InvalidExchangeType(uint256 exType); constructor(SwapProps memory _swapProps) { - _configSwapProps(_swapProps); + _setSwapProps(_swapProps); } - function configSwapProps(SwapProps memory _swapProps) external virtual; + /** + * @dev Override function shall have proper access control + * @param _swapProps - swap properties + */ + function setSwapProps(SwapProps memory _swapProps) external virtual; - function _configSwapProps(SwapProps memory _swapProps) internal { + function _setSwapProps(SwapProps memory _swapProps) internal { if (_swapProps.maxSwapSlippage > BPS_DENOM) { revert SwapHelper__SlippageGreaterThanMax(); } @@ -62,17 +66,18 @@ abstract contract SwapHelper { */ function _generalSwap(ExchangeType exType, address tokenIn, address tokenOut, uint256 amount, uint256 minAmountOut, address exchangeAddress) internal + returns (uint256) { ISwapperSwaps _swapper = ISwapperSwaps(swapProps.swapper); MinAmountOutData memory minAmountOutData = MinAmountOutData(MinAmountOutKind.Absolute, minAmountOut); if (exType == ExchangeType.UniV2) { - _swapper.swapUniV2(tokenIn, tokenOut, amount, minAmountOutData, exchangeAddress); + return _swapper.swapUniV2(tokenIn, tokenOut, amount, minAmountOutData, exchangeAddress); } else if (exType == ExchangeType.Bal) { - _swapper.swapBal(tokenIn, tokenOut, amount, minAmountOutData, exchangeAddress); + return _swapper.swapBal(tokenIn, tokenOut, amount, minAmountOutData, exchangeAddress); } else if (exType == ExchangeType.VeloSolid) { - _swapper.swapVelo(tokenIn, tokenOut, amount, minAmountOutData, exchangeAddress); + return _swapper.swapVelo(tokenIn, tokenOut, amount, minAmountOutData, exchangeAddress); } else if (exType == ExchangeType.UniV3) { - _swapper.swapUniV3(tokenIn, tokenOut, amount, minAmountOutData, exchangeAddress); + return _swapper.swapUniV3(tokenIn, tokenOut, amount, minAmountOutData, exchangeAddress); } else { revert SwapHelper__InvalidExchangeType(uint256(exType)); } diff --git a/test/OptionsToken.t.sol b/test/OptionsToken.t.sol index 08af9ee..e6ccdfb 100644 --- a/test/OptionsToken.t.sol +++ b/test/OptionsToken.t.sol @@ -66,7 +66,6 @@ contract OptionsTokenTest is Test { optionsToken.transferOwnership(owner); /* Reaper deployment and configuration */ - uint256 slippage = 500; // 5% uint256 minAmountToTriggerSwap = 1e5; @@ -392,6 +391,39 @@ contract OptionsTokenTest is Test { optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); } + function test_oTokenWhenPaused(uint256 amount) public { + amount = bound(amount, 100, 1 ether); + address recipient = makeAddr("recipient"); + + // mint options tokens + vm.prank(tokenAdmin); + optionsToken.mint(address(this), 3 * amount); + + // mint payment tokens + uint256 expectedPaymentAmount = 3 * amount.mulWadUp(oracle.getPrice().mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); + deal(address(paymentToken), address(this), expectedPaymentAmount); + + // exercise options tokens + DiscountExerciseParams memory params = + DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: false}); + optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); + + /* Only owner can pause */ + vm.startPrank(recipient); + vm.expectRevert(bytes("Ownable: caller is not the owner")); // Ownable: caller is not the owner + optionsToken.pause(); + vm.stopPrank(); + + vm.prank(owner); + optionsToken.pause(); + vm.expectRevert(bytes("Pausable: paused")); + optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); + + vm.prank(owner); + optionsToken.unpause(); + optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); + } + function test_exerciserConfigAccesses() public { uint256 slippage = 555; // 5.55% address[] memory tokens = new address[](2); @@ -404,10 +436,10 @@ contract OptionsTokenTest is Test { SwapProps memory swapProps = SwapProps(address(reaperSwapper), address(reaperSwapper), ExchangeType.Bal, slippage); vm.expectRevert(bytes("UNAUTHORIZED")); - exerciser.configSwapProps(swapProps); + exerciser.setSwapProps(swapProps); vm.prank(owner); - exerciser.configSwapProps(swapProps); + exerciser.setSwapProps(swapProps); vm.expectRevert(bytes("UNAUTHORIZED")); exerciser.setOracle(oracle); From 12936705abbee5563d17a61544ce64cec0deabcb Mon Sep 17 00:00:00 2001 From: xRave110 Date: Mon, 1 Jul 2024 21:19:53 +0200 Subject: [PATCH 53/64] Changed way of setting swap properties --- src/exercise/DiscountExercise.sol | 3 ++- src/helpers/SwapHelper.sol | 4 +--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/exercise/DiscountExercise.sol b/src/exercise/DiscountExercise.sol index 3be5686..b8c556f 100644 --- a/src/exercise/DiscountExercise.sol +++ b/src/exercise/DiscountExercise.sol @@ -90,10 +90,11 @@ contract DiscountExercise is BaseExercise, SwapHelper, Pausable { address[] memory feeRecipients_, uint256[] memory feeBPS_, SwapProps memory swapProps_ - ) BaseExercise(oToken_, feeRecipients_, feeBPS_) Owned(owner_) SwapHelper(swapProps_) { + ) BaseExercise(oToken_, feeRecipients_, feeBPS_) Owned(owner_) SwapHelper() { paymentToken = paymentToken_; underlyingToken = underlyingToken_; + _setSwapProps(swapProps_); _setOracle(oracle_); _setMultiplier(multiplier_); _setInstantExitFee(instantExitFee_); diff --git a/src/helpers/SwapHelper.sol b/src/helpers/SwapHelper.sol index 828b600..4bc7d2a 100644 --- a/src/helpers/SwapHelper.sol +++ b/src/helpers/SwapHelper.sol @@ -32,9 +32,7 @@ abstract contract SwapHelper { error SwapHelper__ParamHasAddressZero(); error SwapHelper__InvalidExchangeType(uint256 exType); - constructor(SwapProps memory _swapProps) { - _setSwapProps(_swapProps); - } + constructor() {} /** * @dev Override function shall have proper access control From 4d72c2861a05269abafa2c28fdbb8fe80bdc6186 Mon Sep 17 00:00:00 2001 From: xRave110 Date: Mon, 1 Jul 2024 21:22:44 +0200 Subject: [PATCH 54/64] Working integration on Mode --- src/OptionsCompounder.sol | 342 ++++++++++++++ src/interfaces/IFlashLoanReceiver.sol | 28 ++ src/interfaces/ILendingPool.sol | 437 ++++++++++++++++++ .../ILendingPoolAddressesProvider.sol | 60 +++ src/interfaces/IOptionsCompounder.sol | 25 + src/libraries/DataTypes.sol | 53 +++ test/Common.sol | 3 + test/ItBsc_OptionsCompounder.t copy.solNOT | 187 ++++++++ ...n.t.solNOT => ItBsc_OptionsToken.t.solNOT} | 0 test/ItMode_OptionsCompounder.t.sol | 296 ++++++++++++ ...sToken.t.sol => ItMode_OptionsToken.t.sol} | 3 +- test/ItOp_OptionsCompounder.t.solNOT | 415 +++++++++++++++++ ...en.t.solNOT => ItOp_OptionsToken.t.solNOT} | 0 13 files changed, 1847 insertions(+), 2 deletions(-) create mode 100644 src/OptionsCompounder.sol create mode 100644 src/interfaces/IFlashLoanReceiver.sol create mode 100644 src/interfaces/ILendingPool.sol create mode 100644 src/interfaces/ILendingPoolAddressesProvider.sol create mode 100644 src/interfaces/IOptionsCompounder.sol create mode 100644 src/libraries/DataTypes.sol create mode 100644 test/ItBsc_OptionsCompounder.t copy.solNOT rename test/{ItBscOptionsToken.t.solNOT => ItBsc_OptionsToken.t.solNOT} (100%) create mode 100644 test/ItMode_OptionsCompounder.t.sol rename test/{ItModeOptionsToken.t.sol => ItMode_OptionsToken.t.sol} (98%) create mode 100644 test/ItOp_OptionsCompounder.t.solNOT rename test/{ItOpOptionsToken.t.solNOT => ItOp_OptionsToken.t.solNOT} (100%) diff --git a/src/OptionsCompounder.sol b/src/OptionsCompounder.sol new file mode 100644 index 0000000..f85c3ba --- /dev/null +++ b/src/OptionsCompounder.sol @@ -0,0 +1,342 @@ +// SPDX-License-Identifier: BUSL-1.1 + +pragma solidity ^0.8.0; + +/* Imports */ +import {IFlashLoanReceiver} from "./interfaces/IFlashLoanReceiver.sol"; +import {ILendingPoolAddressesProvider} from "./interfaces/ILendingPoolAddressesProvider.sol"; +import {ILendingPool} from "./interfaces/ILendingPool.sol"; +import {IOracle} from "./interfaces/IOracle.sol"; +import "./interfaces/IOptionsCompounder.sol"; +import {DiscountExerciseParams, DiscountExercise} from "./exercise/DiscountExercise.sol"; +import {ReaperAccessControl} from "vault-v2/mixins/ReaperAccessControl.sol"; +// import {ISwapperSwaps, MinAmountOutData, MinAmountOutKind} from "vault-v2/ReaperSwapper.sol"; +import {IERC20} from "oz/token/ERC20/IERC20.sol"; +import {FixedPointMathLib} from "solmate/utils/FixedPointMathLib.sol"; +import {OwnableUpgradeable} from "oz-upgradeable/access/OwnableUpgradeable.sol"; +import {UUPSUpgradeable} from "oz-upgradeable/proxy/utils/UUPSUpgradeable.sol"; +import {SafeERC20} from "oz/token/ERC20/utils/SafeERC20.sol"; +import {ExchangeType, SwapProps, SwapHelper} from "./helpers/SwapHelper.sol"; + +/** + * @title Consumes options tokens, exercise them with flashloaned asset and converts gain to strategy want token + * @author Eidolon, xRave110 + * @dev Abstract contract which shall be inherited by the strategy + */ +contract OptionsCompounder is IFlashLoanReceiver, OwnableUpgradeable, UUPSUpgradeable, SwapHelper { + using FixedPointMathLib for uint256; + using SafeERC20 for IERC20; + + /* Internal struct */ + struct FlashloanParams { + uint256 optionsAmount; + address exerciserContract; + address sender; + uint256 initialBalance; + uint256 minPaymentAmount; + } + + /* Constants */ + uint8 constant MIN_NR_OF_FLASHLOAN_ASSETS = 1; + uint256 constant PERCENTAGE = 10000; + + uint256 public constant UPGRADE_TIMELOCK = 48 hours; + uint256 public constant FUTURE_NEXT_PROPOSAL_TIME = 365 days * 100; + + /* Storages */ + address public swapper; + ILendingPoolAddressesProvider private addressProvider; + ILendingPool private lendingPool; + bool private flashloanFinished; + IOracle private oracle; + IOptionsToken public optionsToken; + + uint256 public upgradeProposalTime; + address public nextImplementation; + + /* Events */ + event OTokenCompounded(uint256 indexed gainInPayment, uint256 indexed returned); + + /* Modifiers */ + + constructor() { + _disableInitializers(); + } + + /** + * @notice Initializes params + * @dev Replaces constructor due to upgradeable nature of the contract. Can be executed only once at init. + * @param _optionsToken - option token address which allows to redeem underlying token via operation "exercise" + * @param _addressProvider - address lending pool address provider - necessary for flashloan operations + * @param _swapProps - swap properites for all swaps in the contract + * @param _oracle - oracles used in all swaps in the contract + * + */ + function initialize(address _optionsToken, address _addressProvider, address _swapper, SwapProps memory _swapProps, IOracle _oracle) + public + initializer + { + __Ownable_init(); + setOptionToken(_optionsToken); + _setSwapProps(_swapProps); + setOracle(_oracle); + setSwapper(_swapper); + flashloanFinished = true; + setAddressProvider(_addressProvider); + __UUPSUpgradeable_init(); + _clearUpgradeCooldown(); + } + + /** + * Setters ********************************** + */ + /** + * @notice Sets option token address + * @dev Can be executed only by admins + * @param _optionToken - address of option token contract + */ + function setOptionToken(address _optionToken) public onlyOwner { + if (_optionToken == address(0)) { + revert OptionsCompounder__ParamHasAddressZero(); + } + optionsToken = IOptionsToken(_optionToken); + } + + function setSwapProps(SwapProps memory _swapProps) external override onlyOwner { + _setSwapProps(_swapProps); + } + + function setOracle(IOracle _oracle) public onlyOwner { + if (address(_oracle) == address(0)) { + revert OptionsCompounder__ParamHasAddressZero(); + } + oracle = _oracle; + } + + function setSwapper(address _swapper) public onlyOwner { + if (_swapper == address(0)) { + revert OptionsCompounder__ParamHasAddressZero(); + } + swapper = _swapper; + } + + function setAddressProvider(address _addressProvider) public onlyOwner { + if (_addressProvider == address(0)) { + revert OptionsCompounder__ParamHasAddressZero(); + } + addressProvider = ILendingPoolAddressesProvider(_addressProvider); + lendingPool = ILendingPool(addressProvider.getLendingPool()); + } + + /** + * @notice Function initiates flashloan to get assets for exercising options. + * @dev Can be executed only by keeper role. Reentrance protected. + * @param amount - amount of option tokens to exercise + * @param exerciseContract - address of exercise contract (DiscountContract) + * @param minWantAmount - minimal amount of want when the flashloan is considered as profitable + */ + function harvestOTokens(uint256 amount, address exerciseContract, uint256 minWantAmount) external { + _harvestOTokens(amount, exerciseContract, minWantAmount); + } + + /** + * @notice Function initiates flashloan to get assets for exercising options. + * @dev Can be executed only by keeper role. Reentrance protected. + * @param amount - amount of option tokens to exercise + * @param exerciseContract - address of exercise contract (DiscountContract) + * @param minPaymentAmount - minimal amount of want when the flashloan is considered as profitable + */ + function _harvestOTokens(uint256 amount, address exerciseContract, uint256 minPaymentAmount) private { + /* Check exercise contract validity */ + if (optionsToken.isExerciseContract(exerciseContract) == false) { + revert OptionsCompounder__NotExerciseContract(); + } + /* Reentrance protection */ + if (flashloanFinished == false) { + revert OptionsCompounder__FlashloanNotFinished(); + } + if (minPaymentAmount == 0) { + revert OptionsCompounder__WrongMinPaymentAmount(); + } + /* Locals */ + IERC20 paymentToken = DiscountExercise(exerciseContract).paymentToken(); + + address[] memory assets = new address[](1); + assets[0] = address(paymentToken); + + uint256[] memory amounts = new uint256[](1); + amounts[0] = DiscountExercise(exerciseContract).getPaymentAmount(amount); + + // 0 = no debt, 1 = stable, 2 = variable + uint256[] memory modes = new uint256[](1); + modes[0] = 0; + + /* necesary params used during flashloan execution */ + bytes memory params = + abi.encode(FlashloanParams(amount, exerciseContract, msg.sender, paymentToken.balanceOf(address(this)), minPaymentAmount)); + flashloanFinished = false; + lendingPool.flashLoan( + address(this), // receiver + assets, + amounts, + modes, + address(this), // onBehalf + params, + 0 // referal code + ); + } + + /** + * @notice Exercise option tokens with flash loaned token and compound rewards + * in underlying tokens to stratefy want token + * @dev Function is called after this contract has received the flash loaned amount + * @param assets - list of assets flash loaned (only one asset allowed in this case) + * @param amounts - list of amounts flash loaned (only one amount allowed in this case) + * @param premiums - list of premiums for flash loaned assets (only one premium allowed in this case) + * @param params - encoded data about options amount, exercise contract address, initial balance and minimal want amount + */ + function executeOperation(address[] calldata assets, uint256[] calldata amounts, uint256[] calldata premiums, address, bytes calldata params) + external + override + returns (bool) + { + if (flashloanFinished != false) { + revert OptionsCompounder__FlashloanNotTriggered(); + } + if (assets.length > MIN_NR_OF_FLASHLOAN_ASSETS || amounts.length > MIN_NR_OF_FLASHLOAN_ASSETS || premiums.length > MIN_NR_OF_FLASHLOAN_ASSETS) + { + revert OptionsCompounder__TooMuchAssetsLoaned(); + } + /* Later the gain can be local variable */ + exerciseOptionAndReturnDebt(assets[0], amounts[0], premiums[0], params); + flashloanFinished = true; + return true; + } + + /** + * @dev Private function that helps to execute flashloan and makes it more modular + * Emits event with gain from the option exercise after repayment of all debt from flashloan + * and amount of repaid assets + * @param asset - list of assets flash loaned (only one asset allowed in this case) + * @param amount - list of amounts flash loaned (only one amount allowed in this case) + * @param premium - list of premiums for flash loaned assets (only one premium allowed in this case) + * @param params - encoded data about options amount, exercise contract address, initial balance and minimal want amount + */ + function exerciseOptionAndReturnDebt(address asset, uint256 amount, uint256 premium, bytes calldata params) private { + FlashloanParams memory flashloanParams = abi.decode(params, (FlashloanParams)); + uint256 assetBalance = 0; + uint256 minAmountOut; + + /* Get underlying and payment tokens to make sure there is no change between + harvest and excersice */ + IERC20 underlyingToken = DiscountExercise(flashloanParams.exerciserContract).underlyingToken(); + { + IERC20 paymentToken = DiscountExercise(flashloanParams.exerciserContract).paymentToken(); + + /* Asset and paymentToken should be the same addresses */ + if (asset != address(paymentToken)) { + revert OptionsCompounder__AssetNotEqualToPaymentToken(); + } + } + { + IERC20(address(optionsToken)).safeTransferFrom(flashloanParams.sender, address(this), flashloanParams.optionsAmount); + bytes memory exerciseParams = + abi.encode(DiscountExerciseParams({maxPaymentAmount: amount, deadline: type(uint256).max, isInstantExit: false})); + if (underlyingToken.balanceOf(flashloanParams.exerciserContract) < flashloanParams.optionsAmount) { + revert OptionsCompounder__NotEnoughUnderlyingTokens(); + } + /* Approve spending option token */ + IERC20(asset).approve(flashloanParams.exerciserContract, amount); + /* Exercise in order to get underlying token */ + optionsToken.exercise(flashloanParams.optionsAmount, address(this), flashloanParams.exerciserContract, exerciseParams); + } + + { + uint256 balanceOfUnderlyingToken = 0; + balanceOfUnderlyingToken = underlyingToken.balanceOf(address(this)); + minAmountOut = _getMinAmountOutData(balanceOfUnderlyingToken, swapProps.maxSwapSlippage, address(oracle)); + + /* Approve the underlying token to make swap */ + underlyingToken.approve(swapper, balanceOfUnderlyingToken); + + /* Swap underlying token to payment token (asset) */ + _generalSwap(swapProps.exchangeTypes, address(underlyingToken), asset, balanceOfUnderlyingToken, minAmountOut, swapProps.exchangeAddress); + } + + /* Calculate profit and revert if it is not profitable */ + { + uint256 gainInPaymentToken = 0; + + uint256 totalAmountToPay = amount + premium; + assetBalance = IERC20(asset).balanceOf(address(this)); + + if ( + ( + (assetBalance < flashloanParams.initialBalance) + || (assetBalance - flashloanParams.initialBalance) <= (totalAmountToPay + flashloanParams.minPaymentAmount) + ) + ) { + revert OptionsCompounder__FlashloanNotProfitableEnough(); + } + + /* Protected against underflows by statement above */ + gainInPaymentToken = assetBalance - totalAmountToPay; + + /* Approve lending pool to spend borrowed tokens + premium */ + IERC20(asset).approve(address(lendingPool), totalAmountToPay); + IERC20(asset).safeTransfer(flashloanParams.sender, gainInPaymentToken); + + emit OTokenCompounded(gainInPaymentToken, totalAmountToPay); + } + } + + + /** + * @dev This function must be called prior to upgrading the implementation. + * It's required to wait UPGRADE_TIMELOCK seconds before executing the upgrade. + */ + function initiateUpgradeCooldown(address _nextImplementation) external onlyOwner { + upgradeProposalTime = block.timestamp; + nextImplementation = _nextImplementation; + } + + /** + * @dev This function is called: + * - in initialize() + * - as part of a successful upgrade + * - manually to clear the upgrade cooldown. + */ + function _clearUpgradeCooldown() internal { + upgradeProposalTime = block.timestamp + FUTURE_NEXT_PROPOSAL_TIME; + } + + function clearUpgradeCooldown() external onlyOwner { + _clearUpgradeCooldown(); + } + + /** + * @dev This function must be overriden simply for access control purposes. + * Only the owner can upgrade the implementation once the timelock + * has passed. + */ + function _authorizeUpgrade(address _nextImplementation) internal override onlyOwner { + require(upgradeProposalTime + UPGRADE_TIMELOCK < block.timestamp, "Upgrade cooldown not initiated or still ongoing"); + require(_nextImplementation == nextImplementation, "Incorrect implementation"); + _clearUpgradeCooldown(); + } + + /** + * Getters ********************************** + */ + function getOptionTokenAddress() external view returns (address) { + return address(optionsToken); + } + + function ADDRESSES_PROVIDER() external view returns (ILendingPoolAddressesProvider) { + return addressProvider; + } + + function LENDING_POOL() external view returns (ILendingPool) { + return lendingPool; + } +} diff --git a/src/interfaces/IFlashLoanReceiver.sol b/src/interfaces/IFlashLoanReceiver.sol new file mode 100644 index 0000000..1d52f67 --- /dev/null +++ b/src/interfaces/IFlashLoanReceiver.sol @@ -0,0 +1,28 @@ +// SPDX-License-Identifier: agpl-3.0 +pragma solidity ^0.8.0; + +import {ILendingPoolAddressesProvider} from "./ILendingPoolAddressesProvider.sol"; +import {ILendingPool} from "./ILendingPool.sol"; + +/** + * @title IFlashLoanReceiver interface + * @notice Interface for the Aave fee IFlashLoanReceiver. + * @author Aave + * @dev implement this interface to develop a flashloan-compatible flashLoanReceiver contract + **/ +interface IFlashLoanReceiver { + function executeOperation( + address[] calldata assets, + uint256[] calldata amounts, + uint256[] calldata premiums, + address initiator, + bytes calldata params + ) external returns (bool); + + function ADDRESSES_PROVIDER() + external + view + returns (ILendingPoolAddressesProvider); + + function LENDING_POOL() external view returns (ILendingPool); +} diff --git a/src/interfaces/ILendingPool.sol b/src/interfaces/ILendingPool.sol new file mode 100644 index 0000000..a03f9da --- /dev/null +++ b/src/interfaces/ILendingPool.sol @@ -0,0 +1,437 @@ +// SPDX-License-Identifier: agpl-3.0 +pragma solidity ^0.8.0; + +import {ILendingPoolAddressesProvider} from "./ILendingPoolAddressesProvider.sol"; +import {DataTypes} from "../libraries/DataTypes.sol"; + +interface ILendingPool { + /** + * @dev Emitted on deposit() + * @param reserve The address of the underlying asset of the reserve + * @param user The address initiating the deposit + * @param onBehalfOf The beneficiary of the deposit, receiving the aTokens + * @param amount The amount deposited + * @param referral The referral code used + **/ + event Deposit( + address indexed reserve, + address user, + address indexed onBehalfOf, + uint256 amount, + uint16 indexed referral + ); + + /** + * @dev Emitted on withdraw() + * @param reserve The address of the underlyng asset being withdrawn + * @param user The address initiating the withdrawal, owner of aTokens + * @param to Address that will receive the underlying + * @param amount The amount to be withdrawn + **/ + event Withdraw( + address indexed reserve, + address indexed user, + address indexed to, + uint256 amount + ); + + /** + * @dev Emitted on borrow() and flashLoan() when debt needs to be opened + * @param reserve The address of the underlying asset being borrowed + * @param user The address of the user initiating the borrow(), receiving the funds on borrow() or just + * initiator of the transaction on flashLoan() + * @param onBehalfOf The address that will be getting the debt + * @param amount The amount borrowed out + * @param borrowRateMode The rate mode: 1 for Stable, 2 for Variable + * @param borrowRate The numeric rate at which the user has borrowed + * @param referral The referral code used + **/ + event Borrow( + address indexed reserve, + address user, + address indexed onBehalfOf, + uint256 amount, + uint256 borrowRateMode, + uint256 borrowRate, + uint16 indexed referral + ); + + /** + * @dev Emitted on repay() + * @param reserve The address of the underlying asset of the reserve + * @param user The beneficiary of the repayment, getting his debt reduced + * @param repayer The address of the user initiating the repay(), providing the funds + * @param amount The amount repaid + **/ + event Repay( + address indexed reserve, + address indexed user, + address indexed repayer, + uint256 amount + ); + + /** + * @dev Emitted on swapBorrowRateMode() + * @param reserve The address of the underlying asset of the reserve + * @param user The address of the user swapping his rate mode + * @param rateMode The rate mode that the user wants to swap to + **/ + event Swap(address indexed reserve, address indexed user, uint256 rateMode); + + /** + * @dev Emitted on setUserUseReserveAsCollateral() + * @param reserve The address of the underlying asset of the reserve + * @param user The address of the user enabling the usage as collateral + **/ + event ReserveUsedAsCollateralEnabled( + address indexed reserve, + address indexed user + ); + + /** + * @dev Emitted on setUserUseReserveAsCollateral() + * @param reserve The address of the underlying asset of the reserve + * @param user The address of the user enabling the usage as collateral + **/ + event ReserveUsedAsCollateralDisabled( + address indexed reserve, + address indexed user + ); + + /** + * @dev Emitted on rebalanceStableBorrowRate() + * @param reserve The address of the underlying asset of the reserve + * @param user The address of the user for which the rebalance has been executed + **/ + event RebalanceStableBorrowRate( + address indexed reserve, + address indexed user + ); + + /** + * @dev Emitted on flashLoan() + * @param target The address of the flash loan receiver contract + * @param initiator The address initiating the flash loan + * @param asset The address of the asset being flash borrowed + * @param amount The amount flash borrowed + * @param premium The fee flash borrowed + * @param referralCode The referral code used + **/ + event FlashLoan( + address indexed target, + address indexed initiator, + address indexed asset, + uint256 amount, + uint256 premium, + uint16 referralCode + ); + + /** + * @dev Emitted when the pause is triggered. + */ + event Paused(); + + /** + * @dev Emitted when the pause is lifted. + */ + event Unpaused(); + + /** + * @dev Emitted when a borrower is liquidated. This event is emitted by the LendingPool via + * LendingPoolCollateral manager using a DELEGATECALL + * This allows to have the events in the generated ABI for LendingPool. + * @param collateralAsset The address of the underlying asset used as collateral, to receive as result of the liquidation + * @param debtAsset The address of the underlying borrowed asset to be repaid with the liquidation + * @param user The address of the borrower getting liquidated + * @param debtToCover The debt amount of borrowed `asset` the liquidator wants to cover + * @param liquidatedCollateralAmount The amount of collateral received by the liiquidator + * @param liquidator The address of the liquidator + * @param receiveAToken `true` if the liquidators wants to receive the collateral aTokens, `false` if he wants + * to receive the underlying collateral asset directly + **/ + event LiquidationCall( + address indexed collateralAsset, + address indexed debtAsset, + address indexed user, + uint256 debtToCover, + uint256 liquidatedCollateralAmount, + address liquidator, + bool receiveAToken + ); + + /** + * @dev Emitted when the state of a reserve is updated. NOTE: This event is actually declared + * in the ReserveLogic library and emitted in the updateInterestRates() function. Since the function is internal, + * the event will actually be fired by the LendingPool contract. The event is therefore replicated here so it + * gets added to the LendingPool ABI + * @param reserve The address of the underlying asset of the reserve + * @param liquidityRate The new liquidity rate + * @param stableBorrowRate The new stable borrow rate + * @param variableBorrowRate The new variable borrow rate + * @param liquidityIndex The new liquidity index + * @param variableBorrowIndex The new variable borrow index + **/ + event ReserveDataUpdated( + address indexed reserve, + uint256 liquidityRate, + uint256 stableBorrowRate, + uint256 variableBorrowRate, + uint256 liquidityIndex, + uint256 variableBorrowIndex + ); + + /** + * @dev Deposits an `amount` of underlying asset into the reserve, receiving in return overlying aTokens. + * - E.g. User deposits 100 USDC and gets in return 100 aUSDC + * @param asset The address of the underlying asset to deposit + * @param amount The amount to be deposited + * @param onBehalfOf The address that will receive the aTokens, same as msg.sender if the user + * wants to receive them on his own wallet, or a different address if the beneficiary of aTokens + * is a different wallet + * @param referralCode Code used to register the integrator originating the operation, for potential rewards. + * 0 if the action is executed directly by the user, without any middle-man + **/ + function deposit( + address asset, + uint256 amount, + address onBehalfOf, + uint16 referralCode + ) external; + + /** + * @dev Withdraws an `amount` of underlying asset from the reserve, burning the equivalent aTokens owned + * E.g. User has 100 aUSDC, calls withdraw() and receives 100 USDC, burning the 100 aUSDC + * @param asset The address of the underlying asset to withdraw + * @param amount The underlying amount to be withdrawn + * - Send the value type(uint256).max in order to withdraw the whole aToken balance + * @param to Address that will receive the underlying, same as msg.sender if the user + * wants to receive it on his own wallet, or a different address if the beneficiary is a + * different wallet + * @return The final amount withdrawn + **/ + function withdraw( + address asset, + uint256 amount, + address to + ) external returns (uint256); + + /** + * @dev Allows users to borrow a specific `amount` of the reserve underlying asset, provided that the borrower + * already deposited enough collateral, or he was given enough allowance by a credit delegator on the + * corresponding debt token (StableDebtToken or VariableDebtToken) + * - E.g. User borrows 100 USDC passing as `onBehalfOf` his own address, receiving the 100 USDC in his wallet + * and 100 stable/variable debt tokens, depending on the `interestRateMode` + * @param asset The address of the underlying asset to borrow + * @param amount The amount to be borrowed + * @param interestRateMode The interest rate mode at which the user wants to borrow: 1 for Stable, 2 for Variable + * @param referralCode Code used to register the integrator originating the operation, for potential rewards. + * 0 if the action is executed directly by the user, without any middle-man + * @param onBehalfOf Address of the user who will receive the debt. Should be the address of the borrower itself + * calling the function if he wants to borrow against his own collateral, or the address of the credit delegator + * if he has been given credit delegation allowance + **/ + function borrow( + address asset, + uint256 amount, + uint256 interestRateMode, + uint16 referralCode, + address onBehalfOf + ) external; + + /** + * @notice Repays a borrowed `amount` on a specific reserve, burning the equivalent debt tokens owned + * - E.g. User repays 100 USDC, burning 100 variable/stable debt tokens of the `onBehalfOf` address + * @param asset The address of the borrowed underlying asset previously borrowed + * @param amount The amount to repay + * - Send the value type(uint256).max in order to repay the whole debt for `asset` on the specific `debtMode` + * @param rateMode The interest rate mode at of the debt the user wants to repay: 1 for Stable, 2 for Variable + * @param onBehalfOf Address of the user who will get his debt reduced/removed. Should be the address of the + * user calling the function if he wants to reduce/remove his own debt, or the address of any other + * other borrower whose debt should be removed + * @return The final amount repaid + **/ + function repay( + address asset, + uint256 amount, + uint256 rateMode, + address onBehalfOf + ) external returns (uint256); + + /** + * @dev Allows a borrower to swap his debt between stable and variable mode, or viceversa + * @param asset The address of the underlying asset borrowed + * @param rateMode The rate mode that the user wants to swap to + **/ + function swapBorrowRateMode(address asset, uint256 rateMode) external; + + /** + * @dev Rebalances the stable interest rate of a user to the current stable rate defined on the reserve. + * - Users can be rebalanced if the following conditions are satisfied: + * 1. Usage ratio is above 95% + * 2. the current deposit APY is below REBALANCE_UP_THRESHOLD * maxVariableBorrowRate, which means that too much has been + * borrowed at a stable rate and depositors are not earning enough + * @param asset The address of the underlying asset borrowed + * @param user The address of the user to be rebalanced + **/ + function rebalanceStableBorrowRate(address asset, address user) external; + + /** + * @dev Allows depositors to enable/disable a specific deposited asset as collateral + * @param asset The address of the underlying asset deposited + * @param useAsCollateral `true` if the user wants to use the deposit as collateral, `false` otherwise + **/ + function setUserUseReserveAsCollateral( + address asset, + bool useAsCollateral + ) external; + + /** + * @dev Function to liquidate a non-healthy position collateral-wise, with Health Factor below 1 + * - The caller (liquidator) covers `debtToCover` amount of debt of the user getting liquidated, and receives + * a proportionally amount of the `collateralAsset` plus a bonus to cover market risk + * @param collateralAsset The address of the underlying asset used as collateral, to receive as result of the liquidation + * @param debtAsset The address of the underlying borrowed asset to be repaid with the liquidation + * @param user The address of the borrower getting liquidated + * @param debtToCover The debt amount of borrowed `asset` the liquidator wants to cover + * @param receiveAToken `true` if the liquidators wants to receive the collateral aTokens, `false` if he wants + * to receive the underlying collateral asset directly + **/ + function liquidationCall( + address collateralAsset, + address debtAsset, + address user, + uint256 debtToCover, + bool receiveAToken + ) external; + + /** + * @dev Allows smartcontracts to access the liquidity of the pool within one transaction, + * as long as the amount taken plus a fee is returned. + * IMPORTANT There are security concerns for developers of flashloan receiver contracts that must be kept into consideration. + * For further details please visit https://developers.aave.com + * @param receiverAddress The address of the contract receiving the funds, implementing the IFlashLoanReceiver interface + * @param assets The addresses of the assets being flash-borrowed + * @param amounts The amounts amounts being flash-borrowed + * @param modes Types of the debt to open if the flash loan is not returned: + * 0 -> Don't open any debt, just revert if funds can't be transferred from the receiver + * 1 -> Open debt at stable rate for the value of the amount flash-borrowed to the `onBehalfOf` address + * 2 -> Open debt at variable rate for the value of the amount flash-borrowed to the `onBehalfOf` address + * @param onBehalfOf The address that will receive the debt in the case of using on `modes` 1 or 2 + * @param params Variadic packed params to pass to the receiver as extra information + * @param referralCode Code used to register the integrator originating the operation, for potential rewards. + * 0 if the action is executed directly by the user, without any middle-man + **/ + function flashLoan( + address receiverAddress, + address[] calldata assets, + uint256[] calldata amounts, + uint256[] calldata modes, + address onBehalfOf, + bytes calldata params, + uint16 referralCode + ) external; + + /** + * @dev Returns the user account data across all the reserves + * @param user The address of the user + * @return totalCollateralETH the total collateral in ETH of the user + * @return totalDebtETH the total debt in ETH of the user + * @return availableBorrowsETH the borrowing power left of the user + * @return currentLiquidationThreshold the liquidation threshold of the user + * @return ltv the loan to value of the user + * @return healthFactor the current health factor of the user + **/ + function getUserAccountData( + address user + ) + external + view + returns ( + uint256 totalCollateralETH, + uint256 totalDebtETH, + uint256 availableBorrowsETH, + uint256 currentLiquidationThreshold, + uint256 ltv, + uint256 healthFactor + ); + + function initReserve( + address reserve, + address aTokenAddress, + address stableDebtAddress, + address variableDebtAddress, + address interestRateStrategyAddress + ) external; + + function setReserveInterestRateStrategyAddress( + address reserve, + address rateStrategyAddress + ) external; + + function setConfiguration(address reserve, uint256 configuration) external; + + /** + * @dev Returns the configuration of the reserve + * @param asset The address of the underlying asset of the reserve + * @return The configuration of the reserve + **/ + function getConfiguration( + address asset + ) external view returns (DataTypes.ReserveConfigurationMap memory); + + /** + * @dev Returns the configuration of the user across all the reserves + * @param user The user address + * @return The configuration of the user + **/ + function getUserConfiguration( + address user + ) external view returns (DataTypes.UserConfigurationMap memory); + + /** + * @dev Returns the normalized income normalized income of the reserve + * @param asset The address of the underlying asset of the reserve + * @return The reserve's normalized income + */ + function getReserveNormalizedIncome( + address asset + ) external view returns (uint256); + + /** + * @dev Returns the normalized variable debt per unit of asset + * @param asset The address of the underlying asset of the reserve + * @return The reserve normalized variable debt + */ + function getReserveNormalizedVariableDebt( + address asset + ) external view returns (uint256); + + /** + * @dev Returns the state and configuration of the reserve + * @param asset The address of the underlying asset of the reserve + * @return The state of the reserve + **/ + function getReserveData( + address asset + ) external view returns (DataTypes.ReserveData memory); + + function finalizeTransfer( + address asset, + address from, + address to, + uint256 amount, + uint256 balanceFromAfter, + uint256 balanceToBefore + ) external; + + function getReservesList() external view returns (address[] memory); + + function getAddressesProvider() + external + view + returns (ILendingPoolAddressesProvider); + + function setPause(bool val) external; + + function paused() external view returns (bool); +} diff --git a/src/interfaces/ILendingPoolAddressesProvider.sol b/src/interfaces/ILendingPoolAddressesProvider.sol new file mode 100644 index 0000000..daab118 --- /dev/null +++ b/src/interfaces/ILendingPoolAddressesProvider.sol @@ -0,0 +1,60 @@ +// SPDX-License-Identifier: agpl-3.0 +pragma solidity ^0.8.0; + +/** + * @title LendingPoolAddressesProvider contract + * @dev Main registry of addresses part of or connected to the protocol, including permissioned roles + * - Acting also as factory of proxies and admin of those, so with right to change its implementations + * - Owned by the Aave Governance + * @author Aave + **/ +interface ILendingPoolAddressesProvider { + event MarketIdSet(string newMarketId); + event LendingPoolUpdated(address indexed newAddress); + event ConfigurationAdminUpdated(address indexed newAddress); + event EmergencyAdminUpdated(address indexed newAddress); + event LendingPoolConfiguratorUpdated(address indexed newAddress); + event LendingPoolCollateralManagerUpdated(address indexed newAddress); + event PriceOracleUpdated(address indexed newAddress); + event LendingRateOracleUpdated(address indexed newAddress); + event ProxyCreated(bytes32 id, address indexed newAddress); + event AddressSet(bytes32 id, address indexed newAddress, bool hasProxy); + + function getMarketId() external view returns (string memory); + + function setMarketId(string calldata marketId) external; + + function setAddress(bytes32 id, address newAddress) external; + + function setAddressAsProxy(bytes32 id, address impl) external; + + function getAddress(bytes32 id) external view returns (address); + + function getLendingPool() external view returns (address); + + function setLendingPoolImpl(address pool) external; + + function getLendingPoolConfigurator() external view returns (address); + + function setLendingPoolConfiguratorImpl(address configurator) external; + + function getLendingPoolCollateralManager() external view returns (address); + + function setLendingPoolCollateralManager(address manager) external; + + function getPoolAdmin() external view returns (address); + + function setPoolAdmin(address admin) external; + + function getEmergencyAdmin() external view returns (address); + + function setEmergencyAdmin(address admin) external; + + function getPriceOracle() external view returns (address); + + function setPriceOracle(address priceOracle) external; + + function getLendingRateOracle() external view returns (address); + + function setLendingRateOracle(address lendingRateOracle) external; +} diff --git a/src/interfaces/IOptionsCompounder.sol b/src/interfaces/IOptionsCompounder.sol new file mode 100644 index 0000000..ab32ed0 --- /dev/null +++ b/src/interfaces/IOptionsCompounder.sol @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: BUSL1.1 + +pragma solidity ^0.8.0; + +import {IOptionsToken} from "./IOptionsToken.sol"; + +/* Errors */ +error OptionsCompounder__NotExerciseContract(); +error OptionsCompounder__TooMuchAssetsLoaned(); +error OptionsCompounder__FlashloanNotProfitableEnough(); +error OptionsCompounder__AssetNotEqualToPaymentToken(); +error OptionsCompounder__FlashloanNotFinished(); +error OptionsCompounder__OnlyStratAllowed(); +error OptionsCompounder__FlashloanNotTriggered(); +error OptionsCompounder__InvalidExchangeType(uint256 exchangeTypes); +error OptionsCompounder__SlippageGreaterThanMax(); +error OptionsCompounder__ParamHasAddressZero(); +error OptionsCompounder__NotEnoughUnderlyingTokens(); +error OptionsCompounder__WrongMinPaymentAmount(); + +interface IOptionsCompounder { + function harvestOTokens(uint256 amount, address exerciseContract, uint256 minWantAmount) external; + + function getOptionTokenAddress() external returns (address); +} diff --git a/src/libraries/DataTypes.sol b/src/libraries/DataTypes.sol new file mode 100644 index 0000000..8f9354a --- /dev/null +++ b/src/libraries/DataTypes.sol @@ -0,0 +1,53 @@ +// SPDX-License-Identifier: agpl-3.0 +pragma solidity ^0.8.0; + +library DataTypes { + // refer to the whitepaper, section 1.1 basic concepts for a formal description of these properties. + struct ReserveData { + //stores the reserve configuration + ReserveConfigurationMap configuration; + //the liquidity index. Expressed in ray + uint128 liquidityIndex; + //variable borrow index. Expressed in ray + uint128 variableBorrowIndex; + //the current supply rate. Expressed in ray + uint128 currentLiquidityRate; + //the current variable borrow rate. Expressed in ray + uint128 currentVariableBorrowRate; + //the current stable borrow rate. Expressed in ray + uint128 currentStableBorrowRate; + uint40 lastUpdateTimestamp; + //tokens addresses + address aTokenAddress; + address stableDebtTokenAddress; + address variableDebtTokenAddress; + //address of the interest rate strategy + address interestRateStrategyAddress; + //the id of the reserve. Represents the position in the list of the active reserves + uint8 id; + } + + struct ReserveConfigurationMap { + //bit 0-15: LTV + //bit 16-31: Liq. threshold + //bit 32-47: Liq. bonus + //bit 48-55: Decimals + //bit 56: Reserve is active + //bit 57: reserve is frozen + //bit 58: borrowing is enabled + //bit 59: stable rate borrowing enabled + //bit 60-63: reserved + //bit 64-79: reserve factor + uint256 data; + } + + struct UserConfigurationMap { + uint256 data; + } + + enum InterestRateMode { + NONE, + STABLE, + VARIABLE + } +} diff --git a/test/Common.sol b/test/Common.sol index 3043853..bdba858 100644 --- a/test/Common.sol +++ b/test/Common.sol @@ -99,6 +99,7 @@ address constant MODE_VELO_USDC_MODE_PAIR = 0x283bA4E204DFcB6381BCBf2cb5d0e765A2 address constant MODE_VELO_WETH_MODE_PAIR = 0x0fba984c97539B3fb49ACDA6973288D0EFA903DB; address constant MODE_VELO_ROUTER = 0x3a63171DD9BebF4D07BC782FECC7eb0b890C2A45; address constant MODE_VELO_FACTORY = 0x31832f2a97Fd20664D76Cc421207669b55CE4BC0; +address constant MODE_ADDRESS_PROVIDER = 0xEDc83309549e36f3c7FD8c2C5C54B4c8e5FA00FC; contract Common is Test { IERC20 nativeToken; @@ -140,6 +141,8 @@ contract Common is Test { OptionsToken optionsTokenProxy; DiscountExercise exerciser; + uint256 maxUnderlyingAmount; + function fixture_setupAccountsAndFees(uint256 fee1, uint256 fee2) public { /* Setup accounts */ owner = makeAddr("owner"); diff --git a/test/ItBsc_OptionsCompounder.t copy.solNOT b/test/ItBsc_OptionsCompounder.t copy.solNOT new file mode 100644 index 0000000..ed73482 --- /dev/null +++ b/test/ItBsc_OptionsCompounder.t copy.solNOT @@ -0,0 +1,187 @@ +// SPDX-License-Identifier: BUSL-1.1 + +pragma solidity ^0.8.13; + +import "./Common.sol"; + +import {BalancerOracle} from "../src/oracles/BalancerOracle.sol"; +import {MockBalancerTwapOracle} from "../test/mocks/MockBalancerTwapOracle.sol"; +import {CErc20I} from "./strategies/interfaces/CErc20I.sol"; +import {Helper} from "./mocks/HelperFunctions.sol"; +import {FixedPointMathLib} from "solmate/utils/FixedPointMathLib.sol"; +import {IAToken} from "./strategies/interfaces/IAToken.sol"; +import {IThenaRamRouter} from "vault-v2/interfaces/IThenaRamRouter.sol"; +import {ReaperStrategyGranary, Externals} from "./strategies/ReaperStrategyGranary.sol"; +import {OptionsCompounder} from "../src/OptionsCompounder.sol"; +import {MockedLendingPool} from "../test/mocks/MockedStrategy.sol"; + +contract OptionsTokenTest is Common { + using FixedPointMathLib for uint256; + + /* Variable assignment (depends on chain) */ + uint256 constant FORK_BLOCK = 36349190; + string MAINNET_URL = vm.envString("BSC_RPC_URL_MAINNET"); + + /* Contract variables */ + OptionsCompounder optionsCompounder; + ReaperStrategyGranary strategy; + Helper helper; + IOracle oracle; + + // string public vaultName = "?_? Vault"; + // string public vaultSymbol = "rf-?_?"; + // uint256 public vaultTvlCap = type(uint256).max; + // address public treasuryAddress = 0xC17DfA7Eb4300871D5f022c107E07F98c750472e; + + // address public optionsTokenAddress = + // 0x45c19a3068642B98F5AEf1dEdE023443cd1FbFAd; + // address public discountExerciseAddress = + // 0x3Fbf4f9cf73162e4e156972540f53Dabe65c2862; + // address public bscTokenAdmin = 0x6eB1fF8E939aFBF3086329B2b32725b72095512C; + + function setUp() public { + /* Common assignments */ + ExchangeType exchangeType = ExchangeType.ThenaRam; + nativeToken = IERC20(BSC_WBNB); + paymentToken = nativeToken; + underlyingToken = IERC20(BSC_HBR); + wantToken = IERC20(BSC_USDT); + thenaRamRouter = IThenaRamRouter(BSC_THENA_ROUTER); + swapRouter = ISwapRouter(BSC_PANCAKE_ROUTER); + univ3Factory = IUniswapV3Factory(BSC_PANCAKE_FACTORY); + addressProvider = BSC_ADDRESS_PROVIDER; + // gWantAddress = BSC_GUSDT; + // dataProvider = BSC_DATA_PROVIDER; + // rewarder = BSC_REWARDER; + + /* Setup network */ + uint256 bscFork = vm.createFork(MAINNET_URL, FORK_BLOCK); + vm.selectFork(bscFork); + + /* Setup accounts */ + fixture_setupAccountsAndFees(3000, 7000); + vm.deal(address(this), AMOUNT * 3); + vm.deal(owner, AMOUNT * 3); + + /* Setup roles */ + address[] memory strategists = new address[](1); + // address[] memory multisigRoles = new address[](3); + // address[] memory keepers = new address[](1); + strategists[0] = strategist; + // multisigRoles[0] = management1; + // multisigRoles[1] = management2; + // multisigRoles[2] = management3; + // keepers[0] = keeper; + + /* Variables */ + SwapProps memory swapProps = fixture_getSwapProps(exchangeType, 200); + + /** + * Contract deployments and configurations *** + */ + helper = new Helper(); + + /* Reaper deployment and configuration */ + reaperSwapper = new ReaperSwapper(); + tmpProxy = new ERC1967Proxy(address(reaperSwapper), ""); + reaperSwapper = ReaperSwapper(address(tmpProxy)); + reaperSwapper.initialize(strategists, address(this), address(this)); + + /* Configure swapper */ + fixture_updateSwapperPaths(exchangeType); + + /* Oracle mocks deployment */ + oracle = fixture_getMockedOracle(exchangeType); + + /* Option token deployment */ + vm.startPrank(owner); + optionsToken = new OptionsToken(); + tmpProxy = new ERC1967Proxy(address(optionsToken), ""); + optionsTokenProxy = OptionsToken(address(tmpProxy)); + optionsTokenProxy.initialize("TIT Call Option Token", "oTIT", tokenAdmin); + /* Exercise contract deployment */ + exerciser = new DiscountExercise(optionsTokenProxy, owner, paymentToken, underlyingToken, oracle, PRICE_MULTIPLIER, treasuries, feeBPS); + /* Add exerciser to the list of options */ + optionsTokenProxy.setExerciseContract(address(exerciser), true); + + /* Strategy deployment */ + strategy = new ReaperStrategyGranary(); + tmpProxy = new ERC1967Proxy(address(strategy), ""); + strategy = ReaperStrategyGranary(address(tmpProxy)); + optionsCompounder = new OptionsCompounder(); + tmpProxy = new ERC1967Proxy(address(optionsCompounder), ""); + optionsCompounder = OptionsCompounder(address(tmpProxy)); + MockedLendingPool addressProviderAndLendingPoolMock = new MockedLendingPool(address(optionsCompounder)); + optionsCompounder.initialize( + address(optionsTokenProxy), address(addressProviderAndLendingPoolMock), address(reaperSwapper), swapProps, oracle + ); + + // ReaperVaultV2 vault = new ReaperVaultV2( + // address(wantToken), + // vaultName, + // vaultSymbol, + // vaultTvlCap, + // treasuryAddress, + // strategists, + // multisigRoles + // ); + // Externals memory externals = Externals( + // address(vault), + // address(reaperSwapper), + // addressProvider, + // dataProvider, + // rewarder, + // address(optionsCompounder), + // address(exerciser) + // ); + // strategy.initialize( + // externals, + // strategists, + // multisigRoles, + // keepers, + // IAToken(gWantAddress), + // targetLtv, + // maxLtv + // ); + vm.stopPrank(); + + /* Prepare EOA and contracts for tests */ + helper.wrapEth{value: AMOUNT * 2}(address(nativeToken)); + + MinAmountOutData memory minAmountOutData = MinAmountOutData(MinAmountOutKind.Absolute, 0); + paymentToken.approve(address(reaperSwapper), AMOUNT); + reaperSwapper.swapThenaRam( + address(paymentToken), address(underlyingToken), AMOUNT, minAmountOutData, address(thenaRamRouter), type(uint256).max, false + ); + uint256 underlyingBalance = underlyingToken.balanceOf(address(this)); + paymentToken.transfer(address(addressProviderAndLendingPoolMock), paymentToken.balanceOf(address(this))); + underlyingToken.transfer(address(exerciser), underlyingBalance); + + /* Set up contracts */ + paymentToken.approve(address(exerciser), type(uint256).max); + } + + function test_bscFlashloanPositiveScenario(uint256 amount) public { + /* Test vectors definition */ + amount = bound(amount, MIN_OATH_FOR_FUZZING, underlyingToken.balanceOf(address(exerciser))); + uint256 minAmount = 5; + + /* Prepare option tokens - distribute them to the specified strategy + and approve for spending */ + fixture_prepareOptionToken(amount, address(optionsCompounder), address(this), optionsTokenProxy, tokenAdmin); + + /* Check balances before compounding */ + uint256 paymentTokenBalance = paymentToken.balanceOf(address(optionsCompounder)); + + // vm.startPrank(address(strategy)); + /* already approved in fixture_prepareOptionToken */ + // uint256 _balance = optionsTokenProxy.balanceOf(address(optionsCompounder)); + optionsCompounder.harvestOTokens(amount, address(exerciser), minAmount); + // vm.stopPrank(); + + /* Assertions */ + assertGt(paymentToken.balanceOf(address(this)), paymentTokenBalance + minAmount, "Gain not greater than 0"); + assertEq(optionsTokenProxy.balanceOf(address(optionsCompounder)), 0, "Options token balance in compounder is 0"); + assertEq(paymentToken.balanceOf(address(optionsCompounder)), 0, "Payment token balance in compounder is 0"); + } +} diff --git a/test/ItBscOptionsToken.t.solNOT b/test/ItBsc_OptionsToken.t.solNOT similarity index 100% rename from test/ItBscOptionsToken.t.solNOT rename to test/ItBsc_OptionsToken.t.solNOT diff --git a/test/ItMode_OptionsCompounder.t.sol b/test/ItMode_OptionsCompounder.t.sol new file mode 100644 index 0000000..0d44863 --- /dev/null +++ b/test/ItMode_OptionsCompounder.t.sol @@ -0,0 +1,296 @@ +// SPDX-License-Identifier: BUSL-1.1 + +pragma solidity ^0.8.13; + +import "./Common.sol"; + +import {BalancerOracle} from "../src/oracles/BalancerOracle.sol"; +import {MockBalancerTwapOracle} from "../test/mocks/MockBalancerTwapOracle.sol"; +// import {CErc20I} from "./strategies/interfaces/CErc20I.sol"; +// import {Helper} from "./mocks/HelperFunctions.sol"; +import {FixedPointMathLib} from "solmate/utils/FixedPointMathLib.sol"; +// import {IAToken} from "./strategies/interfaces/IAToken.sol"; +// import {ReaperStrategyGranary, Externals} from "./strategies/ReaperStrategyGranary.sol"; +import {OptionsCompounder} from "../src/OptionsCompounder.sol"; +// import {MockedLendingPool} from "../test/mocks/MockedStrategy.sol"; +import {ReaperSwapper, MinAmountOutData, MinAmountOutKind, IVeloRouter, ISwapRouter, UniV3SwapData} from "vault-v2/ReaperSwapper.sol"; + +contract ItModeOptionsCompounder is Common { + using FixedPointMathLib for uint256; + + /* Variable assignment (depends on chain) */ + uint256 constant FORK_BLOCK = 9260950; + string MAINNET_URL = vm.envString("MODE_RPC_URL"); + + /* Contract variables */ + OptionsCompounder optionsCompounder; + // ReaperStrategyGranary strategy; + IOracle oracle; + + // string public vaultName = "?_? Vault"; + // string public vaultSymbol = "rf-?_?"; + // uint256 public vaultTvlCap = type(uint256).max; + // address public treasuryAddress = 0xC17DfA7Eb4300871D5f022c107E07F98c750472e; + + // address public optionsTokenAddress = + // 0x45c19a3068642B98F5AEf1dEdE023443cd1FbFAd; + // address public discountExerciseAddress = + // 0x3Fbf4f9cf73162e4e156972540f53Dabe65c2862; + // address public bscTokenAdmin = 0x6eB1fF8E939aFBF3086329B2b32725b72095512C; + + function setUp() public { + /* Common assignments */ + ExchangeType exchangeType = ExchangeType.VeloSolid; + nativeToken = IERC20(MODE_WETH); + paymentToken = IERC20(MODE_MODE); + underlyingToken = IERC20(MODE_WETH); + addressProvider = MODE_ADDRESS_PROVIDER; + // wantToken = IERC20(OP_OP); + // paymentUnderlyingBpt = OP_OATHV2_ETH_BPT; + // paymentWantBpt = OP_WETH_OP_USDC_BPT; + // balancerVault = OP_BEETX_VAULT; + // swapRouter = ISwapRouter(OP_BEETX_VAULT); + // univ3Factory = IUniswapV3Factory(OP_UNIV3_FACTORY); + veloRouter = IVeloRouter(MODE_VELO_ROUTER); + veloFactory = MODE_VELO_FACTORY; + + /* Setup network */ + uint256 fork = vm.createFork(MAINNET_URL, FORK_BLOCK); + vm.selectFork(fork); + + /* Setup accounts */ + fixture_setupAccountsAndFees(3000, 7000); + vm.deal(address(this), AMOUNT * 3); + vm.deal(owner, AMOUNT * 3); + + /* Setup roles */ + address[] memory strategists = new address[](1); + // address[] memory multisigRoles = new address[](3); + // address[] memory keepers = new address[](1); + strategists[0] = strategist; + // multisigRoles[0] = management1; + // multisigRoles[1] = management2; + // multisigRoles[2] = management3; + // keepers[0] = keeper; + + /* Variables */ + + /** + * Contract deployments and configurations *** + */ + + /* Reaper deployment and configuration */ + reaperSwapper = new ReaperSwapper(); + tmpProxy = new ERC1967Proxy(address(reaperSwapper), ""); + reaperSwapper = ReaperSwapper(address(tmpProxy)); + reaperSwapper.initialize(strategists, address(this), address(this)); + + /* Configure swapper */ + fixture_updateSwapperPaths(exchangeType); + + /* Oracle mocks deployment */ + oracle = fixture_getMockedOracle(exchangeType); + + /* Option token deployment */ + vm.startPrank(owner); + optionsToken = new OptionsToken(); + tmpProxy = new ERC1967Proxy(address(optionsToken), ""); + optionsTokenProxy = OptionsToken(address(tmpProxy)); + optionsTokenProxy.initialize("TIT Call Option Token", "oTIT", tokenAdmin); + + /* Exercise contract deployment */ + SwapProps memory swapProps = fixture_getSwapProps(exchangeType, 200); + uint256 minAmountToTriggerSwap = 1e5; + exerciser = new DiscountExercise( + optionsTokenProxy, + owner, + paymentToken, + underlyingToken, + oracle, + PRICE_MULTIPLIER, + INSTANT_EXIT_FEE, + minAmountToTriggerSwap, + treasuries, + feeBPS, + swapProps + ); + /* Add exerciser to the list of options */ + + optionsTokenProxy.setExerciseContract(address(exerciser), true); + + /* Strategy deployment */ + // strategy = new ReaperStrategyGranary(); + // tmpProxy = new ERC1967Proxy(address(strategy), ""); + // strategy = ReaperStrategyGranary(address(tmpProxy)); + optionsCompounder = new OptionsCompounder(); + tmpProxy = new ERC1967Proxy(address(optionsCompounder), ""); + optionsCompounder = OptionsCompounder(address(tmpProxy)); + // MockedLendingPool addressProviderAndLendingPoolMock = new MockedLendingPool(address(optionsCompounder)); + console.log("Initializing..."); + optionsCompounder.initialize(address(optionsTokenProxy), address(addressProvider), address(reaperSwapper), swapProps, oracle); + + vm.stopPrank(); + + /* Prepare EOA and contracts for tests */ + console.log("Dealing payment token.."); + uint256 maxPaymentAmount = AMOUNT * 2; + deal(address(nativeToken), address(this), maxPaymentAmount); + + console.log("Calculation max amount of underlying.."); + maxUnderlyingAmount = maxPaymentAmount.divWadUp(oracle.getPrice()); + console.log("Max underlying amount to distribute: ", maxUnderlyingAmount); + deal(address(underlyingToken), address(exerciser), maxUnderlyingAmount); + underlyingToken.transfer(address(exerciser), maxUnderlyingAmount); + + /* Set up contracts */ + paymentToken.approve(address(exerciser), type(uint256).max); + } + + function test_modeFlashloanPositiveScenario(uint256 amount) public { + console.log("test_modeFlashloanPositiveScenario"); + /* Test vectors definition */ + amount = bound(amount, maxUnderlyingAmount / 10, underlyingToken.balanceOf(address(exerciser))); + uint256 minAmount = 5; + + /* Prepare option tokens - distribute them to the specified strategy + and approve for spending */ + fixture_prepareOptionToken(amount, address(optionsCompounder), address(this), optionsTokenProxy, tokenAdmin); + + /* Check balances before compounding */ + uint256 paymentTokenBalance = paymentToken.balanceOf(address(optionsCompounder)); + + // vm.startPrank(address(strategy)); + /* already approved in fixture_prepareOptionToken */ + // uint256 _balance = optionsTokenProxy.balanceOf(address(optionsCompounder)); + optionsCompounder.harvestOTokens(amount, address(exerciser), minAmount); + // vm.stopPrank(); + + /* Assertions */ + assertGt(paymentToken.balanceOf(address(this)), paymentTokenBalance + minAmount, "Gain not greater than 0"); + assertEq(optionsTokenProxy.balanceOf(address(optionsCompounder)), 0, "Options token balance in compounder is 0"); + assertEq(paymentToken.balanceOf(address(optionsCompounder)), 0, "Payment token balance in compounder is 0"); + } + + function test_accessControlFunctionsChecks(address hacker, address randomOption, uint256 amount) public { + /* Test vectors definition */ + amount = bound(amount, maxUnderlyingAmount / 10, underlyingToken.balanceOf(address(exerciser))); + vm.assume(randomOption != address(0)); + vm.assume(hacker != owner); + address addressProvider = makeAddr("AddressProvider"); + SwapProps memory swapProps = SwapProps(address(reaperSwapper), address(swapRouter), ExchangeType.UniV3, 200); + /* Hacker tries to perform harvest */ + vm.startPrank(hacker); + // vm.expectRevert(bytes4(keccak256("OptionsCompounder__OnlyStratAllowed()"))); + // optionsCompounder.harvestOTokens(amount, address(exerciser), NON_ZERO_PROFIT); + + /* Hacker tries to manipulate contract configuration */ + vm.expectRevert("Ownable: caller is not the owner"); + optionsCompounder.setOptionToken(randomOption); + + vm.expectRevert("Ownable: caller is not the owner"); + optionsCompounder.setSwapProps(swapProps); + + vm.expectRevert("Ownable: caller is not the owner"); + optionsCompounder.setOracle(oracle); + + vm.expectRevert("Ownable: caller is not the owner"); + optionsCompounder.setAddressProvider(addressProvider); + vm.stopPrank(); + + /* Admin tries to set different option token */ + vm.startPrank(owner); + optionsCompounder.setOptionToken(randomOption); + vm.stopPrank(); + assertEq(address(optionsCompounder.getOptionTokenAddress()), randomOption); + } + + function test_flashloanNegativeScenario_highTwapValueAndMultiplier(uint256 amount) public { + address strategy = makeAddr("Strategy"); + /* Test vectors definition */ + amount = bound(amount, maxUnderlyingAmount / 10, underlyingToken.balanceOf(address(exerciser))); + + /* Prepare option tokens - distribute them to the specified strategy + and approve for spending */ + fixture_prepareOptionToken(amount, address(optionsCompounder), strategy, optionsTokenProxy, tokenAdmin); + + /* Decrease option discount in order to make redemption not profitable */ + /* Notice: Multiplier must be higher than denom because of oracle inaccuracy (initTwap) or just change initTwap */ + vm.startPrank(owner); + exerciser.setMultiplier(9999); + vm.stopPrank(); + /* Increase TWAP price to make flashloan not profitable */ + // underlyingPaymentMock.setTwapValue(initTwap + ((initTwap * 10) / 100)); + + /* Notice: additional protection is in exerciser: Exercise__SlippageTooHigh */ + vm.expectRevert(bytes4(keccak256("OptionsCompounder__FlashloanNotProfitableEnough()"))); + + vm.startPrank(strategy); + /* Already approved in fixture_prepareOptionToken */ + optionsCompounder.harvestOTokens(amount, address(exerciser), NON_ZERO_PROFIT); + vm.stopPrank(); + } + + function test_flashloanNegativeScenario_tooHighMinAmounOfWantExpected(uint256 amount, uint256 minAmountOfPayment) public { + address strategy = makeAddr("Strategy"); + /* Test vectors definition */ + amount = bound(amount, maxUnderlyingAmount / 10, underlyingToken.balanceOf(address(exerciser))); + /* Decrease option discount in order to make redemption not profitable */ + /* Notice: Multiplier must be higher than denom because of oracle inaccuracy (initTwap) or just change initTwap */ + vm.startPrank(owner); + exerciser.setMultiplier(9000); + vm.stopPrank(); + /* Too high expectation of profit - together with high exerciser multiplier makes flashloan not profitable */ + uint256 paymentAmount = exerciser.getPaymentAmount(amount); + + minAmountOfPayment = bound(minAmountOfPayment, 1e22, UINT256_MAX - paymentAmount); + + /* Prepare option tokens - distribute them to the specified strategy + and approve for spending */ + fixture_prepareOptionToken(amount, address(optionsCompounder), address(this), optionsTokenProxy, tokenAdmin); + + /* Notice: additional protection is in exerciser: Exercise__SlippageTooHigh */ + vm.expectRevert(bytes4(keccak256("OptionsCompounder__FlashloanNotProfitableEnough()"))); + /* Already approved in fixture_prepareOptionToken */ + // vm.startPrank(strategy); + optionsCompounder.harvestOTokens(amount, address(exerciser), minAmountOfPayment); + // vm.stopPrank(); + } + + function test_callExecuteOperationWithoutFlashloanTrigger(uint256 amount, address executor) public { + address strategy = makeAddr("Strategy"); + /* Test vectors definition */ + amount = bound(amount, maxUnderlyingAmount / 10, underlyingToken.balanceOf(address(exerciser))); + + /* Argument creation */ + address[] memory assets = new address[](1); + assets[0] = address(paymentToken); + uint256[] memory amounts = new uint256[](1); + amounts[0] = DiscountExercise(exerciser).getPaymentAmount(amount); + uint256[] memory premiums = new uint256[](1); + bytes memory params; + + vm.startPrank(executor); + /* Assertion */ + vm.expectRevert(bytes4(keccak256("OptionsCompounder__FlashloanNotTriggered()"))); + optionsCompounder.executeOperation(assets, amounts, premiums, msg.sender, params); + vm.stopPrank(); + } + + function test_harvestCallWithWrongExerciseContract(uint256 amount, address fuzzedExerciser) public { + address strategy = makeAddr("Strategy"); + /* Test vectors definition */ + amount = bound(amount, maxUnderlyingAmount / 10, underlyingToken.balanceOf(address(exerciser))); + + vm.assume(fuzzedExerciser != address(exerciser)); + + /* Prepare option tokens - distribute them to the specified strategy + and approve for spending */ + fixture_prepareOptionToken(amount, address(optionsCompounder), strategy, optionsTokenProxy, tokenAdmin); + + vm.startPrank(strategy); + /* Assertion */ + vm.expectRevert(bytes4(keccak256("OptionsCompounder__NotExerciseContract()"))); + optionsCompounder.harvestOTokens(amount, fuzzedExerciser, NON_ZERO_PROFIT); + vm.stopPrank(); + } +} diff --git a/test/ItModeOptionsToken.t.sol b/test/ItMode_OptionsToken.t.sol similarity index 98% rename from test/ItModeOptionsToken.t.sol rename to test/ItMode_OptionsToken.t.sol index fea2358..25f4ce0 100644 --- a/test/ItModeOptionsToken.t.sol +++ b/test/ItMode_OptionsToken.t.sol @@ -24,7 +24,6 @@ contract ModeOptionsTokenTest is Test, Common { uint256 constant FORK_BLOCK = 9260950; string MAINNET_URL = vm.envString("MODE_RPC_URL"); uint256 constant ORACLE_INIT_TWAP_VALUE = 1e19; - uint128 constant ORACLE_MIN_PRICE_DENOM = 10000; address[] feeRecipients_; uint256[] feeBPS_; @@ -89,7 +88,7 @@ contract ModeOptionsTokenTest is Test, Common { balancerTwapOracle = new MockBalancerTwapOracle(tokens); console.log(tokens[0], tokens[1]); - oracle = new ThenaOracle(IThenaPair(MODE_VELO_WETH_MODE_PAIR), address(underlyingToken), owner, ORACLE_SECS, ORACLE_MIN_PRICE_DENOM); + oracle = new ThenaOracle(IThenaPair(MODE_VELO_WETH_MODE_PAIR), address(underlyingToken), owner, ORACLE_SECS, uint128(ORACLE_MIN_PRICE_DENOM)); exerciser = new DiscountExercise( optionsToken, owner, diff --git a/test/ItOp_OptionsCompounder.t.solNOT b/test/ItOp_OptionsCompounder.t.solNOT new file mode 100644 index 0000000..471def8 --- /dev/null +++ b/test/ItOp_OptionsCompounder.t.solNOT @@ -0,0 +1,415 @@ +// SPDX-License-Identifier: BUSL-1.1 + +pragma solidity ^0.8.13; + +import "./Common.sol"; + +// import {ReaperStrategySonne} from "./strategies/ReaperStrategySonne.sol"; +// import {ReaperStrategyGranary} from "./strategies/ReaperStrategyGranary.sol"; +import {CErc20I} from "./strategies/interfaces/CErc20I.sol"; +import {OptionsToken} from "optionsToken/src/OptionsToken.sol"; +import {Helper} from "./mocks/HelperFunctions.sol"; +import {FixedPointMathLib} from "solmate/utils/FixedPointMathLib.sol"; +import {IERC20} from "oz/token/ERC20/IERC20.sol"; +import {IAToken} from "./strategies/interfaces/IAToken.sol"; +import {IOracle} from "optionsToken/src/interfaces/IOracle.sol"; +import {OptionsCompounder} from "../src/OptionsCompounder.sol"; +import {MockedLendingPool} from "../test/mocks/MockedStrategy.sol"; + +contract OptionsTokenTest is Common { + using FixedPointMathLib for uint256; + + /* Variable assignment (depends on chain) */ + uint256 FORK_BLOCK = 115072010; + string MAINNET_URL = vm.envString("OP_RPC_URL_MAINNET"); + + /* Contract variables */ + OptionsCompounder optionsCompounder; + IOracle underlyingPaymentOracle; + UniswapV3Oracle paymentWantOracle; + address strategy = makeAddr("strategy"); + Helper helper; + uint256 initTwap; + IOracle oracle; + + /* Functions */ + function setUp() public { + /* Common assignments */ + ExchangeType exchangeType = ExchangeType.Bal; + nativeToken = IERC20(OP_WETH); + paymentToken = nativeToken; + underlyingToken = IERC20(OP_OATHV2); + wantToken = IERC20(OP_OP); + paymentUnderlyingBpt = OP_OATHV2_ETH_BPT; + paymentWantBpt = OP_WETH_OP_USDC_BPT; + balancerVault = OP_BEETX_VAULT; + swapRouter = ISwapRouter(OP_BEETX_VAULT); + univ3Factory = IUniswapV3Factory(OP_UNIV3_FACTORY); + + /* Setup network */ + uint256 optimismFork = vm.createFork(MAINNET_URL, FORK_BLOCK); + vm.selectFork(optimismFork); + + /* Setup accounts */ + fixture_setupAccountsAndFees(2500, 7500); + vm.deal(address(this), AMOUNT * 3); + vm.deal(owner, AMOUNT * 3); + + /* Setup roles */ + address[] memory strategists = new address[](1); + // address[] memory multisigRoles = new address[](3); + // address[] memory keepers = new address[](1); + strategists[0] = strategist; + // multisigRoles[0] = management1; + // multisigRoles[1] = management2; + // multisigRoles[2] = management3; + // keepers[0] = keeper; + + /* Variables */ + SwapProps memory swapProps = fixture_getSwapProps(exchangeType, 500); + + /**** Contract deployments and configurations ****/ + helper = new Helper(); + + /* Reaper deployment and configuration */ + reaperSwapper = new ReaperSwapper(); + tmpProxy = new ERC1967Proxy(address(reaperSwapper), ""); + reaperSwapper = ReaperSwapper(address(tmpProxy)); + reaperSwapper.initialize(strategists, address(this), address(this)); + + /* Configure swapper */ + fixture_updateSwapperPaths(exchangeType); + + /* Oracle mocks deployment */ + oracle = fixture_getMockedOracle(exchangeType); + + /* Option token deployment */ + vm.startPrank(owner); + optionsToken = new OptionsToken(); + tmpProxy = new ERC1967Proxy(address(optionsToken), ""); + optionsTokenProxy = OptionsToken(address(tmpProxy)); + optionsTokenProxy.initialize( + "TIT Call Option Token", + "oTIT", + tokenAdmin + ); + /* Exercise contract deployment */ + exerciser = new DiscountExercise( + optionsTokenProxy, + owner, + paymentToken, + underlyingToken, + oracle, + PRICE_MULTIPLIER, + treasuries, + feeBPS + ); + /* Add exerciser to the list of options */ + optionsTokenProxy.setExerciseContract(address(exerciser), true); + + /* Deployment */ + optionsCompounder = new OptionsCompounder(); + tmpProxy = new ERC1967Proxy(address(optionsCompounder), ""); + optionsCompounder = OptionsCompounder(address(tmpProxy)); + MockedLendingPool addressProviderAndLendingPoolMock = new MockedLendingPool( + address(optionsCompounder) + ); + optionsCompounder.initialize( + address(optionsTokenProxy), + address(addressProviderAndLendingPoolMock), + address(reaperSwapper), + swapProps, + oracle + ); + vm.stopPrank(); + + /* Prepare EOA and contracts for tests */ + helper.wrapEth{value: AMOUNT * 2}(address(nativeToken)); + + MinAmountOutData memory minAmountOutData = MinAmountOutData( + MinAmountOutKind.Absolute, + 0 + ); + paymentToken.approve(address(reaperSwapper), AMOUNT); + reaperSwapper.swapBal( + address(paymentToken), + address(underlyingToken), + AMOUNT, + minAmountOutData, + OP_BEETX_VAULT + ); + uint256 underlyingBalance = underlyingToken.balanceOf(address(this)); + paymentToken.transfer( + address(addressProviderAndLendingPoolMock), + paymentToken.balanceOf(address(this)) + ); + initTwap = AMOUNT.mulDivUp(1e18, underlyingBalance); // Inaccurate solution but it is not crucial to have real accurate oracle price + underlyingToken.transfer(address(exerciser), underlyingBalance); + + /* Set up contracts - added here to calculate initTwap after swap */ + underlyingPaymentMock.setTwapValue(initTwap); + paymentToken.approve(address(exerciser), type(uint256).max); + } + + function test_flashloanPositiveScenario(uint256 amount) public { + /* Test vectors definition */ + amount = bound( + amount, + MIN_OATH_FOR_FUZZING, + underlyingToken.balanceOf(address(exerciser)) + ); + uint256 minAmount = 200; + /* Prepare option tokens - distribute them to the specified strategy + and approve for spending */ + fixture_prepareOptionToken( + amount, + address(optionsCompounder), + strategy, + optionsTokenProxy, + tokenAdmin + ); + + /* Check balances before compounding */ + uint256 paymentTokenBalance = paymentToken.balanceOf( + address(optionsCompounder) + ); + + vm.startPrank(strategy); + /* already approved in fixture_prepareOptionToken */ + optionsCompounder.harvestOTokens( + amount, + address(exerciser), + NON_ZERO_PROFIT + ); + vm.stopPrank(); + + /* Assertions */ + assertGt( + paymentToken.balanceOf(strategy), + paymentTokenBalance + minAmount, + "Gain not greater than 0" + ); + assertEq( + optionsTokenProxy.balanceOf(address(optionsCompounder)), + 0, + "Options token balance in compounder is 0" + ); + assertEq( + paymentToken.balanceOf(address(optionsCompounder)), + 0, + "Payment token balance in compounder is 0" + ); + } + + function test_accessControlFunctionsChecks( + address hacker, + address randomOption, + uint256 amount + ) public { + /* Test vectors definition */ + amount = bound( + amount, + MIN_OATH_FOR_FUZZING, + underlyingToken.balanceOf(address(exerciser)) + ); + vm.assume(randomOption != address(0)); + vm.assume(hacker != owner); + SwapProps memory swapProps = SwapProps( + address(swapRouter), + ExchangeType.UniV3, + 200 + ); + /* Hacker tries to perform harvest */ + vm.startPrank(hacker); + // vm.expectRevert(bytes4(keccak256("OptionsCompounder__OnlyStratAllowed()"))); + // optionsCompounder.harvestOTokens(amount, address(exerciser), NON_ZERO_PROFIT); + + /* Hacker tries to manipulate contract configuration */ + vm.expectRevert("Ownable: caller is not the owner"); + optionsCompounder.setOptionToken(randomOption); + + vm.expectRevert("Ownable: caller is not the owner"); + optionsCompounder.configSwapProps(swapProps); + + vm.expectRevert("Ownable: caller is not the owner"); + optionsCompounder.setOracle(oracle); + + vm.expectRevert("Ownable: caller is not the owner"); + optionsCompounder.setAddressProvider(strategy); + vm.stopPrank(); + + /* Admin tries to set different option token */ + vm.startPrank(owner); + optionsCompounder.setOptionToken(randomOption); + vm.stopPrank(); + assertEq( + address(optionsCompounder.getOptionTokenAddress()), + randomOption + ); + } + + function test_flashloanNegativeScenario_highTwapValueAndMultiplier( + uint256 amount + ) public { + /* Test vectors definition */ + amount = bound( + amount, + MIN_OATH_FOR_FUZZING, + 1000 * MIN_OATH_FOR_FUZZING + ); + + /* Prepare option tokens - distribute them to the specified strategy + and approve for spending */ + fixture_prepareOptionToken( + amount, + address(optionsCompounder), + strategy, + optionsTokenProxy, + tokenAdmin + ); + + /* Decrease option discount in order to make redemption not profitable */ + /* Notice: Multiplier must be higher than denom because of oracle inaccuracy (initTwap) or just change initTwap */ + vm.startPrank(owner); + exerciser.setMultiplier(9999); + vm.stopPrank(); + /* Increase TWAP price to make flashloan not profitable */ + underlyingPaymentMock.setTwapValue(initTwap + ((initTwap * 10) / 100)); + + /* Notice: additional protection is in exerciser: Exercise__SlippageTooHigh */ + vm.expectRevert( + bytes4( + keccak256("OptionsCompounder__FlashloanNotProfitableEnough()") + ) + ); + + vm.startPrank(strategy); + /* Already approved in fixture_prepareOptionToken */ + optionsCompounder.harvestOTokens( + amount, + address(exerciser), + NON_ZERO_PROFIT + ); + vm.stopPrank(); + } + + function test_flashloanNegativeScenario_tooHighMinAmounOfWantExpected( + uint256 amount, + uint256 minAmountOfPayment + ) public { + /* Test vectors definition */ + amount = bound( + amount, + MIN_OATH_FOR_FUZZING, + underlyingToken.balanceOf(address(exerciser)) + ); + /* Decrease option discount in order to make redemption not profitable */ + /* Notice: Multiplier must be higher than denom because of oracle inaccuracy (initTwap) or just change initTwap */ + vm.startPrank(owner); + exerciser.setMultiplier(9000); + vm.stopPrank(); + /* Too high expectation of profit - together with high exerciser multiplier makes flashloan not profitable */ + uint256 paymentAmount = exerciser.getPaymentAmount(amount); + + minAmountOfPayment = bound( + minAmountOfPayment, + 1e22, + UINT256_MAX - paymentAmount + ); + + /* Prepare option tokens - distribute them to the specified strategy + and approve for spending */ + fixture_prepareOptionToken( + amount, + address(optionsCompounder), + address(this), + optionsTokenProxy, + tokenAdmin + ); + + /* Notice: additional protection is in exerciser: Exercise__SlippageTooHigh */ + vm.expectRevert( + bytes4( + keccak256("OptionsCompounder__FlashloanNotProfitableEnough()") + ) + ); + /* Already approved in fixture_prepareOptionToken */ + // vm.startPrank(strategy); + optionsCompounder.harvestOTokens( + amount, + address(exerciser), + minAmountOfPayment + ); + // vm.stopPrank(); + } + + function test_callExecuteOperationWithoutFlashloanTrigger( + uint256 amount, + address executor + ) public { + /* Test vectors definition */ + amount = bound( + amount, + MIN_OATH_FOR_FUZZING, + underlyingToken.balanceOf(address(exerciser)) + ); + + /* Argument creation */ + address[] memory assets = new address[](1); + assets[0] = address(paymentToken); + uint256[] memory amounts = new uint256[](1); + amounts[0] = DiscountExercise(exerciser).getPaymentAmount(amount); + uint256[] memory premiums = new uint256[](1); + bytes memory params; + + vm.startPrank(executor); + /* Assertion */ + vm.expectRevert( + bytes4(keccak256("OptionsCompounder__FlashloanNotTriggered()")) + ); + optionsCompounder.executeOperation( + assets, + amounts, + premiums, + msg.sender, + params + ); + vm.stopPrank(); + } + + function test_harvestCallWithWrongExerciseContract( + uint256 amount, + address fuzzedExerciser + ) public { + /* Test vectors definition */ + amount = bound( + amount, + MIN_OATH_FOR_FUZZING, + underlyingToken.balanceOf(address(exerciser)) + ); + + vm.assume(fuzzedExerciser != address(exerciser)); + + /* Prepare option tokens - distribute them to the specified strategy + and approve for spending */ + fixture_prepareOptionToken( + amount, + address(optionsCompounder), + strategy, + optionsTokenProxy, + tokenAdmin + ); + + vm.startPrank(strategy); + /* Assertion */ + vm.expectRevert( + bytes4(keccak256("OptionsCompounder__NotExerciseContract()")) + ); + optionsCompounder.harvestOTokens( + amount, + fuzzedExerciser, + NON_ZERO_PROFIT + ); + vm.stopPrank(); + } +} diff --git a/test/ItOpOptionsToken.t.solNOT b/test/ItOp_OptionsToken.t.solNOT similarity index 100% rename from test/ItOpOptionsToken.t.solNOT rename to test/ItOp_OptionsToken.t.solNOT From 6d8c60a3692e4a6614722defd12adfa10ea2a305 Mon Sep 17 00:00:00 2001 From: xRave110 Date: Wed, 3 Jul 2024 15:09:12 +0200 Subject: [PATCH 55/64] Changes for deployment --- hardhat.config.ts | 3 +- scripts/config.json | 23 +++++++ scripts/deploy.ts | 100 ++++++++++++++++++++++++---- src/OptionsCompounder.sol | 2 +- test/ItMode_OptionsCompounder.t.sol | 12 ---- 5 files changed, 112 insertions(+), 28 deletions(-) create mode 100644 scripts/config.json diff --git a/hardhat.config.ts b/hardhat.config.ts index f54029d..5a48c4b 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -11,6 +11,7 @@ import { config as dotenvConfig } from "dotenv"; // import "@nomiclabs/hardhat-ethers"; import "@nomicfoundation/hardhat-verify"; +import "hardhat-contract-sizer"; dotenvConfig(); @@ -20,7 +21,7 @@ const config: HardhatUserConfig = { solidity: { version: "0.8.19", settings: { - optimizer: { enabled: true, runs: 9999 } + optimizer: { enabled: true, runs: 200 } } }, sourcify: { diff --git a/scripts/config.json b/scripts/config.json new file mode 100644 index 0000000..3bbd012 --- /dev/null +++ b/scripts/config.json @@ -0,0 +1,23 @@ +{ + "VERSION": "1.0.0", + "OWNER": "0xF29dA3595351dBFd0D647857C46F8D63Fc2e68C5", + "ORACLE_SOURCE": "0x0fba984c97539B3fb49ACDA6973288D0EFA903DB", + "ORACLE_SECS": 1800, + "ORACLE_MIN_PRICE": 10000000, + "OT_NAME": "ICL Call Option Token", + "OT_SYMBOL": "oICL", + "OT_PAYMENT_TOKEN": "0xDfc7C877a950e49D2610114102175A06C2e3167a", + "OT_UNDERLYING_TOKEN": "0x4200000000000000000000000000000000000006", + "OT_TOKEN_ADMIN": "0xF29dA3595351dBFd0D647857C46F8D63Fc2e68C5", + "MULTIPLIER": 5000, + "FEE_RECIPIENTS": [ + "0xF29dA3595351dBFd0D647857C46F8D63Fc2e68C5", + "0xd93E25A8B1D645b15f8c736E1419b4819Ff9e6EF" + ], + "FEE_BPS": [ + 1000, + 9000 + ], + "INSTANT_EXIT_FEE": 1000, + "MIN_AMOUNT_TO_TRIGGER_SWAP": 1e15 +} \ No newline at end of file diff --git a/scripts/deploy.ts b/scripts/deploy.ts index ba79ada..e111007 100644 --- a/scripts/deploy.ts +++ b/scripts/deploy.ts @@ -1,13 +1,47 @@ import { ethers, upgrades } from "hardhat"; import { getImplementationAddress } from '@openzeppelin/upgrades-core'; +import config from './config.json'; async function main() { - const thenaPair = process.env.ORACLE_SOURCE; - const targetToken = process.env.OT_UNDERLYING_TOKEN; - const owner = process.env.OWNER; - const secs = process.env.ORACLE_SECS; - const minPrice = process.env.ORACLE_MIN_PRICE; - + const thenaPair = config.ORACLE_SOURCE; + const targetToken = config.OT_UNDERLYING_TOKEN; + const owner = config.OWNER; + const secs = config.ORACLE_SECS; + const minPrice = config.ORACLE_MIN_PRICE; + + const strategists: string[] = [ + "0x1E71AEE6081f62053123140aacC7a06021D77348", // bongo + "0x81876677843D00a7D792E1617459aC2E93202576", // degenicus + "0x4C3490dF15edFa178333445ce568EC6D99b5d71c", // eidolon + "0xb26cd6633db6b0c9ae919049c1437271ae496d15", // zokunei + "0x60BC5E0440C867eEb4CbcE84bB1123fad2b262B1", // goober + ]; + const multisigRoles: string[] = [ + "0x90c75c11735A7eeeD06E993fC7aF6838d86A1Ba7", // super admin + "0xC17DfA7Eb4300871D5f022c107E07F98c750472e", // admin + "0x30d65Ae22BBbe44208Dd8964DDE31Def0Fc1B9ee", // guardian + ]; + + const veloRouter = "0x3a63171DD9BebF4D07BC782FECC7eb0b890C2A45"; + const addressProvider = "0xEDc83309549e36f3c7FD8c2C5C54B4c8e5FA00FC"; + + // ReaperSwapper + const Swapper = await ethers.getContractFactory("ReaperSwapper"); + const initializerArguments = [ + strategists, + multisigRoles[2], + multisigRoles[0], + ]; + const swapper = await upgrades.deployProxy( + Swapper, + initializerArguments, + { kind: "uups", timeout: 0 }, + ); + + await swapper.waitForDeployment(); + console.log("Swapper deployed to:", await swapper.getAddress()); + + //Oracle const oracle = await ethers.deployContract( "ThenaOracle", [thenaPair, targetToken, owner, secs, minPrice] @@ -16,9 +50,9 @@ async function main() { console.log(`Oracle deployed to: ${await oracle.getAddress()}`); // OptionsToken - const tokenName = process.env.OT_NAME; - const symbol = process.env.OT_SYMBOL; - const tokenAdmin = process.env.OT_TOKEN_ADMIN; + const tokenName = config.OT_NAME; + const symbol = config.OT_SYMBOL; + const tokenAdmin = config.OT_TOKEN_ADMIN; const OptionsToken = await ethers.getContractFactory("OptionsToken"); const optionsToken = await upgrades.deployProxy( OptionsToken, @@ -31,10 +65,19 @@ async function main() { console.log(`Implementation: ${await getImplementationAddress(ethers.provider, await optionsToken.getAddress())}`); // Exercise - const paymentToken = process.env.OT_PAYMENT_TOKEN; - const multiplier = process.env.MULTIPLIER; - const feeRecipients = String(process.env.FEE_RECIPIENTS).split(","); - const feeBps = String(process.env.FEE_BPS).split(","); + const paymentToken = config.OT_PAYMENT_TOKEN; + const multiplier = config.MULTIPLIER; + const feeRecipients = String(config.FEE_RECIPIENTS).split(","); + const feeBps = String(config.FEE_BPS).split(","); + const instantExitFee = config.INSTANT_EXIT_FEE; + const minAmountToTriggerSwap = config.MIN_AMOUNT_TO_TRIGGER_SWAP; + + const swapProps = { + swapper: await swapper.getAddress(), + exchangeAddress: veloRouter, + exchangeTypes: 2, /* VeloSolid */ + maxSwapSlippage: 500 /* 5% */ + }; const exercise = await ethers.deployContract( "DiscountExercise", @@ -45,8 +88,11 @@ async function main() { targetToken, await oracle.getAddress(), multiplier, + instantExitFee, + minAmountToTriggerSwap, feeRecipients, - feeBps + feeBps, + swapProps ] ); await exercise.waitForDeployment(); @@ -56,6 +102,32 @@ async function main() { const exerciseAddress = await exercise.getAddress(); await optionsToken.setExerciseContract(exerciseAddress, true); console.log(`Exercise set to: ${exerciseAddress}`); + + //OptionsCompounder + // const swapper = "0xe9A46021305B67Dbd6b35a4277FF0207E29320C2"; + // const oracle = "0xd36917a9e3a3bAE753b9503B251640703500aAFE";//await ethers.getContractAt("IOracle", "0xd36917a9e3a3bAE753b9503B251640703500aAFE"); + // const optionsToken = "0xe3F95Bc8Fd7b54C4D7a464A44b47E0e7d17F3940"; + + const OptionsCompounder = await ethers.getContractFactory("OptionsCompounder"); + + // console.log("Proxy deployment: ", [optionsToken, addressProvider, swapper, swapProps, oracle]); + console.log("Proxy deployment: ", [await optionsToken.getAddress(), addressProvider, await swapper.getAddress(), swapProps, await oracle.getAddress()]); + + const optionsCompounder = await upgrades.deployProxy( + OptionsCompounder, + [await optionsToken.getAddress(), addressProvider, await swapper.getAddress(), swapProps, await oracle.getAddress()], + { kind: "uups", initializer: "initialize" } + ); + + // const optionsCompounder = await upgrades.deployProxy( + // OptionsCompounder, + // [optionsToken, addressProvider, swapper, swapProps, oracle], + // { kind: "uups", initializer: "initialize" } + // ); + + await optionsCompounder.waitForDeployment(); + console.log(`OptionsCompounder deployed to: ${await optionsCompounder.getAddress()}`); + console.log(`Implementation: ${await getImplementationAddress(ethers.provider, await optionsCompounder.getAddress())}`); } // We recommend this pattern to be able to use async/await everywhere diff --git a/src/OptionsCompounder.sol b/src/OptionsCompounder.sol index f85c3ba..a388ad7 100644 --- a/src/OptionsCompounder.sol +++ b/src/OptionsCompounder.sol @@ -59,6 +59,7 @@ contract OptionsCompounder is IFlashLoanReceiver, OwnableUpgradeable, UUPSUpgrad /* Modifiers */ + /// @custom:oz-upgrades-unsafe-allow constructor constructor() { _disableInitializers(); } @@ -290,7 +291,6 @@ contract OptionsCompounder is IFlashLoanReceiver, OwnableUpgradeable, UUPSUpgrad } } - /** * @dev This function must be called prior to upgrading the implementation. * It's required to wait UPGRADE_TIMELOCK seconds before executing the upgrade. diff --git a/test/ItMode_OptionsCompounder.t.sol b/test/ItMode_OptionsCompounder.t.sol index 0d44863..a4584ea 100644 --- a/test/ItMode_OptionsCompounder.t.sol +++ b/test/ItMode_OptionsCompounder.t.sol @@ -27,17 +27,6 @@ contract ItModeOptionsCompounder is Common { // ReaperStrategyGranary strategy; IOracle oracle; - // string public vaultName = "?_? Vault"; - // string public vaultSymbol = "rf-?_?"; - // uint256 public vaultTvlCap = type(uint256).max; - // address public treasuryAddress = 0xC17DfA7Eb4300871D5f022c107E07F98c750472e; - - // address public optionsTokenAddress = - // 0x45c19a3068642B98F5AEf1dEdE023443cd1FbFAd; - // address public discountExerciseAddress = - // 0x3Fbf4f9cf73162e4e156972540f53Dabe65c2862; - // address public bscTokenAdmin = 0x6eB1fF8E939aFBF3086329B2b32725b72095512C; - function setUp() public { /* Common assignments */ ExchangeType exchangeType = ExchangeType.VeloSolid; @@ -161,7 +150,6 @@ contract ItModeOptionsCompounder is Common { // vm.startPrank(address(strategy)); /* already approved in fixture_prepareOptionToken */ - // uint256 _balance = optionsTokenProxy.balanceOf(address(optionsCompounder)); optionsCompounder.harvestOTokens(amount, address(exerciser), minAmount); // vm.stopPrank(); From 8d795ca12ad190aaaac3812e6d74693a6b85b62d Mon Sep 17 00:00:00 2001 From: xRave110 Date: Fri, 5 Jul 2024 08:30:43 +0200 Subject: [PATCH 56/64] Changes after review --- .gitmodules | 30 +++++---- src/OptionsToken.sol | 5 ++ src/exercise/DiscountExercise.sol | 7 +- src/helpers/SwapHelper.sol | 2 +- src/oracles/AlgebraOracle.sol | 3 +- src/oracles/ThenaOracle.sol | 3 +- src/oracles/UniswapV3Oracle.sol | 3 +- test/OptionsToken.t.sol | 107 +++++++++++++++++++++++++++++- test/UniswapV3Oracle.t.sol | 89 +++++-------------------- test/mocks/MockUniswapPool.sol | 7 +- 10 files changed, 159 insertions(+), 97 deletions(-) diff --git a/.gitmodules b/.gitmodules index f324d8b..75229a8 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,21 +1,23 @@ [submodule "lib/forge-std"] - path = lib/forge-std - url = https://github.com/foundry-rs/forge-std +path = lib/forge-std +url = https://github.com/foundry-rs/forge-std [submodule "lib/solmate"] - path = lib/solmate - url = https://github.com/rari-capital/solmate +path = lib/solmate +url = https://github.com/rari-capital/solmate [submodule "lib/create3-factory"] - path = lib/create3-factory - url = https://github.com/zeframlou/create3-factory +path = lib/create3-factory +url = https://github.com/zeframlou/create3-factory [submodule "lib/v3-core"] - path = lib/v3-core - url = https://github.com/uniswap/v3-core +path = lib/v3-core +url = https://github.com/uniswap/v3-core [submodule "lib/openzeppelin-contracts-upgradeable"] - path = lib/openzeppelin-contracts-upgradeable - url = https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable +path = lib/openzeppelin-contracts-upgradeable +url = https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable +branch = v4.9.6 [submodule "lib/openzeppelin-contracts"] - path = lib/openzeppelin-contracts - url = https://github.com/OpenZeppelin/openzeppelin-contracts +path = lib/openzeppelin-contracts +url = https://github.com/OpenZeppelin/openzeppelin-contracts +branch = v4.9.6 [submodule "lib/vault-v2"] - path = lib/vault-v2 - url = https://github.com/Byte-Masons/vault-v2 +path = lib/vault-v2 +url = https://github.com/Byte-Masons/vault-v2 \ No newline at end of file diff --git a/src/OptionsToken.sol b/src/OptionsToken.sol index 42603f8..a19e8ee 100644 --- a/src/OptionsToken.sol +++ b/src/OptionsToken.sol @@ -61,6 +61,7 @@ contract OptionsToken is IOptionsToken, ERC20Upgradeable, OwnableUpgradeable, UU __UUPSUpgradeable_init(); __ERC20_init(name_, symbol_); __Ownable_init(); + __Pausable_init(); tokenAdmin = tokenAdmin_; _clearUpgradeCooldown(); @@ -96,6 +97,10 @@ contract OptionsToken is IOptionsToken, ERC20Upgradeable, OwnableUpgradeable, UU /// @param recipient The recipient of the reward /// @param option The address of the Exercise contract with the redemption logic /// @param params Extra parameters to be used by the exercise function + /// @return paymentAmount token amount paid for exercising + /// @return data0 address data to return by different exerciser contracts + /// @return data1 integer data to return by different exerciser contracts + /// @return data2 additional integer data to return by different exerciser contracts function exercise(uint256 amount, address recipient, address option, bytes calldata params) external virtual diff --git a/src/exercise/DiscountExercise.sol b/src/exercise/DiscountExercise.sol index b8c556f..1643a47 100644 --- a/src/exercise/DiscountExercise.sol +++ b/src/exercise/DiscountExercise.sol @@ -36,6 +36,7 @@ contract DiscountExercise is BaseExercise, SwapHelper, Pausable { error Exercise__InvalidOracle(); error Exercise__FeeGreaterThanMax(); error Exercise__AmountOutIsZero(); + error Exercise__ZapMultiplierIncompatible(); /// Events event Exercised(address indexed sender, address indexed recipient, uint256 amount, uint256 paymentAmount); @@ -212,14 +213,16 @@ contract DiscountExercise is BaseExercise, SwapHelper, Pausable { returns (uint256 paymentAmount, address, uint256, uint256) { if (block.timestamp > params.deadline) revert Exercise__PastDeadline(); - uint256 discountedUnderlying = amount.mulDivUp(multiplier, BPS_DENOM); + if (multiplier >= BPS_DENOM) revert Exercise__ZapMultiplierIncompatible(); + uint256 discountedUnderlying = amount.mulDivUp(BPS_DENOM - multiplier, BPS_DENOM); uint256 fee = discountedUnderlying.mulDivUp(instantExitFee, BPS_DENOM); uint256 underlyingAmount = discountedUnderlying - fee; + uint256 balance = underlyingToken.balanceOf(address(this)); // Fee amount in underlying tokens charged for zapping feeAmount += fee; - if (feeAmount >= minAmountToTriggerSwap) { + if (feeAmount >= minAmountToTriggerSwap && balance >= (feeAmount + underlyingAmount)) { uint256 minAmountOut = _getMinAmountOutData(feeAmount, swapProps.maxSwapSlippage, address(oracle)); /* Approve the underlying token to make swap */ underlyingToken.approve(swapProps.swapper, feeAmount); diff --git a/src/helpers/SwapHelper.sol b/src/helpers/SwapHelper.sol index 4bc7d2a..87c7af5 100644 --- a/src/helpers/SwapHelper.sol +++ b/src/helpers/SwapHelper.sol @@ -91,7 +91,7 @@ abstract contract SwapHelper { /* Get price from oracle */ uint256 price = IOracle(_oracle).getPrice(); /* Deduct slippage amount from predicted amount */ - minAmountOut = ((_amountIn.mulWadUp(price)) - (((_amountIn.mulWadUp(price)) * _maxSlippage) / BPS_DENOM)); + minAmountOut = (_amountIn.mulWadUp(price) * (BPS_DENOM - _maxSlippage)) / BPS_DENOM; return minAmountOut; } diff --git a/src/oracles/AlgebraOracle.sol b/src/oracles/AlgebraOracle.sol index 349e8aa..79ecf89 100644 --- a/src/oracles/AlgebraOracle.sol +++ b/src/oracles/AlgebraOracle.sol @@ -5,7 +5,7 @@ import {Owned} from "solmate/auth/Owned.sol"; import {FixedPointMathLib} from "solmate/utils/FixedPointMathLib.sol"; import {IOracle} from "../interfaces/IOracle.sol"; - +import {ERC20} from "solmate/tokens/ERC20.sol"; import {IAlgebraPool} from "../interfaces/IAlgebraPool.sol"; import {TickMath} from "v3-core/libraries/TickMath.sol"; import {FullMath} from "v3-core/libraries/FullMath.sol"; @@ -70,6 +70,7 @@ contract AlgebraOracle is IOracle, Owned { /// ----------------------------------------------------------------------- constructor(IAlgebraPool algebraPool_, address token, address owner_, uint32 secs_, uint32 ago_, uint128 minPrice_) Owned(owner_) { + if (ERC20(algebraPool_.token0()).decimals() != 18 || ERC20(algebraPool_.token1()).decimals() != 18) revert AlgebraOracle__InvalidParams(); if (algebraPool_.token0() != token && algebraPool_.token1() != token) revert AlgebraOracle__InvalidParams(); if (secs_ < MIN_SECS) revert AlgebraOracle__InvalidWindow(); algebraPool = algebraPool_; diff --git a/src/oracles/ThenaOracle.sol b/src/oracles/ThenaOracle.sol index 0b2e8a1..ab43a82 100644 --- a/src/oracles/ThenaOracle.sol +++ b/src/oracles/ThenaOracle.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.13; import {Owned} from "solmate/auth/Owned.sol"; import {FixedPointMathLib} from "solmate/utils/FixedPointMathLib.sol"; - +import {ERC20} from "solmate/tokens/ERC20.sol"; import {IOracle} from "../interfaces/IOracle.sol"; import {IThenaPair} from "../interfaces/IThenaPair.sol"; @@ -64,6 +64,7 @@ contract ThenaOracle is IOracle, Owned { /// ----------------------------------------------------------------------- constructor(IThenaPair thenaPair_, address token, address owner_, uint56 secs_, uint128 minPrice_) Owned(owner_) { + if (ERC20(thenaPair_.token0()).decimals() != 18 || ERC20(thenaPair_.token1()).decimals() != 18) revert ThenaOracle__InvalidParams(); if (thenaPair_.stable()) revert ThenaOracle__StablePairsUnsupported(); if (thenaPair_.token0() != token && thenaPair_.token1() != token) revert ThenaOracle__InvalidParams(); if (secs_ < MIN_SECS) revert ThenaOracle__InvalidWindow(); diff --git a/src/oracles/UniswapV3Oracle.sol b/src/oracles/UniswapV3Oracle.sol index 8c93e6d..cbad255 100644 --- a/src/oracles/UniswapV3Oracle.sol +++ b/src/oracles/UniswapV3Oracle.sol @@ -5,7 +5,7 @@ import {Owned} from "solmate/auth/Owned.sol"; import {FixedPointMathLib} from "solmate/utils/FixedPointMathLib.sol"; import {IOracle} from "../interfaces/IOracle.sol"; - +import {ERC20} from "solmate/tokens/ERC20.sol"; import {IUniswapV3Pool} from "v3-core/interfaces/IUniswapV3Pool.sol"; import {TickMath} from "v3-core/libraries/TickMath.sol"; import {FullMath} from "v3-core/libraries/FullMath.sol"; @@ -69,6 +69,7 @@ contract UniswapV3Oracle is IOracle, Owned { /// ----------------------------------------------------------------------- constructor(IUniswapV3Pool uniswapPool_, address token, address owner_, uint32 secs_, uint32 ago_, uint128 minPrice_) Owned(owner_) { + if (ERC20(uniswapPool_.token0()).decimals() != 18 || ERC20(uniswapPool_.token1()).decimals() != 18) revert UniswapOracle__InvalidParams(); //|| ERC20(uniswapPool_.token1()).decimals() != 18 if (uniswapPool_.token0() != token && uniswapPool_.token1() != token) revert UniswapOracle__InvalidParams(); if (secs_ < MIN_SECS) revert UniswapOracle__InvalidWindow(); uniswapPool = uniswapPool_; diff --git a/test/OptionsToken.t.sol b/test/OptionsToken.t.sol index e6ccdfb..d09b8b7 100644 --- a/test/OptionsToken.t.sol +++ b/test/OptionsToken.t.sol @@ -28,6 +28,7 @@ contract OptionsTokenTest is Test { uint256 constant ORACLE_MIN_PRICE_DENOM = 10000; uint256 constant MAX_SUPPLY = 1e27; // the max supply of the options token & the underlying token uint256 constant INSTANT_EXIT_FEE = 500; + uint256 constant BPS_DENOM = 10_000; address owner; address tokenAdmin; @@ -125,7 +126,7 @@ contract OptionsTokenTest is Test { assertEqDecimal(optionsToken.balanceOf(address(this)), amount, 18); } - function test_discountExerciseHappyPath(uint256 amount) public { + function test_redeemPositiveScenario(uint256 amount) public { amount = bound(amount, 100, MAX_SUPPLY); address recipient = makeAddr("recipient"); @@ -155,7 +156,7 @@ contract OptionsTokenTest is Test { assertEqDecimal(expectedPaymentAmount, paymentAmount, 18, "exercise returned wrong value"); } - function test_instantExitExerciseHappyPath(uint256 amount) public { + function test_zapPositiveScenario(uint256 amount) public { amount = bound(amount, 1e16, 1e22); address recipient = makeAddr("recipient"); @@ -465,4 +466,106 @@ contract OptionsTokenTest is Test { vm.prank(owner); exerciser.setMinAmountToTriggerSwap(1e16); } + + function test_zapWhenExerciseUnderfunded(uint256 amount) public { + amount = bound(amount, 1e16, 1e22); + address recipient = makeAddr("recipient"); + + uint256 remainingAmount = 4e15; + + // mint options tokens + vm.prank(tokenAdmin); + optionsToken.mint(address(this), amount); + + // mint payment tokens + uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); + uint256 discountedUnderlying = amount.mulDivUp(PRICE_MULTIPLIER, 10_000); + uint256 expectedUnderlyingAmount = discountedUnderlying - discountedUnderlying.mulDivUp(INSTANT_EXIT_FEE, 10_000); + deal(address(paymentToken), address(this), expectedPaymentAmount); + console.log("discountedUnderlying:", discountedUnderlying); + console.log("expectedUnderlyingAmount:", expectedUnderlyingAmount); + uint256 calcPaymentAmount = exerciser.getPaymentAmount(amount); + uint256 totalFee = calcPaymentAmount.mulDivUp(INSTANT_EXIT_FEE, 10_000); + uint256 fee1 = totalFee.mulDivDown(feeBPS_[0], 10_000); + uint256 fee2 = totalFee - fee1; + console.log("expected paymentFee1: ", fee1); + console.log("expected paymentFee2: ", fee2); + + // Simulate sitiation when exerciser has less underlying amount than expected from exercise action + vm.prank(address(exerciser)); + // IERC20(underlyingToken).transfer(address(this), 1e27 - (discountedUnderlying - 1)); + IERC20(underlyingToken).transfer(address(this), 1e27 - remainingAmount); + console.log("Balance of exerciser:", IERC20(underlyingToken).balanceOf(address(exerciser))); + + // exercise options tokens + DiscountExerciseParams memory params = + DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: true}); + (uint256 paymentAmount,,,) = optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); + + // verify options tokens were transferred + assertEqDecimal(optionsToken.balanceOf(address(this)), 0, 18, "user still has options tokens"); + assertEqDecimal(optionsToken.totalSupply(), 0, 18, "option tokens not burned"); + + // verify payment tokens were transferred + assertEq(paymentToken.balanceOf(address(this)), expectedPaymentAmount, "user lost payment tokens during instant exit"); + + assertEq(paymentToken.balanceOf(feeRecipients_[0]), 0, "fee recipient 1 didn't receive payment tokens"); + assertEq(paymentToken.balanceOf(feeRecipients_[1]), 0, "fee recipient 2 didn't receive payment tokens"); + assertEqDecimal(paymentAmount, 0, 18, "exercise returned wrong value"); + assertEq(IERC20(underlyingToken).balanceOf(recipient), remainingAmount, "Recipient got wrong amount of underlying token"); + } + + function test_modeZapRedeemWithDifferentMultipliers(uint256 multiplier) public { + multiplier = bound(multiplier, BPS_DENOM / 10, BPS_DENOM - 1); + // multiplier = 8000; + uint256 amount = 1000e18; + + address recipient = makeAddr("recipient"); + + // mint options tokens + vm.prank(tokenAdmin); + optionsToken.mint(address(this), 2 * amount); + + vm.prank(owner); + exerciser.setMultiplier(multiplier); + uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_INIT_TWAP_VALUE) * 4; + deal(address(paymentToken), address(this), expectedPaymentAmount); + + uint256 underlyingBalance = + IERC20(underlyingToken).balanceOf(address(this)) + paymentToken.balanceOf(address(this)).divWadUp(oracle.getPrice()); + console.log("Price: ", oracle.getPrice()); + console.log("Balance before: ", underlyingBalance); + console.log("Underlying amount before: ", IERC20(underlyingToken).balanceOf(address(this))); + + // exercise options tokens -> redeem + DiscountExerciseParams memory params = + DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: false}); + (uint256 paymentAmount,,,) = optionsToken.exercise(amount, address(this), address(exerciser), abi.encode(params)); + + uint256 underlyingBalanceAfterRedeem = + IERC20(underlyingToken).balanceOf(address(this)) + paymentToken.balanceOf(address(this)).divWadUp(oracle.getPrice()); + console.log("Price: ", oracle.getPrice()); + console.log("Underlying amount after redeem: ", IERC20(underlyingToken).balanceOf(address(this))); + console.log("Balance after redeem: ", underlyingBalanceAfterRedeem); + + assertGt(underlyingBalanceAfterRedeem, underlyingBalance, "Redeem not profitable"); + uint256 redeemProfit = underlyingBalanceAfterRedeem - underlyingBalance; + + // exercise options tokens -> zap + params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: true}); + (paymentAmount,,,) = optionsToken.exercise(amount, address(this), address(exerciser), abi.encode(params)); + + uint256 underlyingBalanceAfterZap = + IERC20(underlyingToken).balanceOf(address(this)) + paymentToken.balanceOf(address(this)).divWadUp(oracle.getPrice()); + console.log("Price: ", oracle.getPrice()); + console.log("Underlying amount after zap: ", IERC20(underlyingToken).balanceOf(address(this))); + console.log("Balance after zap: ", underlyingBalanceAfterZap); + + assertGt(underlyingBalanceAfterZap, underlyingBalanceAfterRedeem, "Zap not profitable"); + uint256 zapProfit = underlyingBalanceAfterZap - underlyingBalanceAfterRedeem; + + assertGt(redeemProfit, zapProfit, "Profits from zap is greater than profits from redeem"); + + assertEq(redeemProfit - redeemProfit.mulDivUp(INSTANT_EXIT_FEE, BPS_DENOM), zapProfit, "Zap profit is different than redeem profit minus fee"); + } } diff --git a/test/UniswapV3Oracle.t.sol b/test/UniswapV3Oracle.t.sol index 794f103..afec76f 100644 --- a/test/UniswapV3Oracle.t.sol +++ b/test/UniswapV3Oracle.t.sol @@ -47,9 +47,11 @@ contract UniswapOracleTest is Test { Params _default; function setUp() public { + opFork = vm.createSelectFork(OPTIMISM_RPC_URL, FORK_BLOCK); mockV3Pool = new MockUniswapPool(); mockV3Pool.setCumulatives(sampleCumulatives); mockV3Pool.setToken0(OP_ADDRESS); + mockV3Pool.setToken1(WETH_ADDRESS); _default = Params(IUniswapV3Pool(WETH_OP_POOL_ADDRESS), OP_ADDRESS, address(this), 30 minutes, 0, 1000); swapRouter = ISwapRouter(SWAP_ROUTER_ADDRESS); @@ -59,33 +61,15 @@ contract UniswapOracleTest is Test { /// Mock tests /// ---------------------------------------------------------------------- - function test_PriceToken0() public { - UniswapV3Oracle oracle = new UniswapV3Oracle( - mockV3Pool, - OP_ADDRESS, - _default.owner, - _default.secs, - _default.ago, - _default.minPrice - ); + function test_PriceTokens() public { + UniswapV3Oracle oracle0 = new UniswapV3Oracle(mockV3Pool, OP_ADDRESS, _default.owner, _default.secs, _default.ago, _default.minPrice); + UniswapV3Oracle oracle1 = new UniswapV3Oracle(mockV3Pool, WETH_ADDRESS, _default.owner, _default.secs, _default.ago, _default.minPrice); - uint256 price = oracle.getPrice(); - assertEq(price, expectedPriceToken0); - } - - function test_PriceToken1() public { - UniswapV3Oracle oracle = new UniswapV3Oracle( - mockV3Pool, - address(0), - _default.owner, - _default.secs, - _default.ago, - _default.minPrice - ); - - uint256 price = oracle.getPrice(); - uint256 expectedPriceToken1 = price = FixedPointMathLib.divWadUp(1e18, price); - assertEq(price, expectedPriceToken1); + uint256 price0 = oracle0.getPrice(); + uint256 price1 = oracle1.getPrice(); + assertEq(price0, expectedPriceToken0); + uint256 expectedPriceToken1 = FixedPointMathLib.divWadDown(1e18, price0); + assertEq(price1, expectedPriceToken1); //precision } /// ---------------------------------------------------------------------- @@ -93,16 +77,7 @@ contract UniswapOracleTest is Test { /// ---------------------------------------------------------------------- function test_priceWithinAcceptableRange() public { - opFork = vm.createSelectFork(OPTIMISM_RPC_URL, FORK_BLOCK); - - UniswapV3Oracle oracle = new UniswapV3Oracle( - _default.pool, - _default.token, - _default.owner, - _default.secs, - _default.ago, - _default.minPrice - ); + UniswapV3Oracle oracle = new UniswapV3Oracle(_default.pool, _default.token, _default.owner, _default.secs, _default.ago, _default.minPrice); uint256 oraclePrice = oracle.getPrice(); @@ -112,16 +87,7 @@ contract UniswapOracleTest is Test { } function test_revertMinPrice() public { - opFork = vm.createSelectFork(OPTIMISM_RPC_URL, FORK_BLOCK); - - UniswapV3Oracle oracle = new UniswapV3Oracle( - _default.pool, - _default.token, - _default.owner, - _default.secs, - _default.ago, - _default.minPrice - ); + UniswapV3Oracle oracle = new UniswapV3Oracle(_default.pool, _default.token, _default.owner, _default.secs, _default.ago, _default.minPrice); skip(_default.secs); @@ -143,14 +109,8 @@ contract UniswapOracleTest is Test { swapRouter.exactInputSingle(paramsIn); // deploy a new oracle with a minPrice that is too high - UniswapV3Oracle oracleMinPrice = new UniswapV3Oracle( - _default.pool, - _default.token, - _default.owner, - _default.secs, - _default.ago, - uint128(price) - ); + UniswapV3Oracle oracleMinPrice = + new UniswapV3Oracle(_default.pool, _default.token, _default.owner, _default.secs, _default.ago, uint128(price)); skip(_default.secs); @@ -159,16 +119,7 @@ contract UniswapOracleTest is Test { } function test_singleBlockManipulation() public { - opFork = vm.createSelectFork(OPTIMISM_RPC_URL, FORK_BLOCK); - - UniswapV3Oracle oracle = new UniswapV3Oracle( - _default.pool, - _default.token, - _default.owner, - _default.secs, - _default.ago, - _default.minPrice - ); + UniswapV3Oracle oracle = new UniswapV3Oracle(_default.pool, _default.token, _default.owner, _default.secs, _default.ago, _default.minPrice); address manipulator = makeAddr("manipulator"); deal(OP_ADDRESS, manipulator, 1000000 ether); @@ -200,16 +151,8 @@ contract UniswapOracleTest is Test { function test_priceManipulation(uint256 skipTime) public { skipTime = bound(skipTime, 1, _default.secs); - opFork = vm.createSelectFork(OPTIMISM_RPC_URL, FORK_BLOCK); - UniswapV3Oracle oracle = new UniswapV3Oracle( - _default.pool, - _default.token, - _default.owner, - _default.secs, - _default.ago, - _default.minPrice - ); + UniswapV3Oracle oracle = new UniswapV3Oracle(_default.pool, _default.token, _default.owner, _default.secs, _default.ago, _default.minPrice); address manipulator = makeAddr("manipulator"); deal(OP_ADDRESS, manipulator, 1000000 ether); diff --git a/test/mocks/MockUniswapPool.sol b/test/mocks/MockUniswapPool.sol index 42cd0ba..9ef5cd4 100644 --- a/test/mocks/MockUniswapPool.sol +++ b/test/mocks/MockUniswapPool.sol @@ -6,6 +6,7 @@ import {IUniswapV3Pool} from "v3-core/interfaces/IUniswapV3Pool.sol"; contract MockUniswapPool is IUniswapV3Pool { int56[2] cumulatives; address public token0; + address public token1; function setCumulatives(int56[2] memory value) external { cumulatives = value; @@ -15,6 +16,10 @@ contract MockUniswapPool is IUniswapV3Pool { token0 = value; } + function setToken1(address value) external { + token1 = value; + } + function observe(uint32[] calldata secondsAgos) external view @@ -39,8 +44,6 @@ contract MockUniswapPool is IUniswapV3Pool { function factory() external view override returns (address) {} - function token1() external view override returns (address) {} - function fee() external view override returns (uint24) {} function tickSpacing() external view override returns (int24) {} From 70887207c11685b91819f1c5560cc140cfd743cb Mon Sep 17 00:00:00 2001 From: xRave110 Date: Fri, 5 Jul 2024 12:53:50 +0200 Subject: [PATCH 57/64] Checklist update --- README.md | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9548b78..60a8568 100644 --- a/README.md +++ b/README.md @@ -52,4 +52,36 @@ forge build ``` forge test -``` \ No newline at end of file +``` + +### Checklist + +#### Internal Audit Checklist + +- [x] All functionality that touches funds can be paused +- [ ] Pause function called by 2/7 Guardian +- [ ] Guardian has 7 members globally dispersed +- [x] Arithmetic errors +- [x] Re-entrancy +- [x] Flashloans +- [x] Access Control +- [x] Unchecked External Calls +- [ ] Account abstraction/multicall issues +- [x] USE SLITHER + +#### Pre-deployment Checklist + +- [x] Contracts pass all tests +- [x] Contracts deployed to testnet +- [x] Does this deployment have access to funds, either directly or indirectly (zappers, leveragers, etc.)? + +Minimum security if Yes: + +- [x] Internal Audit (not the author, minimum 1x Junior review + minimum 1x Senior review) +- [x] External Audit (impact scope) + +Action items in support of deployment: + +- [ ] Minimum two people present for deployment +- [ ] All developers who worked on and reviewed the contract should be included in the readme +- [ ] Documentation of deployment procedure if non-standard (i.e. if multiple scripts are necessary) \ No newline at end of file From 07d538f1ec3d96018bf6f0107864f731236962a7 Mon Sep 17 00:00:00 2001 From: xRave110 Date: Fri, 5 Jul 2024 08:30:43 +0200 Subject: [PATCH 58/64] Changes after review --- .gitmodules | 30 ++++---- README.md | 35 ++++++++- src/OptionsCompounder.sol | 78 +++++++++++++------ src/OptionsToken.sol | 5 ++ src/exercise/DiscountExercise.sol | 7 +- src/helpers/SwapHelper.sol | 2 +- src/interfaces/IOptionsCompounder.sol | 1 + src/oracles/AlgebraOracle.sol | 3 +- src/oracles/ThenaOracle.sol | 3 +- src/oracles/UniswapV3Oracle.sol | 3 +- test/ItMode_OptionsCompounder.t.sol | 25 +----- test/OptionsToken.t.sol | 107 +++++++++++++++++++++++++- test/UniswapV3Oracle.t.sol | 89 ++++----------------- test/mocks/MockUniswapPool.sol | 7 +- 14 files changed, 249 insertions(+), 146 deletions(-) diff --git a/.gitmodules b/.gitmodules index f324d8b..75229a8 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,21 +1,23 @@ [submodule "lib/forge-std"] - path = lib/forge-std - url = https://github.com/foundry-rs/forge-std +path = lib/forge-std +url = https://github.com/foundry-rs/forge-std [submodule "lib/solmate"] - path = lib/solmate - url = https://github.com/rari-capital/solmate +path = lib/solmate +url = https://github.com/rari-capital/solmate [submodule "lib/create3-factory"] - path = lib/create3-factory - url = https://github.com/zeframlou/create3-factory +path = lib/create3-factory +url = https://github.com/zeframlou/create3-factory [submodule "lib/v3-core"] - path = lib/v3-core - url = https://github.com/uniswap/v3-core +path = lib/v3-core +url = https://github.com/uniswap/v3-core [submodule "lib/openzeppelin-contracts-upgradeable"] - path = lib/openzeppelin-contracts-upgradeable - url = https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable +path = lib/openzeppelin-contracts-upgradeable +url = https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable +branch = v4.9.6 [submodule "lib/openzeppelin-contracts"] - path = lib/openzeppelin-contracts - url = https://github.com/OpenZeppelin/openzeppelin-contracts +path = lib/openzeppelin-contracts +url = https://github.com/OpenZeppelin/openzeppelin-contracts +branch = v4.9.6 [submodule "lib/vault-v2"] - path = lib/vault-v2 - url = https://github.com/Byte-Masons/vault-v2 +path = lib/vault-v2 +url = https://github.com/Byte-Masons/vault-v2 \ No newline at end of file diff --git a/README.md b/README.md index 9548b78..1b4b719 100644 --- a/README.md +++ b/README.md @@ -52,4 +52,37 @@ forge build ``` forge test -``` \ No newline at end of file +``` + +### Checklist + +#### Internal Audit Checklist + +- [x] All functionality that touches funds can be paused +- [ ] Pause function called by 2/7 Guardian +- [ ] Guardian has 7 members globally dispersed +- [x] Arithmetic errors +- [x] Re-entrancy +- [x] Flashloans +- [x] Access Control +- [x] Unchecked External Calls +- [ ] Account abstraction/multicall issues +- [x] USE SLITHER + +#### Pre-deployment Checklist + +- [x] Contracts pass all tests +- [x] Contracts deployed to testnet +- [x] Does this deployment have access to funds, either directly or indirectly (zappers, leveragers, etc.)? + +Minimum security if Yes: + +- [x] Internal Audit (not the author, minimum 1x Junior review + minimum 1x Senior review) +- [x] External Audit (impact scope) + +Action items in support of deployment: + +- [ ] Minimum two people present for deployment +- [x] All developers who worked on and reviewed the contract should be included in the readme + Developers involved: Eidolon (reviewer), Zokunei (reviewer), Goober (reviewer), Beirao (reviewer), xRave110 (change owner) +- [ ] Documentation of deployment procedure if non-standard (i.e. if multiple scripts are necessary) \ No newline at end of file diff --git a/src/OptionsCompounder.sol b/src/OptionsCompounder.sol index a388ad7..27efa81 100644 --- a/src/OptionsCompounder.sol +++ b/src/OptionsCompounder.sol @@ -7,16 +7,15 @@ import {IFlashLoanReceiver} from "./interfaces/IFlashLoanReceiver.sol"; import {ILendingPoolAddressesProvider} from "./interfaces/ILendingPoolAddressesProvider.sol"; import {ILendingPool} from "./interfaces/ILendingPool.sol"; import {IOracle} from "./interfaces/IOracle.sol"; -import "./interfaces/IOptionsCompounder.sol"; import {DiscountExerciseParams, DiscountExercise} from "./exercise/DiscountExercise.sol"; import {ReaperAccessControl} from "vault-v2/mixins/ReaperAccessControl.sol"; -// import {ISwapperSwaps, MinAmountOutData, MinAmountOutKind} from "vault-v2/ReaperSwapper.sol"; import {IERC20} from "oz/token/ERC20/IERC20.sol"; import {FixedPointMathLib} from "solmate/utils/FixedPointMathLib.sol"; import {OwnableUpgradeable} from "oz-upgradeable/access/OwnableUpgradeable.sol"; import {UUPSUpgradeable} from "oz-upgradeable/proxy/utils/UUPSUpgradeable.sol"; import {SafeERC20} from "oz/token/ERC20/utils/SafeERC20.sol"; import {ExchangeType, SwapProps, SwapHelper} from "./helpers/SwapHelper.sol"; +import "./interfaces/IOptionsCompounder.sol"; /** * @title Consumes options tokens, exercise them with flashloaned asset and converts gain to strategy want token @@ -37,8 +36,7 @@ contract OptionsCompounder is IFlashLoanReceiver, OwnableUpgradeable, UUPSUpgrad } /* Constants */ - uint8 constant MIN_NR_OF_FLASHLOAN_ASSETS = 1; - uint256 constant PERCENTAGE = 10000; + uint8 constant MAX_NR_OF_FLASHLOAN_ASSETS = 1; uint256 public constant UPGRADE_TIMELOCK = 48 hours; uint256 public constant FUTURE_NEXT_PROPOSAL_TIME = 365 days * 100; @@ -78,12 +76,12 @@ contract OptionsCompounder is IFlashLoanReceiver, OwnableUpgradeable, UUPSUpgrad initializer { __Ownable_init(); - setOptionToken(_optionsToken); + _setOptionsToken(_optionsToken); _setSwapProps(_swapProps); - setOracle(_oracle); - setSwapper(_swapper); + _setOracle(_oracle); + _setSwapper(_swapper); flashloanFinished = true; - setAddressProvider(_addressProvider); + _setAddressProvider(_addressProvider); __UUPSUpgradeable_init(); _clearUpgradeCooldown(); } @@ -94,34 +92,50 @@ contract OptionsCompounder is IFlashLoanReceiver, OwnableUpgradeable, UUPSUpgrad /** * @notice Sets option token address * @dev Can be executed only by admins - * @param _optionToken - address of option token contract + * @param _optionsToken - address of option token contract */ - function setOptionToken(address _optionToken) public onlyOwner { - if (_optionToken == address(0)) { + function setOptionsToken(address _optionsToken) external onlyOwner { + _setOptionsToken(_optionsToken); + } + + function _setOptionsToken(address _optionsToken) internal { + if (_optionsToken == address(0)) { revert OptionsCompounder__ParamHasAddressZero(); } - optionsToken = IOptionsToken(_optionToken); + optionsToken = IOptionsToken(_optionsToken); } function setSwapProps(SwapProps memory _swapProps) external override onlyOwner { _setSwapProps(_swapProps); } - function setOracle(IOracle _oracle) public onlyOwner { + function setOracle(IOracle _oracle) external onlyOwner { + _setOracle(_oracle); + } + + function _setOracle(IOracle _oracle) internal { if (address(_oracle) == address(0)) { revert OptionsCompounder__ParamHasAddressZero(); } oracle = _oracle; } - function setSwapper(address _swapper) public onlyOwner { + function setSwapper(address _swapper) external onlyOwner { + _setSwapper(_swapper); + } + + function _setSwapper(address _swapper) internal { if (_swapper == address(0)) { revert OptionsCompounder__ParamHasAddressZero(); } swapper = _swapper; } - function setAddressProvider(address _addressProvider) public onlyOwner { + function setAddressProvider(address _addressProvider) external onlyOwner { + _setAddressProvider(_addressProvider); + } + + function _setAddressProvider(address _addressProvider) internal { if (_addressProvider == address(0)) { revert OptionsCompounder__ParamHasAddressZero(); } @@ -195,21 +209,22 @@ contract OptionsCompounder is IFlashLoanReceiver, OwnableUpgradeable, UUPSUpgrad * @param amounts - list of amounts flash loaned (only one amount allowed in this case) * @param premiums - list of premiums for flash loaned assets (only one premium allowed in this case) * @param params - encoded data about options amount, exercise contract address, initial balance and minimal want amount + * @return bool - value that returns whether flashloan operation went well */ function executeOperation(address[] calldata assets, uint256[] calldata amounts, uint256[] calldata premiums, address, bytes calldata params) external override returns (bool) { - if (flashloanFinished != false) { + if (flashloanFinished != false || msg.sender != address(lendingPool)) { revert OptionsCompounder__FlashloanNotTriggered(); } - if (assets.length > MIN_NR_OF_FLASHLOAN_ASSETS || amounts.length > MIN_NR_OF_FLASHLOAN_ASSETS || premiums.length > MIN_NR_OF_FLASHLOAN_ASSETS) + if (assets.length > MAX_NR_OF_FLASHLOAN_ASSETS || amounts.length > MAX_NR_OF_FLASHLOAN_ASSETS || premiums.length > MAX_NR_OF_FLASHLOAN_ASSETS) { revert OptionsCompounder__TooMuchAssetsLoaned(); } /* Later the gain can be local variable */ - exerciseOptionAndReturnDebt(assets[0], amounts[0], premiums[0], params); + _exerciseOptionAndReturnDebt(assets[0], amounts[0], premiums[0], params); flashloanFinished = true; return true; } @@ -223,10 +238,10 @@ contract OptionsCompounder is IFlashLoanReceiver, OwnableUpgradeable, UUPSUpgrad * @param premium - list of premiums for flash loaned assets (only one premium allowed in this case) * @param params - encoded data about options amount, exercise contract address, initial balance and minimal want amount */ - function exerciseOptionAndReturnDebt(address asset, uint256 amount, uint256 premium, bytes calldata params) private { + function _exerciseOptionAndReturnDebt(address asset, uint256 amount, uint256 premium, bytes calldata params) private { FlashloanParams memory flashloanParams = abi.decode(params, (FlashloanParams)); uint256 assetBalance = 0; - uint256 minAmountOut; + uint256 minAmountOut = 0; /* Get underlying and payment tokens to make sure there is no change between harvest and excersice */ @@ -242,18 +257,22 @@ contract OptionsCompounder is IFlashLoanReceiver, OwnableUpgradeable, UUPSUpgrad { IERC20(address(optionsToken)).safeTransferFrom(flashloanParams.sender, address(this), flashloanParams.optionsAmount); bytes memory exerciseParams = - abi.encode(DiscountExerciseParams({maxPaymentAmount: amount, deadline: type(uint256).max, isInstantExit: false})); + abi.encode(DiscountExerciseParams({maxPaymentAmount: amount, deadline: block.timestamp, isInstantExit: false})); if (underlyingToken.balanceOf(flashloanParams.exerciserContract) < flashloanParams.optionsAmount) { revert OptionsCompounder__NotEnoughUnderlyingTokens(); } - /* Approve spending option token */ + /* Approve spending payment token */ IERC20(asset).approve(flashloanParams.exerciserContract, amount); /* Exercise in order to get underlying token */ optionsToken.exercise(flashloanParams.optionsAmount, address(this), flashloanParams.exerciserContract, exerciseParams); + + /* Approve spending payment token to 0 for safety */ + IERC20(asset).approve(flashloanParams.exerciserContract, 0); } { uint256 balanceOfUnderlyingToken = 0; + uint256 swapAmountOut = 0; balanceOfUnderlyingToken = underlyingToken.balanceOf(address(this)); minAmountOut = _getMinAmountOutData(balanceOfUnderlyingToken, swapProps.maxSwapSlippage, address(oracle)); @@ -261,7 +280,16 @@ contract OptionsCompounder is IFlashLoanReceiver, OwnableUpgradeable, UUPSUpgrad underlyingToken.approve(swapper, balanceOfUnderlyingToken); /* Swap underlying token to payment token (asset) */ - _generalSwap(swapProps.exchangeTypes, address(underlyingToken), asset, balanceOfUnderlyingToken, minAmountOut, swapProps.exchangeAddress); + swapAmountOut = _generalSwap( + swapProps.exchangeTypes, address(underlyingToken), asset, balanceOfUnderlyingToken, minAmountOut, swapProps.exchangeAddress + ); + + if (swapAmountOut == 0) { + revert OptionsCompounder__AmountOutIsZero(); + } + + /* Approve the underlying token to 0 for safety */ + underlyingToken.approve(swapper, 0); } /* Calculate profit and revert if it is not profitable */ @@ -274,14 +302,14 @@ contract OptionsCompounder is IFlashLoanReceiver, OwnableUpgradeable, UUPSUpgrad if ( ( (assetBalance < flashloanParams.initialBalance) - || (assetBalance - flashloanParams.initialBalance) <= (totalAmountToPay + flashloanParams.minPaymentAmount) + || (assetBalance - flashloanParams.initialBalance) < (totalAmountToPay + flashloanParams.minPaymentAmount) ) ) { revert OptionsCompounder__FlashloanNotProfitableEnough(); } /* Protected against underflows by statement above */ - gainInPaymentToken = assetBalance - totalAmountToPay; + gainInPaymentToken = assetBalance - totalAmountToPay - flashloanParams.initialBalance; /* Approve lending pool to spend borrowed tokens + premium */ IERC20(asset).approve(address(lendingPool), totalAmountToPay); diff --git a/src/OptionsToken.sol b/src/OptionsToken.sol index 42603f8..a19e8ee 100644 --- a/src/OptionsToken.sol +++ b/src/OptionsToken.sol @@ -61,6 +61,7 @@ contract OptionsToken is IOptionsToken, ERC20Upgradeable, OwnableUpgradeable, UU __UUPSUpgradeable_init(); __ERC20_init(name_, symbol_); __Ownable_init(); + __Pausable_init(); tokenAdmin = tokenAdmin_; _clearUpgradeCooldown(); @@ -96,6 +97,10 @@ contract OptionsToken is IOptionsToken, ERC20Upgradeable, OwnableUpgradeable, UU /// @param recipient The recipient of the reward /// @param option The address of the Exercise contract with the redemption logic /// @param params Extra parameters to be used by the exercise function + /// @return paymentAmount token amount paid for exercising + /// @return data0 address data to return by different exerciser contracts + /// @return data1 integer data to return by different exerciser contracts + /// @return data2 additional integer data to return by different exerciser contracts function exercise(uint256 amount, address recipient, address option, bytes calldata params) external virtual diff --git a/src/exercise/DiscountExercise.sol b/src/exercise/DiscountExercise.sol index b8c556f..1643a47 100644 --- a/src/exercise/DiscountExercise.sol +++ b/src/exercise/DiscountExercise.sol @@ -36,6 +36,7 @@ contract DiscountExercise is BaseExercise, SwapHelper, Pausable { error Exercise__InvalidOracle(); error Exercise__FeeGreaterThanMax(); error Exercise__AmountOutIsZero(); + error Exercise__ZapMultiplierIncompatible(); /// Events event Exercised(address indexed sender, address indexed recipient, uint256 amount, uint256 paymentAmount); @@ -212,14 +213,16 @@ contract DiscountExercise is BaseExercise, SwapHelper, Pausable { returns (uint256 paymentAmount, address, uint256, uint256) { if (block.timestamp > params.deadline) revert Exercise__PastDeadline(); - uint256 discountedUnderlying = amount.mulDivUp(multiplier, BPS_DENOM); + if (multiplier >= BPS_DENOM) revert Exercise__ZapMultiplierIncompatible(); + uint256 discountedUnderlying = amount.mulDivUp(BPS_DENOM - multiplier, BPS_DENOM); uint256 fee = discountedUnderlying.mulDivUp(instantExitFee, BPS_DENOM); uint256 underlyingAmount = discountedUnderlying - fee; + uint256 balance = underlyingToken.balanceOf(address(this)); // Fee amount in underlying tokens charged for zapping feeAmount += fee; - if (feeAmount >= minAmountToTriggerSwap) { + if (feeAmount >= minAmountToTriggerSwap && balance >= (feeAmount + underlyingAmount)) { uint256 minAmountOut = _getMinAmountOutData(feeAmount, swapProps.maxSwapSlippage, address(oracle)); /* Approve the underlying token to make swap */ underlyingToken.approve(swapProps.swapper, feeAmount); diff --git a/src/helpers/SwapHelper.sol b/src/helpers/SwapHelper.sol index 4bc7d2a..87c7af5 100644 --- a/src/helpers/SwapHelper.sol +++ b/src/helpers/SwapHelper.sol @@ -91,7 +91,7 @@ abstract contract SwapHelper { /* Get price from oracle */ uint256 price = IOracle(_oracle).getPrice(); /* Deduct slippage amount from predicted amount */ - minAmountOut = ((_amountIn.mulWadUp(price)) - (((_amountIn.mulWadUp(price)) * _maxSlippage) / BPS_DENOM)); + minAmountOut = (_amountIn.mulWadUp(price) * (BPS_DENOM - _maxSlippage)) / BPS_DENOM; return minAmountOut; } diff --git a/src/interfaces/IOptionsCompounder.sol b/src/interfaces/IOptionsCompounder.sol index ab32ed0..916f3a9 100644 --- a/src/interfaces/IOptionsCompounder.sol +++ b/src/interfaces/IOptionsCompounder.sol @@ -17,6 +17,7 @@ error OptionsCompounder__SlippageGreaterThanMax(); error OptionsCompounder__ParamHasAddressZero(); error OptionsCompounder__NotEnoughUnderlyingTokens(); error OptionsCompounder__WrongMinPaymentAmount(); +error OptionsCompounder__AmountOutIsZero(); interface IOptionsCompounder { function harvestOTokens(uint256 amount, address exerciseContract, uint256 minWantAmount) external; diff --git a/src/oracles/AlgebraOracle.sol b/src/oracles/AlgebraOracle.sol index 349e8aa..79ecf89 100644 --- a/src/oracles/AlgebraOracle.sol +++ b/src/oracles/AlgebraOracle.sol @@ -5,7 +5,7 @@ import {Owned} from "solmate/auth/Owned.sol"; import {FixedPointMathLib} from "solmate/utils/FixedPointMathLib.sol"; import {IOracle} from "../interfaces/IOracle.sol"; - +import {ERC20} from "solmate/tokens/ERC20.sol"; import {IAlgebraPool} from "../interfaces/IAlgebraPool.sol"; import {TickMath} from "v3-core/libraries/TickMath.sol"; import {FullMath} from "v3-core/libraries/FullMath.sol"; @@ -70,6 +70,7 @@ contract AlgebraOracle is IOracle, Owned { /// ----------------------------------------------------------------------- constructor(IAlgebraPool algebraPool_, address token, address owner_, uint32 secs_, uint32 ago_, uint128 minPrice_) Owned(owner_) { + if (ERC20(algebraPool_.token0()).decimals() != 18 || ERC20(algebraPool_.token1()).decimals() != 18) revert AlgebraOracle__InvalidParams(); if (algebraPool_.token0() != token && algebraPool_.token1() != token) revert AlgebraOracle__InvalidParams(); if (secs_ < MIN_SECS) revert AlgebraOracle__InvalidWindow(); algebraPool = algebraPool_; diff --git a/src/oracles/ThenaOracle.sol b/src/oracles/ThenaOracle.sol index 0b2e8a1..ab43a82 100644 --- a/src/oracles/ThenaOracle.sol +++ b/src/oracles/ThenaOracle.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.13; import {Owned} from "solmate/auth/Owned.sol"; import {FixedPointMathLib} from "solmate/utils/FixedPointMathLib.sol"; - +import {ERC20} from "solmate/tokens/ERC20.sol"; import {IOracle} from "../interfaces/IOracle.sol"; import {IThenaPair} from "../interfaces/IThenaPair.sol"; @@ -64,6 +64,7 @@ contract ThenaOracle is IOracle, Owned { /// ----------------------------------------------------------------------- constructor(IThenaPair thenaPair_, address token, address owner_, uint56 secs_, uint128 minPrice_) Owned(owner_) { + if (ERC20(thenaPair_.token0()).decimals() != 18 || ERC20(thenaPair_.token1()).decimals() != 18) revert ThenaOracle__InvalidParams(); if (thenaPair_.stable()) revert ThenaOracle__StablePairsUnsupported(); if (thenaPair_.token0() != token && thenaPair_.token1() != token) revert ThenaOracle__InvalidParams(); if (secs_ < MIN_SECS) revert ThenaOracle__InvalidWindow(); diff --git a/src/oracles/UniswapV3Oracle.sol b/src/oracles/UniswapV3Oracle.sol index 8c93e6d..cbad255 100644 --- a/src/oracles/UniswapV3Oracle.sol +++ b/src/oracles/UniswapV3Oracle.sol @@ -5,7 +5,7 @@ import {Owned} from "solmate/auth/Owned.sol"; import {FixedPointMathLib} from "solmate/utils/FixedPointMathLib.sol"; import {IOracle} from "../interfaces/IOracle.sol"; - +import {ERC20} from "solmate/tokens/ERC20.sol"; import {IUniswapV3Pool} from "v3-core/interfaces/IUniswapV3Pool.sol"; import {TickMath} from "v3-core/libraries/TickMath.sol"; import {FullMath} from "v3-core/libraries/FullMath.sol"; @@ -69,6 +69,7 @@ contract UniswapV3Oracle is IOracle, Owned { /// ----------------------------------------------------------------------- constructor(IUniswapV3Pool uniswapPool_, address token, address owner_, uint32 secs_, uint32 ago_, uint128 minPrice_) Owned(owner_) { + if (ERC20(uniswapPool_.token0()).decimals() != 18 || ERC20(uniswapPool_.token1()).decimals() != 18) revert UniswapOracle__InvalidParams(); //|| ERC20(uniswapPool_.token1()).decimals() != 18 if (uniswapPool_.token0() != token && uniswapPool_.token1() != token) revert UniswapOracle__InvalidParams(); if (secs_ < MIN_SECS) revert UniswapOracle__InvalidWindow(); uniswapPool = uniswapPool_; diff --git a/test/ItMode_OptionsCompounder.t.sol b/test/ItMode_OptionsCompounder.t.sol index a4584ea..ea91da9 100644 --- a/test/ItMode_OptionsCompounder.t.sol +++ b/test/ItMode_OptionsCompounder.t.sol @@ -34,12 +34,6 @@ contract ItModeOptionsCompounder is Common { paymentToken = IERC20(MODE_MODE); underlyingToken = IERC20(MODE_WETH); addressProvider = MODE_ADDRESS_PROVIDER; - // wantToken = IERC20(OP_OP); - // paymentUnderlyingBpt = OP_OATHV2_ETH_BPT; - // paymentWantBpt = OP_WETH_OP_USDC_BPT; - // balancerVault = OP_BEETX_VAULT; - // swapRouter = ISwapRouter(OP_BEETX_VAULT); - // univ3Factory = IUniswapV3Factory(OP_UNIV3_FACTORY); veloRouter = IVeloRouter(MODE_VELO_ROUTER); veloFactory = MODE_VELO_FACTORY; @@ -54,13 +48,7 @@ contract ItModeOptionsCompounder is Common { /* Setup roles */ address[] memory strategists = new address[](1); - // address[] memory multisigRoles = new address[](3); - // address[] memory keepers = new address[](1); strategists[0] = strategist; - // multisigRoles[0] = management1; - // multisigRoles[1] = management2; - // multisigRoles[2] = management3; - // keepers[0] = keeper; /* Variables */ @@ -108,13 +96,9 @@ contract ItModeOptionsCompounder is Common { optionsTokenProxy.setExerciseContract(address(exerciser), true); /* Strategy deployment */ - // strategy = new ReaperStrategyGranary(); - // tmpProxy = new ERC1967Proxy(address(strategy), ""); - // strategy = ReaperStrategyGranary(address(tmpProxy)); optionsCompounder = new OptionsCompounder(); tmpProxy = new ERC1967Proxy(address(optionsCompounder), ""); optionsCompounder = OptionsCompounder(address(tmpProxy)); - // MockedLendingPool addressProviderAndLendingPoolMock = new MockedLendingPool(address(optionsCompounder)); console.log("Initializing..."); optionsCompounder.initialize(address(optionsTokenProxy), address(addressProvider), address(reaperSwapper), swapProps, oracle); @@ -168,12 +152,10 @@ contract ItModeOptionsCompounder is Common { SwapProps memory swapProps = SwapProps(address(reaperSwapper), address(swapRouter), ExchangeType.UniV3, 200); /* Hacker tries to perform harvest */ vm.startPrank(hacker); - // vm.expectRevert(bytes4(keccak256("OptionsCompounder__OnlyStratAllowed()"))); - // optionsCompounder.harvestOTokens(amount, address(exerciser), NON_ZERO_PROFIT); /* Hacker tries to manipulate contract configuration */ vm.expectRevert("Ownable: caller is not the owner"); - optionsCompounder.setOptionToken(randomOption); + optionsCompounder.setOptionsToken(randomOption); vm.expectRevert("Ownable: caller is not the owner"); optionsCompounder.setSwapProps(swapProps); @@ -187,7 +169,7 @@ contract ItModeOptionsCompounder is Common { /* Admin tries to set different option token */ vm.startPrank(owner); - optionsCompounder.setOptionToken(randomOption); + optionsCompounder.setOptionsToken(randomOption); vm.stopPrank(); assertEq(address(optionsCompounder.getOptionTokenAddress()), randomOption); } @@ -207,7 +189,6 @@ contract ItModeOptionsCompounder is Common { exerciser.setMultiplier(9999); vm.stopPrank(); /* Increase TWAP price to make flashloan not profitable */ - // underlyingPaymentMock.setTwapValue(initTwap + ((initTwap * 10) / 100)); /* Notice: additional protection is in exerciser: Exercise__SlippageTooHigh */ vm.expectRevert(bytes4(keccak256("OptionsCompounder__FlashloanNotProfitableEnough()"))); @@ -239,9 +220,7 @@ contract ItModeOptionsCompounder is Common { /* Notice: additional protection is in exerciser: Exercise__SlippageTooHigh */ vm.expectRevert(bytes4(keccak256("OptionsCompounder__FlashloanNotProfitableEnough()"))); /* Already approved in fixture_prepareOptionToken */ - // vm.startPrank(strategy); optionsCompounder.harvestOTokens(amount, address(exerciser), minAmountOfPayment); - // vm.stopPrank(); } function test_callExecuteOperationWithoutFlashloanTrigger(uint256 amount, address executor) public { diff --git a/test/OptionsToken.t.sol b/test/OptionsToken.t.sol index e6ccdfb..d09b8b7 100644 --- a/test/OptionsToken.t.sol +++ b/test/OptionsToken.t.sol @@ -28,6 +28,7 @@ contract OptionsTokenTest is Test { uint256 constant ORACLE_MIN_PRICE_DENOM = 10000; uint256 constant MAX_SUPPLY = 1e27; // the max supply of the options token & the underlying token uint256 constant INSTANT_EXIT_FEE = 500; + uint256 constant BPS_DENOM = 10_000; address owner; address tokenAdmin; @@ -125,7 +126,7 @@ contract OptionsTokenTest is Test { assertEqDecimal(optionsToken.balanceOf(address(this)), amount, 18); } - function test_discountExerciseHappyPath(uint256 amount) public { + function test_redeemPositiveScenario(uint256 amount) public { amount = bound(amount, 100, MAX_SUPPLY); address recipient = makeAddr("recipient"); @@ -155,7 +156,7 @@ contract OptionsTokenTest is Test { assertEqDecimal(expectedPaymentAmount, paymentAmount, 18, "exercise returned wrong value"); } - function test_instantExitExerciseHappyPath(uint256 amount) public { + function test_zapPositiveScenario(uint256 amount) public { amount = bound(amount, 1e16, 1e22); address recipient = makeAddr("recipient"); @@ -465,4 +466,106 @@ contract OptionsTokenTest is Test { vm.prank(owner); exerciser.setMinAmountToTriggerSwap(1e16); } + + function test_zapWhenExerciseUnderfunded(uint256 amount) public { + amount = bound(amount, 1e16, 1e22); + address recipient = makeAddr("recipient"); + + uint256 remainingAmount = 4e15; + + // mint options tokens + vm.prank(tokenAdmin); + optionsToken.mint(address(this), amount); + + // mint payment tokens + uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_INIT_TWAP_VALUE.mulDivUp(PRICE_MULTIPLIER, ORACLE_MIN_PRICE_DENOM)); + uint256 discountedUnderlying = amount.mulDivUp(PRICE_MULTIPLIER, 10_000); + uint256 expectedUnderlyingAmount = discountedUnderlying - discountedUnderlying.mulDivUp(INSTANT_EXIT_FEE, 10_000); + deal(address(paymentToken), address(this), expectedPaymentAmount); + console.log("discountedUnderlying:", discountedUnderlying); + console.log("expectedUnderlyingAmount:", expectedUnderlyingAmount); + uint256 calcPaymentAmount = exerciser.getPaymentAmount(amount); + uint256 totalFee = calcPaymentAmount.mulDivUp(INSTANT_EXIT_FEE, 10_000); + uint256 fee1 = totalFee.mulDivDown(feeBPS_[0], 10_000); + uint256 fee2 = totalFee - fee1; + console.log("expected paymentFee1: ", fee1); + console.log("expected paymentFee2: ", fee2); + + // Simulate sitiation when exerciser has less underlying amount than expected from exercise action + vm.prank(address(exerciser)); + // IERC20(underlyingToken).transfer(address(this), 1e27 - (discountedUnderlying - 1)); + IERC20(underlyingToken).transfer(address(this), 1e27 - remainingAmount); + console.log("Balance of exerciser:", IERC20(underlyingToken).balanceOf(address(exerciser))); + + // exercise options tokens + DiscountExerciseParams memory params = + DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: true}); + (uint256 paymentAmount,,,) = optionsToken.exercise(amount, recipient, address(exerciser), abi.encode(params)); + + // verify options tokens were transferred + assertEqDecimal(optionsToken.balanceOf(address(this)), 0, 18, "user still has options tokens"); + assertEqDecimal(optionsToken.totalSupply(), 0, 18, "option tokens not burned"); + + // verify payment tokens were transferred + assertEq(paymentToken.balanceOf(address(this)), expectedPaymentAmount, "user lost payment tokens during instant exit"); + + assertEq(paymentToken.balanceOf(feeRecipients_[0]), 0, "fee recipient 1 didn't receive payment tokens"); + assertEq(paymentToken.balanceOf(feeRecipients_[1]), 0, "fee recipient 2 didn't receive payment tokens"); + assertEqDecimal(paymentAmount, 0, 18, "exercise returned wrong value"); + assertEq(IERC20(underlyingToken).balanceOf(recipient), remainingAmount, "Recipient got wrong amount of underlying token"); + } + + function test_modeZapRedeemWithDifferentMultipliers(uint256 multiplier) public { + multiplier = bound(multiplier, BPS_DENOM / 10, BPS_DENOM - 1); + // multiplier = 8000; + uint256 amount = 1000e18; + + address recipient = makeAddr("recipient"); + + // mint options tokens + vm.prank(tokenAdmin); + optionsToken.mint(address(this), 2 * amount); + + vm.prank(owner); + exerciser.setMultiplier(multiplier); + uint256 expectedPaymentAmount = amount.mulWadUp(ORACLE_INIT_TWAP_VALUE) * 4; + deal(address(paymentToken), address(this), expectedPaymentAmount); + + uint256 underlyingBalance = + IERC20(underlyingToken).balanceOf(address(this)) + paymentToken.balanceOf(address(this)).divWadUp(oracle.getPrice()); + console.log("Price: ", oracle.getPrice()); + console.log("Balance before: ", underlyingBalance); + console.log("Underlying amount before: ", IERC20(underlyingToken).balanceOf(address(this))); + + // exercise options tokens -> redeem + DiscountExerciseParams memory params = + DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: false}); + (uint256 paymentAmount,,,) = optionsToken.exercise(amount, address(this), address(exerciser), abi.encode(params)); + + uint256 underlyingBalanceAfterRedeem = + IERC20(underlyingToken).balanceOf(address(this)) + paymentToken.balanceOf(address(this)).divWadUp(oracle.getPrice()); + console.log("Price: ", oracle.getPrice()); + console.log("Underlying amount after redeem: ", IERC20(underlyingToken).balanceOf(address(this))); + console.log("Balance after redeem: ", underlyingBalanceAfterRedeem); + + assertGt(underlyingBalanceAfterRedeem, underlyingBalance, "Redeem not profitable"); + uint256 redeemProfit = underlyingBalanceAfterRedeem - underlyingBalance; + + // exercise options tokens -> zap + params = DiscountExerciseParams({maxPaymentAmount: expectedPaymentAmount, deadline: type(uint256).max, isInstantExit: true}); + (paymentAmount,,,) = optionsToken.exercise(amount, address(this), address(exerciser), abi.encode(params)); + + uint256 underlyingBalanceAfterZap = + IERC20(underlyingToken).balanceOf(address(this)) + paymentToken.balanceOf(address(this)).divWadUp(oracle.getPrice()); + console.log("Price: ", oracle.getPrice()); + console.log("Underlying amount after zap: ", IERC20(underlyingToken).balanceOf(address(this))); + console.log("Balance after zap: ", underlyingBalanceAfterZap); + + assertGt(underlyingBalanceAfterZap, underlyingBalanceAfterRedeem, "Zap not profitable"); + uint256 zapProfit = underlyingBalanceAfterZap - underlyingBalanceAfterRedeem; + + assertGt(redeemProfit, zapProfit, "Profits from zap is greater than profits from redeem"); + + assertEq(redeemProfit - redeemProfit.mulDivUp(INSTANT_EXIT_FEE, BPS_DENOM), zapProfit, "Zap profit is different than redeem profit minus fee"); + } } diff --git a/test/UniswapV3Oracle.t.sol b/test/UniswapV3Oracle.t.sol index 794f103..afec76f 100644 --- a/test/UniswapV3Oracle.t.sol +++ b/test/UniswapV3Oracle.t.sol @@ -47,9 +47,11 @@ contract UniswapOracleTest is Test { Params _default; function setUp() public { + opFork = vm.createSelectFork(OPTIMISM_RPC_URL, FORK_BLOCK); mockV3Pool = new MockUniswapPool(); mockV3Pool.setCumulatives(sampleCumulatives); mockV3Pool.setToken0(OP_ADDRESS); + mockV3Pool.setToken1(WETH_ADDRESS); _default = Params(IUniswapV3Pool(WETH_OP_POOL_ADDRESS), OP_ADDRESS, address(this), 30 minutes, 0, 1000); swapRouter = ISwapRouter(SWAP_ROUTER_ADDRESS); @@ -59,33 +61,15 @@ contract UniswapOracleTest is Test { /// Mock tests /// ---------------------------------------------------------------------- - function test_PriceToken0() public { - UniswapV3Oracle oracle = new UniswapV3Oracle( - mockV3Pool, - OP_ADDRESS, - _default.owner, - _default.secs, - _default.ago, - _default.minPrice - ); + function test_PriceTokens() public { + UniswapV3Oracle oracle0 = new UniswapV3Oracle(mockV3Pool, OP_ADDRESS, _default.owner, _default.secs, _default.ago, _default.minPrice); + UniswapV3Oracle oracle1 = new UniswapV3Oracle(mockV3Pool, WETH_ADDRESS, _default.owner, _default.secs, _default.ago, _default.minPrice); - uint256 price = oracle.getPrice(); - assertEq(price, expectedPriceToken0); - } - - function test_PriceToken1() public { - UniswapV3Oracle oracle = new UniswapV3Oracle( - mockV3Pool, - address(0), - _default.owner, - _default.secs, - _default.ago, - _default.minPrice - ); - - uint256 price = oracle.getPrice(); - uint256 expectedPriceToken1 = price = FixedPointMathLib.divWadUp(1e18, price); - assertEq(price, expectedPriceToken1); + uint256 price0 = oracle0.getPrice(); + uint256 price1 = oracle1.getPrice(); + assertEq(price0, expectedPriceToken0); + uint256 expectedPriceToken1 = FixedPointMathLib.divWadDown(1e18, price0); + assertEq(price1, expectedPriceToken1); //precision } /// ---------------------------------------------------------------------- @@ -93,16 +77,7 @@ contract UniswapOracleTest is Test { /// ---------------------------------------------------------------------- function test_priceWithinAcceptableRange() public { - opFork = vm.createSelectFork(OPTIMISM_RPC_URL, FORK_BLOCK); - - UniswapV3Oracle oracle = new UniswapV3Oracle( - _default.pool, - _default.token, - _default.owner, - _default.secs, - _default.ago, - _default.minPrice - ); + UniswapV3Oracle oracle = new UniswapV3Oracle(_default.pool, _default.token, _default.owner, _default.secs, _default.ago, _default.minPrice); uint256 oraclePrice = oracle.getPrice(); @@ -112,16 +87,7 @@ contract UniswapOracleTest is Test { } function test_revertMinPrice() public { - opFork = vm.createSelectFork(OPTIMISM_RPC_URL, FORK_BLOCK); - - UniswapV3Oracle oracle = new UniswapV3Oracle( - _default.pool, - _default.token, - _default.owner, - _default.secs, - _default.ago, - _default.minPrice - ); + UniswapV3Oracle oracle = new UniswapV3Oracle(_default.pool, _default.token, _default.owner, _default.secs, _default.ago, _default.minPrice); skip(_default.secs); @@ -143,14 +109,8 @@ contract UniswapOracleTest is Test { swapRouter.exactInputSingle(paramsIn); // deploy a new oracle with a minPrice that is too high - UniswapV3Oracle oracleMinPrice = new UniswapV3Oracle( - _default.pool, - _default.token, - _default.owner, - _default.secs, - _default.ago, - uint128(price) - ); + UniswapV3Oracle oracleMinPrice = + new UniswapV3Oracle(_default.pool, _default.token, _default.owner, _default.secs, _default.ago, uint128(price)); skip(_default.secs); @@ -159,16 +119,7 @@ contract UniswapOracleTest is Test { } function test_singleBlockManipulation() public { - opFork = vm.createSelectFork(OPTIMISM_RPC_URL, FORK_BLOCK); - - UniswapV3Oracle oracle = new UniswapV3Oracle( - _default.pool, - _default.token, - _default.owner, - _default.secs, - _default.ago, - _default.minPrice - ); + UniswapV3Oracle oracle = new UniswapV3Oracle(_default.pool, _default.token, _default.owner, _default.secs, _default.ago, _default.minPrice); address manipulator = makeAddr("manipulator"); deal(OP_ADDRESS, manipulator, 1000000 ether); @@ -200,16 +151,8 @@ contract UniswapOracleTest is Test { function test_priceManipulation(uint256 skipTime) public { skipTime = bound(skipTime, 1, _default.secs); - opFork = vm.createSelectFork(OPTIMISM_RPC_URL, FORK_BLOCK); - UniswapV3Oracle oracle = new UniswapV3Oracle( - _default.pool, - _default.token, - _default.owner, - _default.secs, - _default.ago, - _default.minPrice - ); + UniswapV3Oracle oracle = new UniswapV3Oracle(_default.pool, _default.token, _default.owner, _default.secs, _default.ago, _default.minPrice); address manipulator = makeAddr("manipulator"); deal(OP_ADDRESS, manipulator, 1000000 ether); diff --git a/test/mocks/MockUniswapPool.sol b/test/mocks/MockUniswapPool.sol index 42cd0ba..9ef5cd4 100644 --- a/test/mocks/MockUniswapPool.sol +++ b/test/mocks/MockUniswapPool.sol @@ -6,6 +6,7 @@ import {IUniswapV3Pool} from "v3-core/interfaces/IUniswapV3Pool.sol"; contract MockUniswapPool is IUniswapV3Pool { int56[2] cumulatives; address public token0; + address public token1; function setCumulatives(int56[2] memory value) external { cumulatives = value; @@ -15,6 +16,10 @@ contract MockUniswapPool is IUniswapV3Pool { token0 = value; } + function setToken1(address value) external { + token1 = value; + } + function observe(uint32[] calldata secondsAgos) external view @@ -39,8 +44,6 @@ contract MockUniswapPool is IUniswapV3Pool { function factory() external view override returns (address) {} - function token1() external view override returns (address) {} - function fee() external view override returns (uint24) {} function tickSpacing() external view override returns (int24) {} From 7b1d4596ded1b3ae4c93978aeae18954c703a185 Mon Sep 17 00:00:00 2001 From: xRave110 Date: Tue, 9 Jul 2024 20:38:27 +0200 Subject: [PATCH 59/64] Deployment, readme and static analysis updates --- .env.example | 17 - README.md | 1599 ++++++++++++++++++++++++- scripts/00_deploySwapper.ts | 65 + scripts/01_deployOptionsTokenInfra.ts | 136 +++ scripts/config.json | 15 +- scripts/deploy.ts | 138 --- src/OptionsCompounder.sol | 2 +- src/interfaces/IOptionsCompounder.sol | 2 - 8 files changed, 1801 insertions(+), 173 deletions(-) create mode 100644 scripts/00_deploySwapper.ts create mode 100644 scripts/01_deployOptionsTokenInfra.ts delete mode 100644 scripts/deploy.ts diff --git a/.env.example b/.env.example index 93fc12e..eed0a9a 100644 --- a/.env.example +++ b/.env.example @@ -8,21 +8,4 @@ PRIVATE_KEY=XXX ETHERSCAN_KEY=XXX -# Deploy configs -VERSION="1.0.0" -OWNER=XXX -ORACLE_SOURCE=XXX # 20-80 WETH-LIT pool -ORACLE_SECS=XXX -ORACLE_AGO=XXX -ORACLE_MIN_PRICE=XXX # 18 decimals - -OT_NAME="LIT Call Option Token" -OT_SYMBOL="oLIT" -OT_PAYMENT_TOKEN=0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 # WETH -OT_UNDERLYING_TOKEN=0x4d2d32d8652058Bf98c772953E1Df5c5c85D9F45 # OATH -OT_TOKEN_ADMIN=XXX - -MULTIPLIER=5000 # 4 decimals -FEE_RECIPIENTS=0xXXX,0xXXX -FEE_BPS=5000,5000 diff --git a/README.md b/README.md index 1b4b719..1a91fd8 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ -# OptionsToken +# Description +## OptionsToken An options token representing the right to exercise any one of the whitelisted exercise contracts, allowing the user to receive different forms of discounted assets in return for the appropriate payment. The option does not expire. The options token receives user input and a specified exercise contract address, passing through to the exercise contract to execute the option. We fork https://github.com/timeless-fi/options-token, which is a simple implementation of an option for discounted tokens at an adjusted oracle rate. Here, we divorce the exercise functionality from the token contract, and allow an admin to whitelist and fund exercise contracts as the desired. We also implement more potential oracle types, and make several other minor changes. @@ -6,19 +7,48 @@ We want to ensure there are no attacks on pricing in DiscountExercise, atomicall Given the nature of this token, it is fine for the admin to have some centralized permissions (admin can mint tokens, admin is the one who funds exercise contracts, etc). The team is responsible for refilling the exercise contracts. We limit the amount of funds we leave in an exercise contract at any given time to limit risk. -# Flow of an Option Token Exercise (Ex. Discount Exercise) +### Flow of an Option Token Exercise (Ex. Discount Exercise) The user will always interact with the OptionsToken itself, and never with any exercise contract directly. -1. The user approves OptionsToken the amount of WETH they wish to spend +#### ZAP +1. User calls exercise on the OptionsToken, specifying their desired exercise contract and encoding exercise parameters +2. OptionsToken validates the exercise contract. +3. DiscountExercise decodes the parameters for the exercise function on the chosen exercise contract, and calls the specified function. In the case of zapping in DiscountExercise, the parameters are maxPaymentAmount, deadline, and isInstantExit set to true. +4. OptionsTokens are burnt. +5. A penalty fee in the form of underlying tokens (available in the contract) is calculated, then conditionally swapped to the desired token and distributed to the fee recipients. + a. Swapping and distribution occur only when the fee amount exceeds a specified trigger to avoid swapping small amounts. + b. The transaction reverts if the minimal desired amount of desired tokens is not obtained. +6. The underlying tokens available in the DiscountExercise contract are sent to the user. The amount of underlying tokens is discounted by the multiplier and reduced by the penalty fee. + +#### REDEEM +1. The user approves OptionsToken the amount of Payment Token they wish to spend 2. User calls exercise on the OptionsToken, specifying their desired exercise contract and encoding exercise parameters -3. OptionsToken validates the exercise contract, decodes the parameters for the exercise function on the exercise contract of choice, and calls said function. In the case of DiscountExercise, the params are maxPaymentAmount and deadline. +3. OptionsToken validates the exercise contract, decodes the parameters for the exercise function on the exercise contract of choice, and calls said function. In the case of DiscountExercise, the params are maxPaymentAmount, deadline and isInstantExit set to false. 4. oTokens are burnt, WETH is sent to the treasury, and underlyingTokens, discounted by the multiplier, are sent to the user exercising a. Can be priced using balancer, thena, univ3 twap oracles b. Reverts above maxPaymentAmount or past deadline +## OptionsCompounder + +The Compounder platform facilitates the utilization of flash loans to exercise the option, enabling the acquisition of the underlying token at a discounted rate via payment token. + +### Flow of an Options Compounder (Ex. Discount Exercise) - strategy usage + +1. Admin configures swap paths, oracles, initializer args, etc +2. Strategy has an oToken balance +3. Keeper calls harvestOTokens +4. Calculate Payment Amount from Discount Exercise given oToken balance +5. Flashloan the necessary amount of funds to exercise in paymentToken +6. Callback from flashloan is called + a. oTokens are exercised using paymentToken that was flash loaned + b. Underlying token is received by the strategy + c. Calculate minAmountOut by directly querying the same oracle consumed by the DiscountExercise we interact with + d. Swap entire amount into payment token to repay flashloan + e. Assess profitability in units of paymentToken, swap profits to want of the strategy if not same token as paymentToken + f. Emit event that reflects the oTokens compounded -## Installation +# Installation To install with [DappTools](https://github.com/dapphub/dapptools): @@ -48,15 +78,35 @@ forge install forge build ``` -### Testing +# Testing + +## Dynamic ``` forge test ``` -### Checklist +`--report lcov` - coverage which can be turned on in code using "Coverage Gutters" + +## Static + +`slither . --include-path src/` + +`--checklist` - report in md -#### Internal Audit Checklist +`--print inheritance-graph` - generate inheritance graph in xdot + +`xdot inheritance-graph.dot` - open inheritance graph + +# Deployment + +Inside `./scripts` there is "config.json" where can be defined deployment configurations. +You can choose which contract to deploy by adding/removing string in CONTRACTS_TO_DEPLOY. If some contracts are removed, there must be defined the address for already existing contract on the chain (example: SWAPPER, OPTIONS_COMPOUNDER). +There are 2 deployment scripts. One is for swapper and paths updates and second for all optionsToken infra (swapper address must be passed here). + +# Checklist + +## Internal Audit Checklist - [x] All functionality that touches funds can be paused - [ ] Pause function called by 2/7 Guardian @@ -65,24 +115,1545 @@ forge test - [x] Re-entrancy - [x] Flashloans - [x] Access Control -- [x] Unchecked External Calls -- [ ] Account abstraction/multicall issues -- [x] USE SLITHER +- [x] (N/A) Unchecked External Calls +- [x] (N/A) Account abstraction/multicall issues +- [x] Static analysis -> Slither + - [x] [Discount-Exercise](#discount-exercise-slither) + - [x] [Options-Compounder](#options-compounder-slither) + - [x] [Options-Token](#options-token-slither) + - [x] [Thena-Oracle](#thena-oracle-slither) + - [x] [Base-Exercise](#base-exercise-slither) -#### Pre-deployment Checklist +## Pre-deployment Checklist - [x] Contracts pass all tests - [x] Contracts deployed to testnet + - [x] [DiscountExercise](https://explorer.mode.network/address/0xeE89a9e5022f967Fc2DDb0dEbfFb72bFc4FB4692?tab=contract) + - [x] [ReaperSwapper](https://explorer.mode.network/address/0xd57957A73634B860f0E8c1907371BD4f3e42C2C3?tab=contract) + - [x] [VeloOracle](https://explorer.mode.network/address/0x52B2732b29B4d6444e9930D7C328c082dA033d66?tab=contract) + - [x] [OptionsToken](https://explorer.mode.network/address/0x8013e0c13D9262094D0A2cFC8DF2Aa11cE4D8203?tab=contract) + - [x] [OptionsCompounder](https://explorer.mode.network/address/0x80c1FccB0c01A1EEafB422719A6A1048Fe92033f?=contract) - [x] Does this deployment have access to funds, either directly or indirectly (zappers, leveragers, etc.)? Minimum security if Yes: - [x] Internal Audit (not the author, minimum 1x Junior review + minimum 1x Senior review) - [x] External Audit (impact scope) + - [x] [OptionsToken zapping feature scope](https://docs.google.com/document/d/1HrmXSEKuBK5U9Ix8ZSkAYf2VEYwxZ17piOjhjY4XPzs/edit?usp=drive_link) + - [x] [OptionsToken zapping feature audit](https://drive.google.com/file/d/1kbYnVN1HJrpllkMXXb4mmwLeU361YASG/view?usp=drive_link) + - [x] [OptionsCompounder integration scope](https://docs.google.com/document/d/1eKcyiVvmux2wv2P92qLQLSYIgbD-qETurHObyhOLh8Y/edit?usp=drive_link) + - [x] [OptionsCompounder integration audit](https://drive.google.com/file/d/1GR0Jnxo9Txa6sJ8aM_mP4xBfaBJ9UNG2/view) Action items in support of deployment: - [ ] Minimum two people present for deployment - [x] All developers who worked on and reviewed the contract should be included in the readme - Developers involved: Eidolon (reviewer), Zokunei (reviewer), Goober (reviewer), Beirao (reviewer), xRave110 (change owner) -- [ ] Documentation of deployment procedure if non-standard (i.e. if multiple scripts are necessary) \ No newline at end of file + - Developers involved: xRave110 (change owner), Eidolon (reviewer), Zokunei (reviewer), Goober (reviewer), Beirao (reviewer) +- [ ] Documentation of deployment procedure if non-standard (i.e. if multiple scripts are necessary) + + +## Discount Exercise Slither + +Summary + - [reentrancy-no-eth](#reentrancy-no-eth) (1 results) (Medium) + - [unused-return](#unused-return) (2 results) (Medium) + - [reentrancy-benign](#reentrancy-benign) (1 results) (Low) + - [reentrancy-events](#reentrancy-events) (4 results) (Low) + - [timestamp](#timestamp) (2 results) (Low) + - [pragma](#pragma) (1 results) (Informational) + - [solc-version](#solc-version) (1 results) (Informational) + - [naming-convention](#naming-convention) (3 results) (Informational) + - [unused-import](#unused-import) (2 results) (Informational) +## reentrancy-no-eth +Impact: Medium +Confidence: Medium + - [ ] ID-0 +Reentrancy in [DiscountExercise._zap(address,uint256,address,DiscountExerciseParams)](src/exercise/DiscountExercise.sol#L211-L249): + External calls: + - [underlyingToken.approve(swapProps.swapper,feeAmount)](src/exercise/DiscountExercise.sol#L228) + - [amountOut = _generalSwap(swapProps.exchangeTypes,address(underlyingToken),address(paymentToken),feeAmount,minAmountOut,swapProps.exchangeAddress)](src/exercise/DiscountExercise.sol#L230-L232) + - [_swapper.swapUniV2(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L72) + - [_swapper.swapBal(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L74) + - [_swapper.swapVelo(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L76) + - [_swapper.swapUniV3(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L78) + State variables written after the call(s): + - [feeAmount = 0](src/exercise/DiscountExercise.sol#L238) + [DiscountExercise.feeAmount](src/exercise/DiscountExercise.sol#L74) can be used in cross function reentrancies: + - [DiscountExercise._zap(address,uint256,address,DiscountExerciseParams)](src/exercise/DiscountExercise.sol#L211-L249) + +src/exercise/DiscountExercise.sol#L211-L249 + +Justification: External call is happening to well known dexes which are verified against any reentrancy attacks but fix may be implemented using additional temporary variable. + +## unused-return +Impact: Medium +Confidence: Medium + - [ ] ID-1 +[DiscountExercise._zap(address,uint256,address,DiscountExerciseParams)](src/exercise/DiscountExercise.sol#L211-L249) ignores return value by [underlyingToken.approve(swapProps.swapper,feeAmount)](src/exercise/DiscountExercise.sol#L228) + +src/exercise/DiscountExercise.sol#L211-L249 + + + - [ ] ID-2 +[DiscountExercise._zap(address,uint256,address,DiscountExerciseParams)](src/exercise/DiscountExercise.sol#L211-L249) ignores return value by [underlyingToken.approve(swapProps.swapper,0)](src/exercise/DiscountExercise.sol#L239) + +src/exercise/DiscountExercise.sol#L211-L249 + +Justification: It is just potential DOS which is very unlikely. + +## reentrancy-benign +Impact: Low +Confidence: Medium + - [ ] ID-3 +Reentrancy in [DiscountExercise._pay(address,uint256)](src/exercise/DiscountExercise.sol#L269-L278): + External calls: + - [underlyingToken.safeTransfer(to,balance)](src/exercise/DiscountExercise.sol#L272) + - [underlyingToken.safeTransfer(to,amount)](src/exercise/DiscountExercise.sol#L275) + State variables written after the call(s): + - [credit[to] += remainingAmount](src/exercise/DiscountExercise.sol#L277) + +src/exercise/DiscountExercise.sol#L269-L278 + +Justification: Tokens are set by the addresses with special access role who knows that onReceiveErc20 hook might lead to the potential reentrancy attack. + +## reentrancy-events +Impact: Low +Confidence: Medium + - [ ] ID-4 +Reentrancy in [DiscountExercise._zap(address,uint256,address,DiscountExerciseParams)](src/exercise/DiscountExercise.sol#L211-L249): + External calls: + - [underlyingToken.approve(swapProps.swapper,feeAmount)](src/exercise/DiscountExercise.sol#L228) + - [amountOut = _generalSwap(swapProps.exchangeTypes,address(underlyingToken),address(paymentToken),feeAmount,minAmountOut,swapProps.exchangeAddress)](src/exercise/DiscountExercise.sol#L230-L232) + - [_swapper.swapUniV2(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L72) + - [_swapper.swapBal(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L74) + - [_swapper.swapVelo(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L76) + - [_swapper.swapUniV3(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L78) + - [underlyingToken.approve(swapProps.swapper,0)](src/exercise/DiscountExercise.sol#L239) + - [distributeFees(paymentToken.balanceOf(address(this)),paymentToken)](src/exercise/DiscountExercise.sol#L242) + - [returndata = address(token).functionCall(data,SafeERC20: low-level call failed)](lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#L110) + - [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135) + - [token.safeTransfer(feeRecipients[i],feeAmount)](src/exercise/BaseExercise.sol#L90) + - [token.safeTransfer(feeRecipients[feeRecipients.length - 1],remaining)](src/exercise/BaseExercise.sol#L93) + - [_pay(recipient,underlyingAmount)](src/exercise/DiscountExercise.sol#L246) + - [returndata = address(token).functionCall(data,SafeERC20: low-level call failed)](lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#L110) + - [underlyingToken.safeTransfer(to,balance)](src/exercise/DiscountExercise.sol#L272) + - [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135) + - [underlyingToken.safeTransfer(to,amount)](src/exercise/DiscountExercise.sol#L275) + External calls sending eth: + - [distributeFees(paymentToken.balanceOf(address(this)),paymentToken)](src/exercise/DiscountExercise.sol#L242) + - [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135) + - [_pay(recipient,underlyingAmount)](src/exercise/DiscountExercise.sol#L246) + - [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135) + Event emitted after the call(s): + - [Exercised(from,recipient,underlyingAmount,paymentAmount)](src/exercise/DiscountExercise.sol#L248) + +src/exercise/DiscountExercise.sol#L211-L249 + + + - [ ] ID-5 +Reentrancy in [DiscountExercise.claim(address)](src/exercise/DiscountExercise.sol#L134-L140): + External calls: + - [underlyingToken.safeTransfer(to,amount)](src/exercise/DiscountExercise.sol#L138) + Event emitted after the call(s): + - [Claimed(amount)](src/exercise/DiscountExercise.sol#L139) + +src/exercise/DiscountExercise.sol#L134-L140 + + + - [ ] ID-6 +Reentrancy in [DiscountExercise._zap(address,uint256,address,DiscountExerciseParams)](src/exercise/DiscountExercise.sol#L211-L249): + External calls: + - [underlyingToken.approve(swapProps.swapper,feeAmount)](src/exercise/DiscountExercise.sol#L228) + - [amountOut = _generalSwap(swapProps.exchangeTypes,address(underlyingToken),address(paymentToken),feeAmount,minAmountOut,swapProps.exchangeAddress)](src/exercise/DiscountExercise.sol#L230-L232) + - [_swapper.swapUniV2(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L72) + - [_swapper.swapBal(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L74) + - [_swapper.swapVelo(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L76) + - [_swapper.swapUniV3(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L78) + - [underlyingToken.approve(swapProps.swapper,0)](src/exercise/DiscountExercise.sol#L239) + - [distributeFees(paymentToken.balanceOf(address(this)),paymentToken)](src/exercise/DiscountExercise.sol#L242) + - [returndata = address(token).functionCall(data,SafeERC20: low-level call failed)](lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#L110) + - [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135) + - [token.safeTransfer(feeRecipients[i],feeAmount)](src/exercise/BaseExercise.sol#L90) + - [token.safeTransfer(feeRecipients[feeRecipients.length - 1],remaining)](src/exercise/BaseExercise.sol#L93) + External calls sending eth: + - [distributeFees(paymentToken.balanceOf(address(this)),paymentToken)](src/exercise/DiscountExercise.sol#L242) + - [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135) + Event emitted after the call(s): + - [DistributeFees(feeRecipients,feeBPS,totalAmount)](src/exercise/BaseExercise.sol#L94) + - [distributeFees(paymentToken.balanceOf(address(this)),paymentToken)](src/exercise/DiscountExercise.sol#L242) + +src/exercise/DiscountExercise.sol#L211-L249 + + + - [ ] ID-7 +Reentrancy in [DiscountExercise._redeem(address,uint256,address,DiscountExerciseParams)](src/exercise/DiscountExercise.sol#L252-L267): + External calls: + - [distributeFeesFrom(paymentAmount,paymentToken,from)](src/exercise/DiscountExercise.sol#L262) + - [returndata = address(token).functionCall(data,SafeERC20: low-level call failed)](lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#L110) + - [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135) + - [token.safeTransferFrom(from,feeRecipients[i],feeAmount)](src/exercise/BaseExercise.sol#L77) + - [token.safeTransferFrom(from,feeRecipients[feeRecipients.length - 1],remaining)](src/exercise/BaseExercise.sol#L80) + - [_pay(recipient,amount)](src/exercise/DiscountExercise.sol#L264) + - [returndata = address(token).functionCall(data,SafeERC20: low-level call failed)](lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#L110) + - [underlyingToken.safeTransfer(to,balance)](src/exercise/DiscountExercise.sol#L272) + - [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135) + - [underlyingToken.safeTransfer(to,amount)](src/exercise/DiscountExercise.sol#L275) + External calls sending eth: + - [distributeFeesFrom(paymentAmount,paymentToken,from)](src/exercise/DiscountExercise.sol#L262) + - [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135) + - [_pay(recipient,amount)](src/exercise/DiscountExercise.sol#L264) + - [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135) + Event emitted after the call(s): + - [Exercised(from,recipient,amount,paymentAmount)](src/exercise/DiscountExercise.sol#L266) + +src/exercise/DiscountExercise.sol#L252-L267 + + +## timestamp +Impact: Low +Confidence: Medium + - [ ] ID-8 +[DiscountExercise._redeem(address,uint256,address,DiscountExerciseParams)](src/exercise/DiscountExercise.sol#L252-L267) uses timestamp for comparisons + Dangerous comparisons: + - [block.timestamp > params.deadline](src/exercise/DiscountExercise.sol#L257) + +src/exercise/DiscountExercise.sol#L252-L267 + + + - [ ] ID-9 +[DiscountExercise._zap(address,uint256,address,DiscountExerciseParams)](src/exercise/DiscountExercise.sol#L211-L249) uses timestamp for comparisons + Dangerous comparisons: + - [block.timestamp > params.deadline](src/exercise/DiscountExercise.sol#L215) + +src/exercise/DiscountExercise.sol#L211-L249 + + +## pragma +Impact: Informational +Confidence: High + - [ ] ID-10 +11 different versions of Solidity are used: + - Version constraint ^0.8.0 is used by: + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlEnumerableUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1967Upgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/security/PausableUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/IERC20MetadataUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#L5) + -[^0.8.0](lib/openzeppelin-contracts/contracts/security/Pausable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts/contracts/utils/Context.sol#L4) + -[^0.8.0](lib/v3-core/contracts/libraries/FullMath.sol#L2) + -[^0.8.0](lib/v3-core/contracts/libraries/TickMath.sol#L2) + -[^0.8.0](lib/vault-v2/src/ReaperSwapper.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/AggregatorV3Interface.sol#L4) + -[^0.8.0](lib/vault-v2/src/interfaces/IAsset.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/IAuthorizer.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/IBasePool.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/IBaseWeightedPool.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/IBeetVault.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/IPoolSwapStructs.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/ISignaturesValidator.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/ISwapErrors.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/ISwapper.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/ISwapperSwaps.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/ITemporarilyPausable.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/IUniswapV2Router01.sol#L2) + -[^0.8.0](lib/vault-v2/src/interfaces/IVeloPair.sol#L2) + -[^0.8.0](lib/vault-v2/src/interfaces/IVeloRouter.sol#L2) + -[^0.8.0](lib/vault-v2/src/interfaces/IVeloV1AndV2Factory.sol#L2) + -[^0.8.0](lib/vault-v2/src/libraries/Babylonian.sol#L3) + -[^0.8.0](lib/vault-v2/src/libraries/ReaperMathUtils.sol#L3) + -[^0.8.0](lib/vault-v2/src/mixins/BalMixin.sol#L3) + -[^0.8.0](lib/vault-v2/src/mixins/ReaperAccessControl.sol#L5) + -[^0.8.0](lib/vault-v2/src/mixins/UniV2Mixin.sol#L3) + -[^0.8.0](lib/vault-v2/src/mixins/UniV3Mixin.sol#L3) + -[^0.8.0](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L3) + -[^0.8.0](src/OptionsCompounder.sol#L3) + -[^0.8.0](src/interfaces/IBalancerTwapOracle.sol#L15) + -[^0.8.0](src/interfaces/IFlashLoanReceiver.sol#L2) + -[^0.8.0](src/interfaces/ILendingPool.sol#L2) + -[^0.8.0](src/interfaces/ILendingPoolAddressesProvider.sol#L2) + -[^0.8.0](src/interfaces/IOptionsCompounder.sol#L3) + -[^0.8.0](src/interfaces/ISwapperSwaps.sol#L3) + -[^0.8.0](src/libraries/DataTypes.sol#L2) + - Version constraint ^0.8.2 is used by: + -[^0.8.2](lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#L4) + -[^0.8.2](lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol#L4) + - Version constraint ^0.8.1 is used by: + -[^0.8.1](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L4) + -[^0.8.1](lib/openzeppelin-contracts/contracts/utils/Address.sol#L4) + - Version constraint >=0.8.0 is used by: + -[>=0.8.0](lib/solmate/src/auth/Owned.sol#L2) + -[>=0.8.0](lib/solmate/src/tokens/ERC20.sol#L2) + -[>=0.8.0](lib/solmate/src/utils/FixedPointMathLib.sol#L2) + - Version constraint >=0.5.0 is used by: + -[>=0.5.0](lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol#L2) + -[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol#L2) + -[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol#L2) + -[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol#L2) + -[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol#L2) + -[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol#L2) + -[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol#L2) + -[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol#L2) + -[>=0.5.0](lib/vault-v2/src/interfaces/IPeripheryImmutableState.sol#L2) + -[>=0.5.0](lib/vault-v2/src/interfaces/IUniswapV3Factory.sol#L2) + -[>=0.5.0](lib/vault-v2/src/interfaces/IUniswapV3SwapCallback.sol#L2) + -[>=0.5.0](src/interfaces/IAlgebraPool.sol#L2) + - Version constraint >=0.7.5 is used by: + -[>=0.7.5](lib/vault-v2/src/interfaces/ISwapRouter.sol#L2) + - Version constraint >=0.6.2 is used by: + -[>=0.6.2](lib/vault-v2/src/interfaces/IUniswapV2Router02.sol#L2) + - Version constraint >=0.6.0 is used by: + -[>=0.6.0](lib/vault-v2/src/libraries/TransferHelper.sol#L2) + - Version constraint ^0.8.13 is used by: + -[^0.8.13](src/OptionsToken.sol#L2) + -[^0.8.13](src/exercise/BaseExercise.sol#L2) + -[^0.8.13](src/exercise/DiscountExercise.sol#L2) + -[^0.8.13](src/helpers/SwapHelper.sol#L3) + -[^0.8.13](src/interfaces/IBalancer2TokensPool.sol#L2) + -[^0.8.13](src/interfaces/IExercise.sol#L2) + -[^0.8.13](src/interfaces/IOptionsToken.sol#L2) + -[^0.8.13](src/oracles/AlgebraOracle.sol#L2) + -[^0.8.13](src/oracles/BalancerOracle.sol#L2) + -[^0.8.13](src/oracles/ThenaOracle.sol#L2) + -[^0.8.13](src/oracles/UniswapV3Oracle.sol#L2) + - Version constraint >=0.7.0<0.9.0 is used by: + -[>=0.7.0<0.9.0](src/interfaces/IBalancerVault.sol#L17) + -[>=0.7.0<0.9.0](src/interfaces/IERC20Mintable.sol#L3) + -[>=0.7.0<0.9.0](src/interfaces/IOracle.sol#L3) + - Version constraint >=0.5 is used by: + -[>=0.5](src/interfaces/IThenaPair.sol#L1) + +lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#L4 + + +## solc-version +Impact: Informational +Confidence: High + - [ ] ID-11 +Version constraint ^0.8.13 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) + - VerbatimInvalidDeduplication + - FullInlinerNonExpressionSplitArgumentEvaluationOrder + - MissingSideEffectsOnSelectorAccess + - StorageWriteRemovalBeforeConditionalTermination + - AbiReencodingHeadOverflowWithStaticArrayCleanup + - DirtyBytesArrayToStorage + - InlineAssemblyMemorySideEffects + - DataLocationChangeInInternalOverride + - NestedCalldataArrayAbiReencodingSizeValidation. +It is used by: + - [^0.8.13](src/OptionsToken.sol#L2) + - [^0.8.13](src/exercise/BaseExercise.sol#L2) + - [^0.8.13](src/exercise/DiscountExercise.sol#L2) + - [^0.8.13](src/helpers/SwapHelper.sol#L3) + - [^0.8.13](src/interfaces/IBalancer2TokensPool.sol#L2) + - [^0.8.13](src/interfaces/IExercise.sol#L2) + - [^0.8.13](src/interfaces/IOptionsToken.sol#L2) + - [^0.8.13](src/oracles/AlgebraOracle.sol#L2) + - [^0.8.13](src/oracles/BalancerOracle.sol#L2) + - [^0.8.13](src/oracles/ThenaOracle.sol#L2) + - [^0.8.13](src/oracles/UniswapV3Oracle.sol#L2) + +src/OptionsToken.sol#L2 + + +## naming-convention +Impact: Informational +Confidence: High + - [ ] ID-12 +Parameter [DiscountExercise.setSwapProps(SwapProps)._swapProps](src/exercise/DiscountExercise.sol#L143) is not in mixedCase + +src/exercise/DiscountExercise.sol#L143 + + + - [ ] ID-13 +Parameter [DiscountExercise.setMinAmountToTriggerSwap(uint256)._minAmountToTriggerSwap](src/exercise/DiscountExercise.sol#L193) is not in mixedCase + +src/exercise/DiscountExercise.sol#L193 + + + - [ ] ID-14 +Parameter [DiscountExercise.setInstantExitFee(uint256)._instantExitFee](src/exercise/DiscountExercise.sol#L179) is not in mixedCase + +src/exercise/DiscountExercise.sol#L179 + + +## unused-import +Impact: Informational +Confidence: High + - [ ] ID-15 +The following unused import(s) in src/interfaces/IOptionsCompounder.sol should be removed: + -import {IOptionsToken} from "./IOptionsToken.sol"; (src/interfaces/IOptionsCompounder.sol#5) + + - [ ] ID-16 +The following unused import(s) in src/OptionsCompounder.sol should be removed: + -import {ReaperAccessControl} from "vault-v2/mixins/ReaperAccessControl.sol"; (src/OptionsCompounder.sol#11) + +INFO:Slither:. analyzed (100 contracts with 94 detectors), 17 result(s) found + +## Options Compounder Slither + +Summary + - [arbitrary-send-erc20](#arbitrary-send-erc20) (1 results) (High) + - [reentrancy-eth](#reentrancy-eth) (1 results) (High) + - [incorrect-equality](#incorrect-equality) (1 results) (Medium) + - [unused-return](#unused-return) (6 results) (Medium) + - [missing-zero-check](#missing-zero-check) (1 results) (Low) + - [reentrancy-benign](#reentrancy-benign) (1 results) (Low) + - [reentrancy-events](#reentrancy-events) (1 results) (Low) + - [timestamp](#timestamp) (1 results) (Low) + - [boolean-equal](#boolean-equal) (3 results) (Informational) + - [pragma](#pragma) (1 results) (Informational) + - [solc-version](#solc-version) (1 results) (Informational) + - [missing-inheritance](#missing-inheritance) (1 results) (Informational) + - [naming-convention](#naming-convention) (13 results) (Informational) +## arbitrary-send-erc20 +Impact: High +Confidence: High + - [ ] ID-0 +[OptionsCompounder._exerciseOptionAndReturnDebt(address,uint256,uint256,bytes)](src/OptionsCompounder.sol#L241-L320) uses arbitrary from in transferFrom: [IERC20(address(optionsToken)).safeTransferFrom(flashloanParams.sender,address(this),flashloanParams.optionsAmount)](src/OptionsCompounder.sol#L258) + +src/OptionsCompounder.sol#L241-L320 + + +## reentrancy-eth +Impact: High +Confidence: Medium + - [ ] ID-1 +Reentrancy in [OptionsCompounder.executeOperation(address[],uint256[],uint256[],address,bytes)](src/OptionsCompounder.sol#L214-L230): + External calls: + - [_exerciseOptionAndReturnDebt(assets[0],amounts[0],premiums[0],params)](src/OptionsCompounder.sol#L227) + - [returndata = address(token).functionCall(data,SafeERC20: low-level call failed)](lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#L110) + - [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135) + - [_swapper.swapUniV2(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L72) + - [_swapper.swapBal(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L74) + - [_swapper.swapVelo(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L76) + - [IERC20(address(optionsToken)).safeTransferFrom(flashloanParams.sender,address(this),flashloanParams.optionsAmount)](src/OptionsCompounder.sol#L258) + - [_swapper.swapUniV3(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L78) + - [IERC20(asset).approve(flashloanParams.exerciserContract,amount)](src/OptionsCompounder.sol#L265) + - [optionsToken.exercise(flashloanParams.optionsAmount,address(this),flashloanParams.exerciserContract,exerciseParams)](src/OptionsCompounder.sol#L267) + - [IERC20(asset).approve(flashloanParams.exerciserContract,0)](src/OptionsCompounder.sol#L270) + - [underlyingToken.approve(swapper,balanceOfUnderlyingToken)](src/OptionsCompounder.sol#L280) + - [underlyingToken.approve(swapper,0)](src/OptionsCompounder.sol#L292) + - [IERC20(asset).approve(address(lendingPool),totalAmountToPay)](src/OptionsCompounder.sol#L315) + - [IERC20(asset).safeTransfer(flashloanParams.sender,gainInPaymentToken)](src/OptionsCompounder.sol#L316) + External calls sending eth: + - [_exerciseOptionAndReturnDebt(assets[0],amounts[0],premiums[0],params)](src/OptionsCompounder.sol#L227) + - [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135) + State variables written after the call(s): + - [flashloanFinished = true](src/OptionsCompounder.sol#L228) + [OptionsCompounder.flashloanFinished](src/OptionsCompounder.sol#L48) can be used in cross function reentrancies: + - [OptionsCompounder._harvestOTokens(uint256,address,uint256)](src/OptionsCompounder.sol#L164-L202) + - [OptionsCompounder.executeOperation(address[],uint256[],uint256[],address,bytes)](src/OptionsCompounder.sol#L214-L230) + - [OptionsCompounder.initialize(address,address,address,SwapProps,IOracle)](src/OptionsCompounder.sol#L74-L87) + +src/OptionsCompounder.sol#L214-L230 + + +## incorrect-equality +Impact: Medium +Confidence: High + - [ ] ID-2 +[OptionsCompounder._exerciseOptionAndReturnDebt(address,uint256,uint256,bytes)](src/OptionsCompounder.sol#L241-L320) uses a dangerous strict equality: + - [swapAmountOut == 0](src/OptionsCompounder.sol#L287) + +src/OptionsCompounder.sol#L241-L320 + + +## unused-return +Impact: Medium +Confidence: Medium + - [ ] ID-3 +[OptionsCompounder._exerciseOptionAndReturnDebt(address,uint256,uint256,bytes)](src/OptionsCompounder.sol#L241-L320) ignores return value by [IERC20(asset).approve(flashloanParams.exerciserContract,0)](src/OptionsCompounder.sol#L270) + +src/OptionsCompounder.sol#L241-L320 + + + - [ ] ID-4 +[OptionsCompounder._exerciseOptionAndReturnDebt(address,uint256,uint256,bytes)](src/OptionsCompounder.sol#L241-L320) ignores return value by [IERC20(asset).approve(address(lendingPool),totalAmountToPay)](src/OptionsCompounder.sol#L315) + +src/OptionsCompounder.sol#L241-L320 + + + - [ ] ID-5 +[OptionsCompounder._exerciseOptionAndReturnDebt(address,uint256,uint256,bytes)](src/OptionsCompounder.sol#L241-L320) ignores return value by [underlyingToken.approve(swapper,balanceOfUnderlyingToken)](src/OptionsCompounder.sol#L280) + +src/OptionsCompounder.sol#L241-L320 + + + - [ ] ID-6 +[OptionsCompounder._exerciseOptionAndReturnDebt(address,uint256,uint256,bytes)](src/OptionsCompounder.sol#L241-L320) ignores return value by [underlyingToken.approve(swapper,0)](src/OptionsCompounder.sol#L292) + +src/OptionsCompounder.sol#L241-L320 + + + - [ ] ID-7 +[OptionsCompounder._exerciseOptionAndReturnDebt(address,uint256,uint256,bytes)](src/OptionsCompounder.sol#L241-L320) ignores return value by [IERC20(asset).approve(flashloanParams.exerciserContract,amount)](src/OptionsCompounder.sol#L265) + +src/OptionsCompounder.sol#L241-L320 + + + - [ ] ID-8 +[OptionsCompounder._exerciseOptionAndReturnDebt(address,uint256,uint256,bytes)](src/OptionsCompounder.sol#L241-L320) ignores return value by [optionsToken.exercise(flashloanParams.optionsAmount,address(this),flashloanParams.exerciserContract,exerciseParams)](src/OptionsCompounder.sol#L267) + +src/OptionsCompounder.sol#L241-L320 + + +## missing-zero-check +Impact: Low +Confidence: Medium + - [ ] ID-9 +[OptionsCompounder.initiateUpgradeCooldown(address)._nextImplementation](src/OptionsCompounder.sol#L326) lacks a zero-check on : + - [nextImplementation = _nextImplementation](src/OptionsCompounder.sol#L328) + +src/OptionsCompounder.sol#L326 + + +## reentrancy-benign +Impact: Low +Confidence: Medium + - [ ] ID-10 +Reentrancy in [OptionsCompounder._harvestOTokens(uint256,address,uint256)](src/OptionsCompounder.sol#L164-L202): + External calls: + - [optionsToken.isExerciseContract(exerciseContract) == false](src/OptionsCompounder.sol#L166) + State variables written after the call(s): + - [flashloanFinished = false](src/OptionsCompounder.sol#L192) + +src/OptionsCompounder.sol#L164-L202 + + +## reentrancy-events +Impact: Low +Confidence: Medium + - [ ] ID-11 +Reentrancy in [OptionsCompounder._exerciseOptionAndReturnDebt(address,uint256,uint256,bytes)](src/OptionsCompounder.sol#L241-L320): + External calls: + - [IERC20(address(optionsToken)).safeTransferFrom(flashloanParams.sender,address(this),flashloanParams.optionsAmount)](src/OptionsCompounder.sol#L258) + - [IERC20(asset).approve(flashloanParams.exerciserContract,amount)](src/OptionsCompounder.sol#L265) + - [optionsToken.exercise(flashloanParams.optionsAmount,address(this),flashloanParams.exerciserContract,exerciseParams)](src/OptionsCompounder.sol#L267) + - [IERC20(asset).approve(flashloanParams.exerciserContract,0)](src/OptionsCompounder.sol#L270) + - [underlyingToken.approve(swapper,balanceOfUnderlyingToken)](src/OptionsCompounder.sol#L280) + - [swapAmountOut = _generalSwap(swapProps.exchangeTypes,address(underlyingToken),asset,balanceOfUnderlyingToken,minAmountOut,swapProps.exchangeAddress)](src/OptionsCompounder.sol#L283-L285) + - [_swapper.swapUniV2(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L72) + - [_swapper.swapBal(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L74) + - [_swapper.swapVelo(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L76) + - [_swapper.swapUniV3(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L78) + - [underlyingToken.approve(swapper,0)](src/OptionsCompounder.sol#L292) + - [IERC20(asset).approve(address(lendingPool),totalAmountToPay)](src/OptionsCompounder.sol#L315) + - [IERC20(asset).safeTransfer(flashloanParams.sender,gainInPaymentToken)](src/OptionsCompounder.sol#L316) + Event emitted after the call(s): + - [OTokenCompounded(gainInPaymentToken,totalAmountToPay)](src/OptionsCompounder.sol#L318) + +src/OptionsCompounder.sol#L241-L320 + + +## timestamp +Impact: Low +Confidence: Medium + - [ ] ID-12 +[OptionsCompounder._authorizeUpgrade(address)](src/OptionsCompounder.sol#L350-L354) uses timestamp for comparisons + Dangerous comparisons: + - [require(bool,string)(upgradeProposalTime + UPGRADE_TIMELOCK < block.timestamp,Upgrade cooldown not initiated or still ongoing)](src/OptionsCompounder.sol#L351) + +src/OptionsCompounder.sol#L350-L354 + + +## boolean-equal +Impact: Informational +Confidence: High + - [ ] ID-13 +[OptionsCompounder._harvestOTokens(uint256,address,uint256)](src/OptionsCompounder.sol#L164-L202) compares to a boolean constant: + -[optionsToken.isExerciseContract(exerciseContract) == false](src/OptionsCompounder.sol#L166) + +src/OptionsCompounder.sol#L164-L202 + + + - [ ] ID-14 +[OptionsCompounder._harvestOTokens(uint256,address,uint256)](src/OptionsCompounder.sol#L164-L202) compares to a boolean constant: + -[flashloanFinished == false](src/OptionsCompounder.sol#L170) + +src/OptionsCompounder.sol#L164-L202 + + + - [ ] ID-15 +[OptionsCompounder.executeOperation(address[],uint256[],uint256[],address,bytes)](src/OptionsCompounder.sol#L214-L230) compares to a boolean constant: + -[flashloanFinished != false || msg.sender != address(lendingPool)](src/OptionsCompounder.sol#L219) + +src/OptionsCompounder.sol#L214-L230 + + +## pragma +Impact: Informational +Confidence: High + - [ ] ID-16 +11 different versions of Solidity are used: + - Version constraint ^0.8.0 is used by: + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlEnumerableUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1967Upgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/security/PausableUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/IERC20MetadataUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#L5) + -[^0.8.0](lib/openzeppelin-contracts/contracts/security/Pausable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts/contracts/utils/Context.sol#L4) + -[^0.8.0](lib/v3-core/contracts/libraries/FullMath.sol#L2) + -[^0.8.0](lib/v3-core/contracts/libraries/TickMath.sol#L2) + -[^0.8.0](lib/vault-v2/src/ReaperSwapper.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/AggregatorV3Interface.sol#L4) + -[^0.8.0](lib/vault-v2/src/interfaces/IAsset.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/IAuthorizer.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/IBasePool.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/IBaseWeightedPool.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/IBeetVault.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/IPoolSwapStructs.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/ISignaturesValidator.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/ISwapErrors.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/ISwapper.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/ISwapperSwaps.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/ITemporarilyPausable.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/IUniswapV2Router01.sol#L2) + -[^0.8.0](lib/vault-v2/src/interfaces/IVeloPair.sol#L2) + -[^0.8.0](lib/vault-v2/src/interfaces/IVeloRouter.sol#L2) + -[^0.8.0](lib/vault-v2/src/interfaces/IVeloV1AndV2Factory.sol#L2) + -[^0.8.0](lib/vault-v2/src/libraries/Babylonian.sol#L3) + -[^0.8.0](lib/vault-v2/src/libraries/ReaperMathUtils.sol#L3) + -[^0.8.0](lib/vault-v2/src/mixins/BalMixin.sol#L3) + -[^0.8.0](lib/vault-v2/src/mixins/ReaperAccessControl.sol#L5) + -[^0.8.0](lib/vault-v2/src/mixins/UniV2Mixin.sol#L3) + -[^0.8.0](lib/vault-v2/src/mixins/UniV3Mixin.sol#L3) + -[^0.8.0](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L3) + -[^0.8.0](src/OptionsCompounder.sol#L3) + -[^0.8.0](src/interfaces/IBalancerTwapOracle.sol#L15) + -[^0.8.0](src/interfaces/IFlashLoanReceiver.sol#L2) + -[^0.8.0](src/interfaces/ILendingPool.sol#L2) + -[^0.8.0](src/interfaces/ILendingPoolAddressesProvider.sol#L2) + -[^0.8.0](src/interfaces/IOptionsCompounder.sol#L3) + -[^0.8.0](src/interfaces/ISwapperSwaps.sol#L3) + -[^0.8.0](src/libraries/DataTypes.sol#L2) + - Version constraint ^0.8.2 is used by: + -[^0.8.2](lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#L4) + -[^0.8.2](lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol#L4) + - Version constraint ^0.8.1 is used by: + -[^0.8.1](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L4) + -[^0.8.1](lib/openzeppelin-contracts/contracts/utils/Address.sol#L4) + - Version constraint >=0.8.0 is used by: + -[>=0.8.0](lib/solmate/src/auth/Owned.sol#L2) + -[>=0.8.0](lib/solmate/src/tokens/ERC20.sol#L2) + -[>=0.8.0](lib/solmate/src/utils/FixedPointMathLib.sol#L2) + - Version constraint >=0.5.0 is used by: + -[>=0.5.0](lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol#L2) + -[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol#L2) + -[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol#L2) + -[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol#L2) + -[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol#L2) + -[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol#L2) + -[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol#L2) + -[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol#L2) + -[>=0.5.0](lib/vault-v2/src/interfaces/IPeripheryImmutableState.sol#L2) + -[>=0.5.0](lib/vault-v2/src/interfaces/IUniswapV3Factory.sol#L2) + -[>=0.5.0](lib/vault-v2/src/interfaces/IUniswapV3SwapCallback.sol#L2) + -[>=0.5.0](src/interfaces/IAlgebraPool.sol#L2) + - Version constraint >=0.7.5 is used by: + -[>=0.7.5](lib/vault-v2/src/interfaces/ISwapRouter.sol#L2) + - Version constraint >=0.6.2 is used by: + -[>=0.6.2](lib/vault-v2/src/interfaces/IUniswapV2Router02.sol#L2) + - Version constraint >=0.6.0 is used by: + -[>=0.6.0](lib/vault-v2/src/libraries/TransferHelper.sol#L2) + - Version constraint ^0.8.13 is used by: + -[^0.8.13](src/OptionsToken.sol#L2) + -[^0.8.13](src/exercise/BaseExercise.sol#L2) + -[^0.8.13](src/exercise/DiscountExercise.sol#L2) + -[^0.8.13](src/helpers/SwapHelper.sol#L3) + -[^0.8.13](src/interfaces/IBalancer2TokensPool.sol#L2) + -[^0.8.13](src/interfaces/IExercise.sol#L2) + -[^0.8.13](src/interfaces/IOptionsToken.sol#L2) + -[^0.8.13](src/oracles/AlgebraOracle.sol#L2) + -[^0.8.13](src/oracles/BalancerOracle.sol#L2) + -[^0.8.13](src/oracles/ThenaOracle.sol#L2) + -[^0.8.13](src/oracles/UniswapV3Oracle.sol#L2) + - Version constraint >=0.7.0<0.9.0 is used by: + -[>=0.7.0<0.9.0](src/interfaces/IBalancerVault.sol#L17) + -[>=0.7.0<0.9.0](src/interfaces/IERC20Mintable.sol#L3) + -[>=0.7.0<0.9.0](src/interfaces/IOracle.sol#L3) + - Version constraint >=0.5 is used by: + -[>=0.5](src/interfaces/IThenaPair.sol#L1) + +lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#L4 + + +## solc-version +Impact: Informational +Confidence: High + - [ ] ID-17 +Version constraint ^0.8.0 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) + - FullInlinerNonExpressionSplitArgumentEvaluationOrder + - MissingSideEffectsOnSelectorAccess + - AbiReencodingHeadOverflowWithStaticArrayCleanup + - DirtyBytesArrayToStorage + - DataLocationChangeInInternalOverride + - NestedCalldataArrayAbiReencodingSizeValidation + - SignedImmutables + - ABIDecodeTwoDimensionalArrayMemory + - KeccakCaching. +It is used by: + - [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#L4) + - [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol#L4) + - [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlEnumerableUpgradeable.sol#L4) + - [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol#L4) + - [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol#L4) + - [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1967Upgradeable.sol#L4) + - [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol#L4) + - [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol#L4) + - [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol#L4) + - [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/security/PausableUpgradeable.sol#L4) + - [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#L4) + - [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol#L4) + - [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/IERC20MetadataUpgradeable.sol#L4) + - [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol#L4) + - [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#L4) + - [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol#L4) + - [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#L4) + - [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol#L4) + - [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol#L4) + - [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol#L4) + - [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L4) + - [^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#L5) + - [^0.8.0](lib/openzeppelin-contracts/contracts/security/Pausable.sol#L4) + - [^0.8.0](lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol#L4) + - [^0.8.0](lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol#L4) + - [^0.8.0](lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#L4) + - [^0.8.0](lib/openzeppelin-contracts/contracts/utils/Context.sol#L4) + - [^0.8.0](lib/v3-core/contracts/libraries/FullMath.sol#L2) + - [^0.8.0](lib/v3-core/contracts/libraries/TickMath.sol#L2) + - [^0.8.0](lib/vault-v2/src/ReaperSwapper.sol#L3) + - [^0.8.0](lib/vault-v2/src/interfaces/AggregatorV3Interface.sol#L4) + - [^0.8.0](lib/vault-v2/src/interfaces/IAsset.sol#L3) + - [^0.8.0](lib/vault-v2/src/interfaces/IAuthorizer.sol#L3) + - [^0.8.0](lib/vault-v2/src/interfaces/IBasePool.sol#L3) + - [^0.8.0](lib/vault-v2/src/interfaces/IBaseWeightedPool.sol#L3) + - [^0.8.0](lib/vault-v2/src/interfaces/IBeetVault.sol#L3) + - [^0.8.0](lib/vault-v2/src/interfaces/IPoolSwapStructs.sol#L3) + - [^0.8.0](lib/vault-v2/src/interfaces/ISignaturesValidator.sol#L3) + - [^0.8.0](lib/vault-v2/src/interfaces/ISwapErrors.sol#L3) + - [^0.8.0](lib/vault-v2/src/interfaces/ISwapper.sol#L3) + - [^0.8.0](lib/vault-v2/src/interfaces/ISwapperSwaps.sol#L3) + - [^0.8.0](lib/vault-v2/src/interfaces/ITemporarilyPausable.sol#L3) + - [^0.8.0](lib/vault-v2/src/interfaces/IUniswapV2Router01.sol#L2) + - [^0.8.0](lib/vault-v2/src/interfaces/IVeloPair.sol#L2) + - [^0.8.0](lib/vault-v2/src/interfaces/IVeloRouter.sol#L2) + - [^0.8.0](lib/vault-v2/src/interfaces/IVeloV1AndV2Factory.sol#L2) + - [^0.8.0](lib/vault-v2/src/libraries/Babylonian.sol#L3) + - [^0.8.0](lib/vault-v2/src/libraries/ReaperMathUtils.sol#L3) + - [^0.8.0](lib/vault-v2/src/mixins/BalMixin.sol#L3) + - [^0.8.0](lib/vault-v2/src/mixins/ReaperAccessControl.sol#L5) + - [^0.8.0](lib/vault-v2/src/mixins/UniV2Mixin.sol#L3) + - [^0.8.0](lib/vault-v2/src/mixins/UniV3Mixin.sol#L3) + - [^0.8.0](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L3) + - [^0.8.0](src/OptionsCompounder.sol#L3) + - [^0.8.0](src/interfaces/IBalancerTwapOracle.sol#L15) + - [^0.8.0](src/interfaces/IFlashLoanReceiver.sol#L2) + - [^0.8.0](src/interfaces/ILendingPool.sol#L2) + - [^0.8.0](src/interfaces/ILendingPoolAddressesProvider.sol#L2) + - [^0.8.0](src/interfaces/IOptionsCompounder.sol#L3) + - [^0.8.0](src/interfaces/ISwapperSwaps.sol#L3) + - [^0.8.0](src/libraries/DataTypes.sol#L2) + +lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#L4 + + +## missing-inheritance +Impact: Informational +Confidence: High + - [ ] ID-18 +[OptionsCompounder](src/OptionsCompounder.sol#L25-L370) should inherit from [IOptionsCompounder](src/interfaces/IOptionsCompounder.sol#L20-L24) + +src/OptionsCompounder.sol#L25-L370 + + +## naming-convention +Impact: Informational +Confidence: High + - [ ] ID-19 +Parameter [OptionsCompounder.initialize(address,address,address,SwapProps,IOracle)._optionsToken](src/OptionsCompounder.sol#L74) is not in mixedCase + +src/OptionsCompounder.sol#L74 + + + - [ ] ID-20 +Parameter [OptionsCompounder.initialize(address,address,address,SwapProps,IOracle)._swapper](src/OptionsCompounder.sol#L74) is not in mixedCase + +src/OptionsCompounder.sol#L74 + + + - [ ] ID-21 +Parameter [OptionsCompounder.initialize(address,address,address,SwapProps,IOracle)._oracle](src/OptionsCompounder.sol#L74) is not in mixedCase + +src/OptionsCompounder.sol#L74 + + + - [ ] ID-22 +Parameter [OptionsCompounder.initialize(address,address,address,SwapProps,IOracle)._swapProps](src/OptionsCompounder.sol#L74) is not in mixedCase + +src/OptionsCompounder.sol#L74 + + + - [ ] ID-23 +Parameter [OptionsCompounder.setSwapProps(SwapProps)._swapProps](src/OptionsCompounder.sol#L108) is not in mixedCase + +src/OptionsCompounder.sol#L108 + + + - [ ] ID-24 +Parameter [OptionsCompounder.setOracle(IOracle)._oracle](src/OptionsCompounder.sol#L112) is not in mixedCase + +src/OptionsCompounder.sol#L112 + + + - [ ] ID-25 +Function [OptionsCompounder.ADDRESSES_PROVIDER()](src/OptionsCompounder.sol#L363-L365) is not in mixedCase + +src/OptionsCompounder.sol#L363-L365 + + + - [ ] ID-26 +Parameter [OptionsCompounder.initialize(address,address,address,SwapProps,IOracle)._addressProvider](src/OptionsCompounder.sol#L74) is not in mixedCase + +src/OptionsCompounder.sol#L74 + + + - [ ] ID-27 +Parameter [OptionsCompounder.initiateUpgradeCooldown(address)._nextImplementation](src/OptionsCompounder.sol#L326) is not in mixedCase + +src/OptionsCompounder.sol#L326 + + + - [ ] ID-28 +Parameter [OptionsCompounder.setOptionsToken(address)._optionsToken](src/OptionsCompounder.sol#L97) is not in mixedCase + +src/OptionsCompounder.sol#L97 + + + - [ ] ID-29 +Parameter [OptionsCompounder.setSwapper(address)._swapper](src/OptionsCompounder.sol#L123) is not in mixedCase + +src/OptionsCompounder.sol#L123 + + + - [ ] ID-30 +Function [OptionsCompounder.LENDING_POOL()](src/OptionsCompounder.sol#L367-L369) is not in mixedCase + +src/OptionsCompounder.sol#L367-L369 + + + - [ ] ID-31 +Parameter [OptionsCompounder.setAddressProvider(address)._addressProvider](src/OptionsCompounder.sol#L134) is not in mixedCase + +src/OptionsCompounder.sol#L134 + +## Options Token Slither + +Summary + - [missing-zero-check](#missing-zero-check) (2 results) (Low) + - [reentrancy-events](#reentrancy-events) (1 results) (Low) + - [timestamp](#timestamp) (1 results) (Low) + - [pragma](#pragma) (1 results) (Informational) + - [solc-version](#solc-version) (1 results) (Informational) + - [naming-convention](#naming-convention) (3 results) (Informational) +## missing-zero-check +Impact: Low +Confidence: Medium + - [ ] ID-0 +[OptionsToken.initialize(string,string,address).tokenAdmin_](src/OptionsToken.sol#L60) lacks a zero-check on : + - [tokenAdmin = tokenAdmin_](src/OptionsToken.sol#L65) + +src/OptionsToken.sol#L60 + + + - [ ] ID-1 +[OptionsToken.initiateUpgradeCooldown(address)._nextImplementation](src/OptionsToken.sol#L178) lacks a zero-check on : + - [nextImplementation = _nextImplementation](src/OptionsToken.sol#L180) + +src/OptionsToken.sol#L178 + + +## reentrancy-events +Impact: Low +Confidence: Medium + - [ ] ID-2 +Reentrancy in [OptionsToken._exercise(uint256,address,address,bytes)](src/OptionsToken.sol#L144-L168): + External calls: + - [(paymentAmount,data0,data1,data2) = IExercise(option).exercise(msg.sender,amount,recipient,params)](src/OptionsToken.sol#L164) + Event emitted after the call(s): + - [Exercise(msg.sender,recipient,amount,data0,data1,data2)](src/OptionsToken.sol#L167) + +src/OptionsToken.sol#L144-L168 + + +## timestamp +Impact: Low +Confidence: Medium + - [ ] ID-3 +[OptionsToken._authorizeUpgrade(address)](src/OptionsToken.sol#L202-L206) uses timestamp for comparisons + Dangerous comparisons: + - [require(bool,string)(upgradeProposalTime + UPGRADE_TIMELOCK < block.timestamp,Upgrade cooldown not initiated or still ongoing)](src/OptionsToken.sol#L203) + +src/OptionsToken.sol#L202-L206 + + +## pragma +Impact: Informational +Confidence: High + - [ ] ID-4 +11 different versions of Solidity are used: + - Version constraint ^0.8.0 is used by: + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlEnumerableUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1967Upgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/security/PausableUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/IERC20MetadataUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#L5) + -[^0.8.0](lib/openzeppelin-contracts/contracts/security/Pausable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts/contracts/utils/Context.sol#L4) + -[^0.8.0](lib/v3-core/contracts/libraries/FullMath.sol#L2) + -[^0.8.0](lib/v3-core/contracts/libraries/TickMath.sol#L2) + -[^0.8.0](lib/vault-v2/src/ReaperSwapper.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/AggregatorV3Interface.sol#L4) + -[^0.8.0](lib/vault-v2/src/interfaces/IAsset.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/IAuthorizer.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/IBasePool.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/IBaseWeightedPool.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/IBeetVault.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/IPoolSwapStructs.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/ISignaturesValidator.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/ISwapErrors.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/ISwapper.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/ISwapperSwaps.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/ITemporarilyPausable.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/IUniswapV2Router01.sol#L2) + -[^0.8.0](lib/vault-v2/src/interfaces/IVeloPair.sol#L2) + -[^0.8.0](lib/vault-v2/src/interfaces/IVeloRouter.sol#L2) + -[^0.8.0](lib/vault-v2/src/interfaces/IVeloV1AndV2Factory.sol#L2) + -[^0.8.0](lib/vault-v2/src/libraries/Babylonian.sol#L3) + -[^0.8.0](lib/vault-v2/src/libraries/ReaperMathUtils.sol#L3) + -[^0.8.0](lib/vault-v2/src/mixins/BalMixin.sol#L3) + -[^0.8.0](lib/vault-v2/src/mixins/ReaperAccessControl.sol#L5) + -[^0.8.0](lib/vault-v2/src/mixins/UniV2Mixin.sol#L3) + -[^0.8.0](lib/vault-v2/src/mixins/UniV3Mixin.sol#L3) + -[^0.8.0](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L3) + -[^0.8.0](src/OptionsCompounder.sol#L3) + -[^0.8.0](src/interfaces/IBalancerTwapOracle.sol#L15) + -[^0.8.0](src/interfaces/IFlashLoanReceiver.sol#L2) + -[^0.8.0](src/interfaces/ILendingPool.sol#L2) + -[^0.8.0](src/interfaces/ILendingPoolAddressesProvider.sol#L2) + -[^0.8.0](src/interfaces/IOptionsCompounder.sol#L3) + -[^0.8.0](src/interfaces/ISwapperSwaps.sol#L3) + -[^0.8.0](src/libraries/DataTypes.sol#L2) + - Version constraint ^0.8.2 is used by: + -[^0.8.2](lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#L4) + -[^0.8.2](lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol#L4) + - Version constraint ^0.8.1 is used by: + -[^0.8.1](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L4) + -[^0.8.1](lib/openzeppelin-contracts/contracts/utils/Address.sol#L4) + - Version constraint >=0.8.0 is used by: + -[>=0.8.0](lib/solmate/src/auth/Owned.sol#L2) + -[>=0.8.0](lib/solmate/src/tokens/ERC20.sol#L2) + -[>=0.8.0](lib/solmate/src/utils/FixedPointMathLib.sol#L2) + - Version constraint >=0.5.0 is used by: + -[>=0.5.0](lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol#L2) + -[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol#L2) + -[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol#L2) + -[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol#L2) + -[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol#L2) + -[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol#L2) + -[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol#L2) + -[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol#L2) + -[>=0.5.0](lib/vault-v2/src/interfaces/IPeripheryImmutableState.sol#L2) + -[>=0.5.0](lib/vault-v2/src/interfaces/IUniswapV3Factory.sol#L2) + -[>=0.5.0](lib/vault-v2/src/interfaces/IUniswapV3SwapCallback.sol#L2) + -[>=0.5.0](src/interfaces/IAlgebraPool.sol#L2) + - Version constraint >=0.7.5 is used by: + -[>=0.7.5](lib/vault-v2/src/interfaces/ISwapRouter.sol#L2) + - Version constraint >=0.6.2 is used by: + -[>=0.6.2](lib/vault-v2/src/interfaces/IUniswapV2Router02.sol#L2) + - Version constraint >=0.6.0 is used by: + -[>=0.6.0](lib/vault-v2/src/libraries/TransferHelper.sol#L2) + - Version constraint ^0.8.13 is used by: + -[^0.8.13](src/OptionsToken.sol#L2) + -[^0.8.13](src/exercise/BaseExercise.sol#L2) + -[^0.8.13](src/exercise/DiscountExercise.sol#L2) + -[^0.8.13](src/helpers/SwapHelper.sol#L3) + -[^0.8.13](src/interfaces/IBalancer2TokensPool.sol#L2) + -[^0.8.13](src/interfaces/IExercise.sol#L2) + -[^0.8.13](src/interfaces/IOptionsToken.sol#L2) + -[^0.8.13](src/oracles/AlgebraOracle.sol#L2) + -[^0.8.13](src/oracles/BalancerOracle.sol#L2) + -[^0.8.13](src/oracles/ThenaOracle.sol#L2) + -[^0.8.13](src/oracles/UniswapV3Oracle.sol#L2) + - Version constraint >=0.7.0<0.9.0 is used by: + -[>=0.7.0<0.9.0](src/interfaces/IBalancerVault.sol#L17) + -[>=0.7.0<0.9.0](src/interfaces/IERC20Mintable.sol#L3) + -[>=0.7.0<0.9.0](src/interfaces/IOracle.sol#L3) + - Version constraint >=0.5 is used by: + -[>=0.5](src/interfaces/IThenaPair.sol#L1) + +lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#L4 + + +## solc-version +Impact: Informational +Confidence: High + - [ ] ID-5 +Version constraint ^0.8.13 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) + - VerbatimInvalidDeduplication + - FullInlinerNonExpressionSplitArgumentEvaluationOrder + - MissingSideEffectsOnSelectorAccess + - StorageWriteRemovalBeforeConditionalTermination + - AbiReencodingHeadOverflowWithStaticArrayCleanup + - DirtyBytesArrayToStorage + - InlineAssemblyMemorySideEffects + - DataLocationChangeInInternalOverride + - NestedCalldataArrayAbiReencodingSizeValidation. +It is used by: + - [^0.8.13](src/OptionsToken.sol#L2) + - [^0.8.13](src/exercise/BaseExercise.sol#L2) + - [^0.8.13](src/exercise/DiscountExercise.sol#L2) + - [^0.8.13](src/helpers/SwapHelper.sol#L3) + - [^0.8.13](src/interfaces/IBalancer2TokensPool.sol#L2) + - [^0.8.13](src/interfaces/IExercise.sol#L2) + - [^0.8.13](src/interfaces/IOptionsToken.sol#L2) + - [^0.8.13](src/oracles/AlgebraOracle.sol#L2) + - [^0.8.13](src/oracles/BalancerOracle.sol#L2) + - [^0.8.13](src/oracles/ThenaOracle.sol#L2) + - [^0.8.13](src/oracles/UniswapV3Oracle.sol#L2) + +src/OptionsToken.sol#L2 + + +## naming-convention +Impact: Informational +Confidence: High + - [ ] ID-6 +Parameter [OptionsToken.initiateUpgradeCooldown(address)._nextImplementation](src/OptionsToken.sol#L178) is not in mixedCase + +src/OptionsToken.sol#L178 + + + - [ ] ID-7 +Parameter [OptionsToken.setExerciseContract(address,bool)._isExercise](src/OptionsToken.sol#L125) is not in mixedCase + +src/OptionsToken.sol#L125 + + + - [ ] ID-8 +Parameter [OptionsToken.setExerciseContract(address,bool)._address](src/OptionsToken.sol#L125) is not in mixedCase + +src/OptionsToken.sol#L125 + +## Thena Oracle Slither + +Summary + - [pragma](#pragma) (1 results) (Informational) + - [solc-version](#solc-version) (1 results) (Informational) + - [immutable-states](#immutable-states) (1 results) (Optimization) +## pragma +Impact: Informational +Confidence: High + - [ ] ID-0 +11 different versions of Solidity are used: + - Version constraint ^0.8.0 is used by: + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlEnumerableUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1967Upgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/security/PausableUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/IERC20MetadataUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#L5) + -[^0.8.0](lib/openzeppelin-contracts/contracts/security/Pausable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts/contracts/utils/Context.sol#L4) + -[^0.8.0](lib/v3-core/contracts/libraries/FullMath.sol#L2) + -[^0.8.0](lib/v3-core/contracts/libraries/TickMath.sol#L2) + -[^0.8.0](lib/vault-v2/src/ReaperSwapper.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/AggregatorV3Interface.sol#L4) + -[^0.8.0](lib/vault-v2/src/interfaces/IAsset.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/IAuthorizer.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/IBasePool.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/IBaseWeightedPool.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/IBeetVault.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/IPoolSwapStructs.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/ISignaturesValidator.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/ISwapErrors.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/ISwapper.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/ISwapperSwaps.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/ITemporarilyPausable.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/IUniswapV2Router01.sol#L2) + -[^0.8.0](lib/vault-v2/src/interfaces/IVeloPair.sol#L2) + -[^0.8.0](lib/vault-v2/src/interfaces/IVeloRouter.sol#L2) + -[^0.8.0](lib/vault-v2/src/interfaces/IVeloV1AndV2Factory.sol#L2) + -[^0.8.0](lib/vault-v2/src/libraries/Babylonian.sol#L3) + -[^0.8.0](lib/vault-v2/src/libraries/ReaperMathUtils.sol#L3) + -[^0.8.0](lib/vault-v2/src/mixins/BalMixin.sol#L3) + -[^0.8.0](lib/vault-v2/src/mixins/ReaperAccessControl.sol#L5) + -[^0.8.0](lib/vault-v2/src/mixins/UniV2Mixin.sol#L3) + -[^0.8.0](lib/vault-v2/src/mixins/UniV3Mixin.sol#L3) + -[^0.8.0](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L3) + -[^0.8.0](src/OptionsCompounder.sol#L3) + -[^0.8.0](src/interfaces/IBalancerTwapOracle.sol#L15) + -[^0.8.0](src/interfaces/IFlashLoanReceiver.sol#L2) + -[^0.8.0](src/interfaces/ILendingPool.sol#L2) + -[^0.8.0](src/interfaces/ILendingPoolAddressesProvider.sol#L2) + -[^0.8.0](src/interfaces/IOptionsCompounder.sol#L3) + -[^0.8.0](src/interfaces/ISwapperSwaps.sol#L3) + -[^0.8.0](src/libraries/DataTypes.sol#L2) + - Version constraint ^0.8.2 is used by: + -[^0.8.2](lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#L4) + -[^0.8.2](lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol#L4) + - Version constraint ^0.8.1 is used by: + -[^0.8.1](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L4) + -[^0.8.1](lib/openzeppelin-contracts/contracts/utils/Address.sol#L4) + - Version constraint >=0.8.0 is used by: + -[>=0.8.0](lib/solmate/src/auth/Owned.sol#L2) + -[>=0.8.0](lib/solmate/src/tokens/ERC20.sol#L2) + -[>=0.8.0](lib/solmate/src/utils/FixedPointMathLib.sol#L2) + - Version constraint >=0.5.0 is used by: + -[>=0.5.0](lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol#L2) + -[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol#L2) + -[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol#L2) + -[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol#L2) + -[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol#L2) + -[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol#L2) + -[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol#L2) + -[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol#L2) + -[>=0.5.0](lib/vault-v2/src/interfaces/IPeripheryImmutableState.sol#L2) + -[>=0.5.0](lib/vault-v2/src/interfaces/IUniswapV3Factory.sol#L2) + -[>=0.5.0](lib/vault-v2/src/interfaces/IUniswapV3SwapCallback.sol#L2) + -[>=0.5.0](src/interfaces/IAlgebraPool.sol#L2) + - Version constraint >=0.7.5 is used by: + -[>=0.7.5](lib/vault-v2/src/interfaces/ISwapRouter.sol#L2) + - Version constraint >=0.6.2 is used by: + -[>=0.6.2](lib/vault-v2/src/interfaces/IUniswapV2Router02.sol#L2) + - Version constraint >=0.6.0 is used by: + -[>=0.6.0](lib/vault-v2/src/libraries/TransferHelper.sol#L2) + - Version constraint ^0.8.13 is used by: + -[^0.8.13](src/OptionsToken.sol#L2) + -[^0.8.13](src/exercise/BaseExercise.sol#L2) + -[^0.8.13](src/exercise/DiscountExercise.sol#L2) + -[^0.8.13](src/helpers/SwapHelper.sol#L3) + -[^0.8.13](src/interfaces/IBalancer2TokensPool.sol#L2) + -[^0.8.13](src/interfaces/IExercise.sol#L2) + -[^0.8.13](src/interfaces/IOptionsToken.sol#L2) + -[^0.8.13](src/oracles/AlgebraOracle.sol#L2) + -[^0.8.13](src/oracles/BalancerOracle.sol#L2) + -[^0.8.13](src/oracles/ThenaOracle.sol#L2) + -[^0.8.13](src/oracles/UniswapV3Oracle.sol#L2) + - Version constraint >=0.7.0<0.9.0 is used by: + -[>=0.7.0<0.9.0](src/interfaces/IBalancerVault.sol#L17) + -[>=0.7.0<0.9.0](src/interfaces/IERC20Mintable.sol#L3) + -[>=0.7.0<0.9.0](src/interfaces/IOracle.sol#L3) + - Version constraint >=0.5 is used by: + -[>=0.5](src/interfaces/IThenaPair.sol#L1) + +lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#L4 + + +## solc-version +Impact: Informational +Confidence: High + - [ ] ID-1 +Version constraint ^0.8.13 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) + - VerbatimInvalidDeduplication + - FullInlinerNonExpressionSplitArgumentEvaluationOrder + - MissingSideEffectsOnSelectorAccess + - StorageWriteRemovalBeforeConditionalTermination + - AbiReencodingHeadOverflowWithStaticArrayCleanup + - DirtyBytesArrayToStorage + - InlineAssemblyMemorySideEffects + - DataLocationChangeInInternalOverride + - NestedCalldataArrayAbiReencodingSizeValidation. +It is used by: + - [^0.8.13](src/OptionsToken.sol#L2) + - [^0.8.13](src/exercise/BaseExercise.sol#L2) + - [^0.8.13](src/exercise/DiscountExercise.sol#L2) + - [^0.8.13](src/helpers/SwapHelper.sol#L3) + - [^0.8.13](src/interfaces/IBalancer2TokensPool.sol#L2) + - [^0.8.13](src/interfaces/IExercise.sol#L2) + - [^0.8.13](src/interfaces/IOptionsToken.sol#L2) + - [^0.8.13](src/oracles/AlgebraOracle.sol#L2) + - [^0.8.13](src/oracles/BalancerOracle.sol#L2) + - [^0.8.13](src/oracles/ThenaOracle.sol#L2) + - [^0.8.13](src/oracles/UniswapV3Oracle.sol#L2) + +src/OptionsToken.sol#L2 + + +## immutable-states +Impact: Optimization +Confidence: High + - [ ] ID-2 +[ThenaOracle.isToken0](src/oracles/ThenaOracle.sol#L60) should be immutable + +src/oracles/ThenaOracle.sol#L60 + +## Base Exercise Slither + +Summary + - [arbitrary-send-erc20](#arbitrary-send-erc20) (2 results) (High) + - [reentrancy-events](#reentrancy-events) (5 results) (Low) + - [pragma](#pragma) (1 results) (Informational) + - [solc-version](#solc-version) (1 results) (Informational) + - [naming-convention](#naming-convention) (2 results) (Informational) +## arbitrary-send-erc20 +Impact: High +Confidence: High + - [ ] ID-0 +[BaseExercise.distributeFeesFrom(uint256,IERC20,address)](src/exercise/BaseExercise.sol#L73-L82) uses arbitrary from in transferFrom: [token.safeTransferFrom(from,feeRecipients[i],feeAmount)](src/exercise/BaseExercise.sol#L77) + +src/exercise/BaseExercise.sol#L73-L82 + + + - [ ] ID-1 +[BaseExercise.distributeFeesFrom(uint256,IERC20,address)](src/exercise/BaseExercise.sol#L73-L82) uses arbitrary from in transferFrom: [token.safeTransferFrom(from,feeRecipients[feeRecipients.length - 1],remaining)](src/exercise/BaseExercise.sol#L80) + +src/exercise/BaseExercise.sol#L73-L82 + + +## reentrancy-events +Impact: Low +Confidence: Medium + - [ ] ID-2 +Reentrancy in [DiscountExercise._zap(address,uint256,address,DiscountExerciseParams)](src/exercise/DiscountExercise.sol#L211-L249): + External calls: + - [underlyingToken.approve(swapProps.swapper,feeAmount)](src/exercise/DiscountExercise.sol#L228) + - [amountOut = _generalSwap(swapProps.exchangeTypes,address(underlyingToken),address(paymentToken),feeAmount,minAmountOut,swapProps.exchangeAddress)](src/exercise/DiscountExercise.sol#L230-L232) + - [_swapper.swapUniV2(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L72) + - [_swapper.swapBal(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L74) + - [_swapper.swapVelo(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L76) + - [_swapper.swapUniV3(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L78) + - [underlyingToken.approve(swapProps.swapper,0)](src/exercise/DiscountExercise.sol#L239) + - [distributeFees(paymentToken.balanceOf(address(this)),paymentToken)](src/exercise/DiscountExercise.sol#L242) + - [returndata = address(token).functionCall(data,SafeERC20: low-level call failed)](lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#L110) + - [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135) + - [token.safeTransfer(feeRecipients[i],feeAmount)](src/exercise/BaseExercise.sol#L90) + - [token.safeTransfer(feeRecipients[feeRecipients.length - 1],remaining)](src/exercise/BaseExercise.sol#L93) + - [_pay(recipient,underlyingAmount)](src/exercise/DiscountExercise.sol#L246) + - [returndata = address(token).functionCall(data,SafeERC20: low-level call failed)](lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#L110) + - [underlyingToken.safeTransfer(to,balance)](src/exercise/DiscountExercise.sol#L272) + - [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135) + - [underlyingToken.safeTransfer(to,amount)](src/exercise/DiscountExercise.sol#L275) + External calls sending eth: + - [distributeFees(paymentToken.balanceOf(address(this)),paymentToken)](src/exercise/DiscountExercise.sol#L242) + - [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135) + - [_pay(recipient,underlyingAmount)](src/exercise/DiscountExercise.sol#L246) + - [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135) + Event emitted after the call(s): + - [Exercised(from,recipient,underlyingAmount,paymentAmount)](src/exercise/DiscountExercise.sol#L248) + +src/exercise/DiscountExercise.sol#L211-L249 + + + - [ ] ID-3 +Reentrancy in [BaseExercise.distributeFees(uint256,IERC20)](src/exercise/BaseExercise.sol#L86-L95): + External calls: + - [token.safeTransfer(feeRecipients[i],feeAmount)](src/exercise/BaseExercise.sol#L90) + - [token.safeTransfer(feeRecipients[feeRecipients.length - 1],remaining)](src/exercise/BaseExercise.sol#L93) + Event emitted after the call(s): + - [DistributeFees(feeRecipients,feeBPS,totalAmount)](src/exercise/BaseExercise.sol#L94) + +src/exercise/BaseExercise.sol#L86-L95 + + + - [ ] ID-4 +Reentrancy in [DiscountExercise._zap(address,uint256,address,DiscountExerciseParams)](src/exercise/DiscountExercise.sol#L211-L249): + External calls: + - [underlyingToken.approve(swapProps.swapper,feeAmount)](src/exercise/DiscountExercise.sol#L228) + - [amountOut = _generalSwap(swapProps.exchangeTypes,address(underlyingToken),address(paymentToken),feeAmount,minAmountOut,swapProps.exchangeAddress)](src/exercise/DiscountExercise.sol#L230-L232) + - [_swapper.swapUniV2(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L72) + - [_swapper.swapBal(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L74) + - [_swapper.swapVelo(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L76) + - [_swapper.swapUniV3(tokenIn,tokenOut,amount,minAmountOutData,exchangeAddress)](src/helpers/SwapHelper.sol#L78) + - [underlyingToken.approve(swapProps.swapper,0)](src/exercise/DiscountExercise.sol#L239) + - [distributeFees(paymentToken.balanceOf(address(this)),paymentToken)](src/exercise/DiscountExercise.sol#L242) + - [returndata = address(token).functionCall(data,SafeERC20: low-level call failed)](lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#L110) + - [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135) + - [token.safeTransfer(feeRecipients[i],feeAmount)](src/exercise/BaseExercise.sol#L90) + - [token.safeTransfer(feeRecipients[feeRecipients.length - 1],remaining)](src/exercise/BaseExercise.sol#L93) + External calls sending eth: + - [distributeFees(paymentToken.balanceOf(address(this)),paymentToken)](src/exercise/DiscountExercise.sol#L242) + - [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135) + Event emitted after the call(s): + - [DistributeFees(feeRecipients,feeBPS,totalAmount)](src/exercise/BaseExercise.sol#L94) + - [distributeFees(paymentToken.balanceOf(address(this)),paymentToken)](src/exercise/DiscountExercise.sol#L242) + +src/exercise/DiscountExercise.sol#L211-L249 + + + - [ ] ID-5 +Reentrancy in [DiscountExercise._redeem(address,uint256,address,DiscountExerciseParams)](src/exercise/DiscountExercise.sol#L252-L267): + External calls: + - [distributeFeesFrom(paymentAmount,paymentToken,from)](src/exercise/DiscountExercise.sol#L262) + - [returndata = address(token).functionCall(data,SafeERC20: low-level call failed)](lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#L110) + - [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135) + - [token.safeTransferFrom(from,feeRecipients[i],feeAmount)](src/exercise/BaseExercise.sol#L77) + - [token.safeTransferFrom(from,feeRecipients[feeRecipients.length - 1],remaining)](src/exercise/BaseExercise.sol#L80) + - [_pay(recipient,amount)](src/exercise/DiscountExercise.sol#L264) + - [returndata = address(token).functionCall(data,SafeERC20: low-level call failed)](lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#L110) + - [underlyingToken.safeTransfer(to,balance)](src/exercise/DiscountExercise.sol#L272) + - [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135) + - [underlyingToken.safeTransfer(to,amount)](src/exercise/DiscountExercise.sol#L275) + External calls sending eth: + - [distributeFeesFrom(paymentAmount,paymentToken,from)](src/exercise/DiscountExercise.sol#L262) + - [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135) + - [_pay(recipient,amount)](src/exercise/DiscountExercise.sol#L264) + - [(success,returndata) = target.call{value: value}(data)](lib/openzeppelin-contracts/contracts/utils/Address.sol#L135) + Event emitted after the call(s): + - [Exercised(from,recipient,amount,paymentAmount)](src/exercise/DiscountExercise.sol#L266) + +src/exercise/DiscountExercise.sol#L252-L267 + + + - [ ] ID-6 +Reentrancy in [BaseExercise.distributeFeesFrom(uint256,IERC20,address)](src/exercise/BaseExercise.sol#L73-L82): + External calls: + - [token.safeTransferFrom(from,feeRecipients[i],feeAmount)](src/exercise/BaseExercise.sol#L77) + - [token.safeTransferFrom(from,feeRecipients[feeRecipients.length - 1],remaining)](src/exercise/BaseExercise.sol#L80) + Event emitted after the call(s): + - [DistributeFees(feeRecipients,feeBPS,totalAmount)](src/exercise/BaseExercise.sol#L81) + +src/exercise/BaseExercise.sol#L73-L82 + + +## pragma +Impact: Informational +Confidence: High + - [ ] ID-7 +11 different versions of Solidity are used: + - Version constraint ^0.8.0 is used by: + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlEnumerableUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1967Upgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/security/PausableUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/IERC20MetadataUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts-upgradeable/contracts/utils/structs/EnumerableSetUpgradeable.sol#L5) + -[^0.8.0](lib/openzeppelin-contracts/contracts/security/Pausable.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#L4) + -[^0.8.0](lib/openzeppelin-contracts/contracts/utils/Context.sol#L4) + -[^0.8.0](lib/v3-core/contracts/libraries/FullMath.sol#L2) + -[^0.8.0](lib/v3-core/contracts/libraries/TickMath.sol#L2) + -[^0.8.0](lib/vault-v2/src/ReaperSwapper.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/AggregatorV3Interface.sol#L4) + -[^0.8.0](lib/vault-v2/src/interfaces/IAsset.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/IAuthorizer.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/IBasePool.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/IBaseWeightedPool.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/IBeetVault.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/IPoolSwapStructs.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/ISignaturesValidator.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/ISwapErrors.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/ISwapper.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/ISwapperSwaps.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/ITemporarilyPausable.sol#L3) + -[^0.8.0](lib/vault-v2/src/interfaces/IUniswapV2Router01.sol#L2) + -[^0.8.0](lib/vault-v2/src/interfaces/IVeloPair.sol#L2) + -[^0.8.0](lib/vault-v2/src/interfaces/IVeloRouter.sol#L2) + -[^0.8.0](lib/vault-v2/src/interfaces/IVeloV1AndV2Factory.sol#L2) + -[^0.8.0](lib/vault-v2/src/libraries/Babylonian.sol#L3) + -[^0.8.0](lib/vault-v2/src/libraries/ReaperMathUtils.sol#L3) + -[^0.8.0](lib/vault-v2/src/mixins/BalMixin.sol#L3) + -[^0.8.0](lib/vault-v2/src/mixins/ReaperAccessControl.sol#L5) + -[^0.8.0](lib/vault-v2/src/mixins/UniV2Mixin.sol#L3) + -[^0.8.0](lib/vault-v2/src/mixins/UniV3Mixin.sol#L3) + -[^0.8.0](lib/vault-v2/src/mixins/VeloSolidMixin.sol#L3) + -[^0.8.0](src/OptionsCompounder.sol#L3) + -[^0.8.0](src/interfaces/IBalancerTwapOracle.sol#L15) + -[^0.8.0](src/interfaces/IFlashLoanReceiver.sol#L2) + -[^0.8.0](src/interfaces/ILendingPool.sol#L2) + -[^0.8.0](src/interfaces/ILendingPoolAddressesProvider.sol#L2) + -[^0.8.0](src/interfaces/IOptionsCompounder.sol#L3) + -[^0.8.0](src/interfaces/ISwapperSwaps.sol#L3) + -[^0.8.0](src/libraries/DataTypes.sol#L2) + - Version constraint ^0.8.2 is used by: + -[^0.8.2](lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol#L4) + -[^0.8.2](lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol#L4) + - Version constraint ^0.8.1 is used by: + -[^0.8.1](lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol#L4) + -[^0.8.1](lib/openzeppelin-contracts/contracts/utils/Address.sol#L4) + - Version constraint >=0.8.0 is used by: + -[>=0.8.0](lib/solmate/src/auth/Owned.sol#L2) + -[>=0.8.0](lib/solmate/src/tokens/ERC20.sol#L2) + -[>=0.8.0](lib/solmate/src/utils/FixedPointMathLib.sol#L2) + - Version constraint >=0.5.0 is used by: + -[>=0.5.0](lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol#L2) + -[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol#L2) + -[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol#L2) + -[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol#L2) + -[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol#L2) + -[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol#L2) + -[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol#L2) + -[>=0.5.0](lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol#L2) + -[>=0.5.0](lib/vault-v2/src/interfaces/IPeripheryImmutableState.sol#L2) + -[>=0.5.0](lib/vault-v2/src/interfaces/IUniswapV3Factory.sol#L2) + -[>=0.5.0](lib/vault-v2/src/interfaces/IUniswapV3SwapCallback.sol#L2) + -[>=0.5.0](src/interfaces/IAlgebraPool.sol#L2) + - Version constraint >=0.7.5 is used by: + -[>=0.7.5](lib/vault-v2/src/interfaces/ISwapRouter.sol#L2) + - Version constraint >=0.6.2 is used by: + -[>=0.6.2](lib/vault-v2/src/interfaces/IUniswapV2Router02.sol#L2) + - Version constraint >=0.6.0 is used by: + -[>=0.6.0](lib/vault-v2/src/libraries/TransferHelper.sol#L2) + - Version constraint ^0.8.13 is used by: + -[^0.8.13](src/OptionsToken.sol#L2) + -[^0.8.13](src/exercise/BaseExercise.sol#L2) + -[^0.8.13](src/exercise/DiscountExercise.sol#L2) + -[^0.8.13](src/helpers/SwapHelper.sol#L3) + -[^0.8.13](src/interfaces/IBalancer2TokensPool.sol#L2) + -[^0.8.13](src/interfaces/IExercise.sol#L2) + -[^0.8.13](src/interfaces/IOptionsToken.sol#L2) + -[^0.8.13](src/oracles/AlgebraOracle.sol#L2) + -[^0.8.13](src/oracles/BalancerOracle.sol#L2) + -[^0.8.13](src/oracles/ThenaOracle.sol#L2) + -[^0.8.13](src/oracles/UniswapV3Oracle.sol#L2) + - Version constraint >=0.7.0<0.9.0 is used by: + -[>=0.7.0<0.9.0](src/interfaces/IBalancerVault.sol#L17) + -[>=0.7.0<0.9.0](src/interfaces/IERC20Mintable.sol#L3) + -[>=0.7.0<0.9.0](src/interfaces/IOracle.sol#L3) + - Version constraint >=0.5 is used by: + -[>=0.5](src/interfaces/IThenaPair.sol#L1) + +lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlEnumerableUpgradeable.sol#L4 + + +## solc-version +Impact: Informational +Confidence: High + - [ ] ID-8 +Version constraint ^0.8.13 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) + - VerbatimInvalidDeduplication + - FullInlinerNonExpressionSplitArgumentEvaluationOrder + - MissingSideEffectsOnSelectorAccess + - StorageWriteRemovalBeforeConditionalTermination + - AbiReencodingHeadOverflowWithStaticArrayCleanup + - DirtyBytesArrayToStorage + - InlineAssemblyMemorySideEffects + - DataLocationChangeInInternalOverride + - NestedCalldataArrayAbiReencodingSizeValidation. +It is used by: + - [^0.8.13](src/OptionsToken.sol#L2) + - [^0.8.13](src/exercise/BaseExercise.sol#L2) + - [^0.8.13](src/exercise/DiscountExercise.sol#L2) + - [^0.8.13](src/helpers/SwapHelper.sol#L3) + - [^0.8.13](src/interfaces/IBalancer2TokensPool.sol#L2) + - [^0.8.13](src/interfaces/IExercise.sol#L2) + - [^0.8.13](src/interfaces/IOptionsToken.sol#L2) + - [^0.8.13](src/oracles/AlgebraOracle.sol#L2) + - [^0.8.13](src/oracles/BalancerOracle.sol#L2) + - [^0.8.13](src/oracles/ThenaOracle.sol#L2) + - [^0.8.13](src/oracles/UniswapV3Oracle.sol#L2) + +src/OptionsToken.sol#L2 + + +## naming-convention +Impact: Informational +Confidence: High + - [ ] ID-9 +Parameter [BaseExercise.setFees(address[],uint256[])._feeRecipients](src/exercise/BaseExercise.sol#L55) is not in mixedCase + +src/exercise/BaseExercise.sol#L55 + + + - [ ] ID-10 +Parameter [BaseExercise.setFees(address[],uint256[])._feeBPS](src/exercise/BaseExercise.sol#L55) is not in mixedCase + +src/exercise/BaseExercise.sol#L55 \ No newline at end of file diff --git a/scripts/00_deploySwapper.ts b/scripts/00_deploySwapper.ts new file mode 100644 index 0000000..60c015a --- /dev/null +++ b/scripts/00_deploySwapper.ts @@ -0,0 +1,65 @@ +import { ethers, upgrades } from "hardhat"; +import config from './config.json'; + +async function main() { + const contractsToDeploy = config.CONTRACTS_TO_DEPLOY; + const paymentToken = config.OT_PAYMENT_TOKEN; + const underlyingToken = config.OT_UNDERLYING_TOKEN; + const veloRouter = config.VELO_ROUTER; + const path1 = [{ + from: paymentToken, + to: underlyingToken, + stable: false, + }]; + + const path2 = [{ + from: underlyingToken, + to: paymentToken, + stable: false, + }]; + + const strategists: string[] = [ + "0x1E71AEE6081f62053123140aacC7a06021D77348", // bongo + "0x81876677843D00a7D792E1617459aC2E93202576", // degenicus + "0x4C3490dF15edFa178333445ce568EC6D99b5d71c", // eidolon + "0xb26cd6633db6b0c9ae919049c1437271ae496d15", // zokunei + "0x60BC5E0440C867eEb4CbcE84bB1123fad2b262B1", // goober + ]; + const multisigRoles: string[] = [ + "0x90c75c11735A7eeeD06E993fC7aF6838d86A1Ba7", // super admin + "0xC17DfA7Eb4300871D5f022c107E07F98c750472e", // admin + "0x30d65Ae22BBbe44208Dd8964DDE31Def0Fc1B9ee", // guardian + ]; + + // ReaperSwapper + let swapper; + if(contractsToDeploy.includes("Swapper")){ + const Swapper = await ethers.getContractFactory("ReaperSwapper"); + const initializerArguments = [ + strategists, + multisigRoles[2], + multisigRoles[0], + ]; + swapper = await upgrades.deployProxy( + Swapper, + initializerArguments, + { kind: "uups", timeout: 0 }, + ); + + await swapper.waitForDeployment(); + console.log("Swapper deployed to:", await swapper.getAddress()); + } + else { + swapper = await ethers.getContractAt("ReaperSwapper", config.SWAPPER); + } + + await swapper.updateVeloSwapPath(paymentToken, underlyingToken, veloRouter, path1); + await swapper.updateVeloSwapPath(underlyingToken, paymentToken, veloRouter, path2); +} + +// We recommend this pattern to be able to use async/await everywhere +// and properly handle errors. +main().catch((error) => { + console.error(error); + process.exitCode = 1; + }); \ No newline at end of file diff --git a/scripts/01_deployOptionsTokenInfra.ts b/scripts/01_deployOptionsTokenInfra.ts new file mode 100644 index 0000000..3f860fd --- /dev/null +++ b/scripts/01_deployOptionsTokenInfra.ts @@ -0,0 +1,136 @@ +import { ethers, upgrades } from "hardhat"; +import { getImplementationAddress } from '@openzeppelin/upgrades-core'; +import config from './config.json'; + + + +async function main() { + const swapper = await ethers.getContractAt("ReaperSwapper", config.SWAPPER); + const contractsToDeploy = config.CONTRACTS_TO_DEPLOY; + const thenaPair = config.ORACLE_SOURCE; + const targetToken = config.OT_UNDERLYING_TOKEN; + const owner = config.OWNER; + const secs = config.ORACLE_SECS; + const minPrice = config.ORACLE_MIN_PRICE; + + const veloRouter = config.VELO_ROUTER; + const addressProvider = config.ADDRESS_PROVIDER; + + //Oracle + let oracle; + if(contractsToDeploy.includes("ThenaOracle")){ + oracle = await ethers.deployContract( + "ThenaOracle", + [thenaPair, targetToken, owner, secs, minPrice] + ); + await oracle.waitForDeployment(); + console.log(`Oracle deployed to: ${await oracle.getAddress()}`); + } + else{ + oracle = await ethers.getContractAt("ThenaOracle", config.ORACLE); + } + + // OptionsToken + let optionsToken; + if(contractsToDeploy.includes("OptionsToken")){ + const tokenName = config.OT_NAME; + const symbol = config.OT_SYMBOL; + const tokenAdmin = config.OT_TOKEN_ADMIN; + const OptionsToken = await ethers.getContractFactory("OptionsToken"); + optionsToken = await upgrades.deployProxy( + OptionsToken, + [tokenName, symbol, tokenAdmin], + { kind: "uups", initializer: "initialize" } + ); + + await optionsToken.waitForDeployment(); + console.log(`OptionsToken deployed to: ${await optionsToken.getAddress()}`); + console.log(`Implementation: ${await getImplementationAddress(ethers.provider, await optionsToken.getAddress())}`); + } + else{ + optionsToken = await ethers.getContractAt("OptionsToken", config.OPTIONS_TOKEN); + } + + const swapProps = { + swapper: await swapper.getAddress(), + exchangeAddress: veloRouter, + exchangeTypes: 2, /* VeloSolid */ + maxSwapSlippage: 500 /* 5% */ + }; + + // Exercise + let exercise; + if(contractsToDeploy.includes("DiscountExercise")){ + const paymentToken = config.OT_PAYMENT_TOKEN; + const multiplier = config.MULTIPLIER; + const feeRecipients = String(config.FEE_RECIPIENTS).split(","); + const feeBps = String(config.FEE_BPS).split(","); + const instantExitFee = config.INSTANT_EXIT_FEE; + const minAmountToTriggerSwap = config.MIN_AMOUNT_TO_TRIGGER_SWAP; + + exercise = await ethers.deployContract( + "DiscountExercise", + [ + await optionsToken.getAddress(), + owner, + paymentToken, + targetToken, + await oracle.getAddress(), + multiplier, + instantExitFee, + minAmountToTriggerSwap, + feeRecipients, + feeBps, + swapProps + ] + ); + await exercise.waitForDeployment(); + console.log(`Exercise deployed to: ${await exercise.getAddress()}`); + + // Set exercise + const exerciseAddress = await exercise.getAddress(); + await optionsToken.setExerciseContract(exerciseAddress, true); + console.log(`Exercise set to: ${exerciseAddress}`); + } + else{ + exercise = await ethers.getContractAt("DiscountExercise", config.DISCOUNT_EXERCISE); + } + + + // OptionsCompounder + let optionsCompounder; + + if(contractsToDeploy.includes("OptionsCompounder")){ + const OptionsCompounder = await ethers.getContractFactory("OptionsCompounder"); + + // console.log("Proxy deployment: ", [optionsToken, addressProvider, swapper, swapProps, oracle]); + console.log("Proxy deployment: ", [await optionsToken.getAddress(), addressProvider, await swapper.getAddress(), swapProps, await oracle.getAddress()]); + + optionsCompounder = await upgrades.deployProxy( + OptionsCompounder, + [await optionsToken.getAddress(), addressProvider, await swapper.getAddress(), swapProps, await oracle.getAddress()], + { kind: "uups", initializer: "initialize" } + ); + + // const optionsCompounder = await upgrades.deployProxy( + // OptionsCompounder, + // [optionsToken, addressProvider, swapper, swapProps, oracle], + // { kind: "uups", initializer: "initialize" } + // ); + + await optionsCompounder.waitForDeployment(); + console.log(`OptionsCompounder deployed to: ${await optionsCompounder.getAddress()}`); + console.log(`Implementation: ${await getImplementationAddress(ethers.provider, await optionsCompounder.getAddress())}`); + } + else{ + optionsCompounder = await ethers.getContractAt("OptionsCompounder", config.OPTIONS_COMPOUNDER); + } + +} + +// We recommend this pattern to be able to use async/await everywhere +// and properly handle errors. +main().catch((error) => { + console.error(error); + process.exitCode = 1; +}); diff --git a/scripts/config.json b/scripts/config.json index 3bbd012..79b6994 100644 --- a/scripts/config.json +++ b/scripts/config.json @@ -9,6 +9,8 @@ "OT_PAYMENT_TOKEN": "0xDfc7C877a950e49D2610114102175A06C2e3167a", "OT_UNDERLYING_TOKEN": "0x4200000000000000000000000000000000000006", "OT_TOKEN_ADMIN": "0xF29dA3595351dBFd0D647857C46F8D63Fc2e68C5", + "VELO_ROUTER": "0x3a63171DD9BebF4D07BC782FECC7eb0b890C2A45", + "ADDRESS_PROVIDER": "0xEDc83309549e36f3c7FD8c2C5C54B4c8e5FA00FC", "MULTIPLIER": 5000, "FEE_RECIPIENTS": [ "0xF29dA3595351dBFd0D647857C46F8D63Fc2e68C5", @@ -19,5 +21,16 @@ 9000 ], "INSTANT_EXIT_FEE": 1000, - "MIN_AMOUNT_TO_TRIGGER_SWAP": 1e15 + "MIN_AMOUNT_TO_TRIGGER_SWAP": 1e15, + "CONTRACTS_TO_DEPLOY": [ + "OptionsToken", + "DiscountExercise", + "OptionsCompounder", + "ThenaOracle" + ], + "SWAPPER": "0xd57957A73634B860f0E8c1907371BD4f3e42C2C3", + "DISCOUNT_EXERCISE": "undefined", + "OPTIONS_TOKEN": "undefined", + "OPTIONS_COMPOUNDER": "undefined", + "ORACLE": "undefined" } \ No newline at end of file diff --git a/scripts/deploy.ts b/scripts/deploy.ts deleted file mode 100644 index e111007..0000000 --- a/scripts/deploy.ts +++ /dev/null @@ -1,138 +0,0 @@ -import { ethers, upgrades } from "hardhat"; -import { getImplementationAddress } from '@openzeppelin/upgrades-core'; -import config from './config.json'; - -async function main() { - const thenaPair = config.ORACLE_SOURCE; - const targetToken = config.OT_UNDERLYING_TOKEN; - const owner = config.OWNER; - const secs = config.ORACLE_SECS; - const minPrice = config.ORACLE_MIN_PRICE; - - const strategists: string[] = [ - "0x1E71AEE6081f62053123140aacC7a06021D77348", // bongo - "0x81876677843D00a7D792E1617459aC2E93202576", // degenicus - "0x4C3490dF15edFa178333445ce568EC6D99b5d71c", // eidolon - "0xb26cd6633db6b0c9ae919049c1437271ae496d15", // zokunei - "0x60BC5E0440C867eEb4CbcE84bB1123fad2b262B1", // goober - ]; - const multisigRoles: string[] = [ - "0x90c75c11735A7eeeD06E993fC7aF6838d86A1Ba7", // super admin - "0xC17DfA7Eb4300871D5f022c107E07F98c750472e", // admin - "0x30d65Ae22BBbe44208Dd8964DDE31Def0Fc1B9ee", // guardian - ]; - - const veloRouter = "0x3a63171DD9BebF4D07BC782FECC7eb0b890C2A45"; - const addressProvider = "0xEDc83309549e36f3c7FD8c2C5C54B4c8e5FA00FC"; - - // ReaperSwapper - const Swapper = await ethers.getContractFactory("ReaperSwapper"); - const initializerArguments = [ - strategists, - multisigRoles[2], - multisigRoles[0], - ]; - const swapper = await upgrades.deployProxy( - Swapper, - initializerArguments, - { kind: "uups", timeout: 0 }, - ); - - await swapper.waitForDeployment(); - console.log("Swapper deployed to:", await swapper.getAddress()); - - //Oracle - const oracle = await ethers.deployContract( - "ThenaOracle", - [thenaPair, targetToken, owner, secs, minPrice] - ); - await oracle.waitForDeployment(); - console.log(`Oracle deployed to: ${await oracle.getAddress()}`); - - // OptionsToken - const tokenName = config.OT_NAME; - const symbol = config.OT_SYMBOL; - const tokenAdmin = config.OT_TOKEN_ADMIN; - const OptionsToken = await ethers.getContractFactory("OptionsToken"); - const optionsToken = await upgrades.deployProxy( - OptionsToken, - [tokenName, symbol, tokenAdmin], - { kind: "uups", initializer: "initialize" } - ); - - await optionsToken.waitForDeployment(); - console.log(`OptionsToken deployed to: ${await optionsToken.getAddress()}`); - console.log(`Implementation: ${await getImplementationAddress(ethers.provider, await optionsToken.getAddress())}`); - - // Exercise - const paymentToken = config.OT_PAYMENT_TOKEN; - const multiplier = config.MULTIPLIER; - const feeRecipients = String(config.FEE_RECIPIENTS).split(","); - const feeBps = String(config.FEE_BPS).split(","); - const instantExitFee = config.INSTANT_EXIT_FEE; - const minAmountToTriggerSwap = config.MIN_AMOUNT_TO_TRIGGER_SWAP; - - const swapProps = { - swapper: await swapper.getAddress(), - exchangeAddress: veloRouter, - exchangeTypes: 2, /* VeloSolid */ - maxSwapSlippage: 500 /* 5% */ - }; - - const exercise = await ethers.deployContract( - "DiscountExercise", - [ - await optionsToken.getAddress(), - owner, - paymentToken, - targetToken, - await oracle.getAddress(), - multiplier, - instantExitFee, - minAmountToTriggerSwap, - feeRecipients, - feeBps, - swapProps - ] - ); - await exercise.waitForDeployment(); - console.log(`Exercise deployed to: ${await exercise.getAddress()}`); - - // Set exercise - const exerciseAddress = await exercise.getAddress(); - await optionsToken.setExerciseContract(exerciseAddress, true); - console.log(`Exercise set to: ${exerciseAddress}`); - - //OptionsCompounder - // const swapper = "0xe9A46021305B67Dbd6b35a4277FF0207E29320C2"; - // const oracle = "0xd36917a9e3a3bAE753b9503B251640703500aAFE";//await ethers.getContractAt("IOracle", "0xd36917a9e3a3bAE753b9503B251640703500aAFE"); - // const optionsToken = "0xe3F95Bc8Fd7b54C4D7a464A44b47E0e7d17F3940"; - - const OptionsCompounder = await ethers.getContractFactory("OptionsCompounder"); - - // console.log("Proxy deployment: ", [optionsToken, addressProvider, swapper, swapProps, oracle]); - console.log("Proxy deployment: ", [await optionsToken.getAddress(), addressProvider, await swapper.getAddress(), swapProps, await oracle.getAddress()]); - - const optionsCompounder = await upgrades.deployProxy( - OptionsCompounder, - [await optionsToken.getAddress(), addressProvider, await swapper.getAddress(), swapProps, await oracle.getAddress()], - { kind: "uups", initializer: "initialize" } - ); - - // const optionsCompounder = await upgrades.deployProxy( - // OptionsCompounder, - // [optionsToken, addressProvider, swapper, swapProps, oracle], - // { kind: "uups", initializer: "initialize" } - // ); - - await optionsCompounder.waitForDeployment(); - console.log(`OptionsCompounder deployed to: ${await optionsCompounder.getAddress()}`); - console.log(`Implementation: ${await getImplementationAddress(ethers.provider, await optionsCompounder.getAddress())}`); -} - -// We recommend this pattern to be able to use async/await everywhere -// and properly handle errors. -main().catch((error) => { - console.error(error); - process.exitCode = 1; -}); diff --git a/src/OptionsCompounder.sol b/src/OptionsCompounder.sol index 27efa81..2c7bfc9 100644 --- a/src/OptionsCompounder.sol +++ b/src/OptionsCompounder.sol @@ -7,8 +7,8 @@ import {IFlashLoanReceiver} from "./interfaces/IFlashLoanReceiver.sol"; import {ILendingPoolAddressesProvider} from "./interfaces/ILendingPoolAddressesProvider.sol"; import {ILendingPool} from "./interfaces/ILendingPool.sol"; import {IOracle} from "./interfaces/IOracle.sol"; +import {IOptionsToken} from "./interfaces/IOptionsToken.sol"; import {DiscountExerciseParams, DiscountExercise} from "./exercise/DiscountExercise.sol"; -import {ReaperAccessControl} from "vault-v2/mixins/ReaperAccessControl.sol"; import {IERC20} from "oz/token/ERC20/IERC20.sol"; import {FixedPointMathLib} from "solmate/utils/FixedPointMathLib.sol"; import {OwnableUpgradeable} from "oz-upgradeable/access/OwnableUpgradeable.sol"; diff --git a/src/interfaces/IOptionsCompounder.sol b/src/interfaces/IOptionsCompounder.sol index 916f3a9..492492b 100644 --- a/src/interfaces/IOptionsCompounder.sol +++ b/src/interfaces/IOptionsCompounder.sol @@ -2,8 +2,6 @@ pragma solidity ^0.8.0; -import {IOptionsToken} from "./IOptionsToken.sol"; - /* Errors */ error OptionsCompounder__NotExerciseContract(); error OptionsCompounder__TooMuchAssetsLoaned(); From 671ce4d75e3016614e8272ea033fc7000003d2e0 Mon Sep 17 00:00:00 2001 From: xRave110 Date: Wed, 10 Jul 2024 11:10:39 +0200 Subject: [PATCH 60/64] Readme updates --- README.md | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 70 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1a91fd8..72888e1 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,18 @@ +# **Table of content** +- [Description](#description) + - [OptionsToken](#optionstoken) + - [OptionsCompounder](#optionscompounder) +- [Installation](#installation) + - [Local Development](#local-development) +- [Testing](#testing) + - [Dynamic](#dynamic) + - [Static](#static) +- [Deployment](#deployment) +- [Checklist](#checklist) +- [Frontend integration](#frontend-integration) + + + # Description ## OptionsToken @@ -1656,4 +1671,58 @@ src/exercise/BaseExercise.sol#L55 - [ ] ID-10 Parameter [BaseExercise.setFees(address[],uint256[])._feeBPS](src/exercise/BaseExercise.sol#L55) is not in mixedCase -src/exercise/BaseExercise.sol#L55 \ No newline at end of file +src/exercise/BaseExercise.sol#L55 + +# Frontend Integration + +Frontend shall allow to go through 3 different scenarios: +- Pay [PaymentTokens](#paymenttoken) to [**redeem**](#redeem-flow) [UnderlyingTokens](#underlyingtoken) from OptionsTokens +- [**Zap**](#zap-flow) OptionsTokens into the [UnderlyingTokens](#underlyingtoken) +- [**Claim**](#claim-flow---optional) not exercised [UnderlyingTokens](#underlyingtoken) (due to lack of funds in exercise contract) -> this is probably optional frontend feature + +## Redeem flow + - Standard ERC20 approve action on [PaymentToken](#paymenttoken) + - Note: `getPaymentAmount(uint256 amount)` interface may be usefull to get correct amount of PaymentToken needed. + - Exercise optionsToken with following parameters: + - amount of options tokens to spend (defined by user) + - recipient of the [UnderlyingTokens](#underlyingtoken) transferred during exercise (user address) + - option of the exercise -> it is DiscountExercise contract address + - encoded params: + - maxPaymentAmount - calculated maximal payment amount (amount * price * multiplier). Price can be get from oracle contract using interface `getPrice()`. Multiplier can be get from DiscountExercise contract using interface `multiplier()` + - deadline - current block timestamp + - isInstantExit - determines whether it is redeem (false) or zap (true) action. **Shall be hardcoded to false.** + - Events emitted: + - `Exercise(address indexed sender, address indexed recipient, uint256 amount, address data0, uint256 data1, uint256 data2)` - from OptionsToken contract. data0, data1, data2 - are not used in this case. + - `Exercised(from, recipient, underlyingAmount, paymentAmount)` from DiscountExercise contract + - Note: Amount of [UnderlyingTokens](#underlyingtoken) to receive from redeeming is the same amount that is specified for optionsTokens. + +## Zap flow + - Call `exercise(uint256 amount, address recipient, address option, bytes calldata params)` from optionsToken contract with following parameters: + - amount of options tokens to spend (defined by user) + - recipient of the [UnderlyingTokens](#underlyingtoken) transferred during exercise (user address) + - option of the exercise -> it is DiscountExercise contract address + - encoded params: + - maxPaymentAmount - calculated maximal payment amount (amount * price * multiplier). Price can be get from oracle contract using interface `getPrice()`. Multiplier can be get from DiscountExercise contract using interface `multiplier()` + - deadline - current block timestamp + - isInstantExit - determines whether it is redeem (false) or zap (true) action. **Shall be hardcoded to true.** + - Events emitted: + - `Exercise(address indexed sender, address indexed recipient, uint256 amount, address data0, uint256 data1, uint256 data2)` - from OptionsToken contract. data0, data1, data2 - are not used in this case. + - `Exercised(from, recipient, underlyingAmount, paymentAmount)` from DiscountExercise contract + - Note: Amount of [UnderlyingTokens](#underlyingtoken) to receive from zapping is: amountOfOTokens * (1 - multiplier) * (1 - instantExitFee). Everything is denominated in BPS (10 000). InstantExitFee can be get by calling `instantExitFee()`. + - Note: `getPaymentAmount(uint256 amount)` interface may be usefull to get correct amount of PaymentToken needed. + - Note: Usually swap action happens here so standard events for swapping are here, but contract handles all actions like approvals etc + +## Claim flow - optional +- Call `claim(address to)` with address of recipient of the [UnderlyingTokens](#underlyingtoken) transferred during claiming process +- `Claimed(amount)` event is emitted + +## Changelog +Main change between version 1.0.0 deployed on Harbor is the zap feature which requires additional variable in `params` argument (`isInstantExit`) of the `exercise(uint256 amount, address recipient, address option, bytes calldata params)` interface. +Now frontend shall allow to obtain [UnderlyingTokens](#underlyingtoken) in two ways (redeem and zap). + +## Legend +### PaymentToken +Token used to pay for exercising options token. Ironclad -> MODE, Harbor -> WBNB +### UnderlyingToken +Token which can be obtained from exercising. Ironclad -> ICL, Harbor -> HBR + From 364e3ff486895e740478c8cb93bdcf9a110bc6f2 Mon Sep 17 00:00:00 2001 From: xRave110 Date: Thu, 11 Jul 2024 13:28:52 +0200 Subject: [PATCH 61/64] Added access control only for strategies in OptionsCompounder --- README.md | 30 +++---- scripts/config.json | 13 ++- src/OptionsCompounder.sol | 82 +++++++++++++++-- test/ItMode_OptionsCompounder.t.sol | 131 +++++++++++++++++++++++++--- 4 files changed, 214 insertions(+), 42 deletions(-) diff --git a/README.md b/README.md index 72888e1..e008f01 100644 --- a/README.md +++ b/README.md @@ -32,8 +32,8 @@ The user will always interact with the OptionsToken itself, and never with any e 3. DiscountExercise decodes the parameters for the exercise function on the chosen exercise contract, and calls the specified function. In the case of zapping in DiscountExercise, the parameters are maxPaymentAmount, deadline, and isInstantExit set to true. 4. OptionsTokens are burnt. 5. A penalty fee in the form of underlying tokens (available in the contract) is calculated, then conditionally swapped to the desired token and distributed to the fee recipients. - a. Swapping and distribution occur only when the fee amount exceeds a specified trigger to avoid swapping small amounts. - b. The transaction reverts if the minimal desired amount of desired tokens is not obtained. + - Swapping and distribution occur only when the fee amount exceeds a specified trigger to avoid swapping small amounts. + - The transaction reverts if the minimal desired amount of desired tokens is not obtained. 6. The underlying tokens available in the DiscountExercise contract are sent to the user. The amount of underlying tokens is discounted by the multiplier and reduced by the penalty fee. #### REDEEM @@ -41,8 +41,8 @@ The user will always interact with the OptionsToken itself, and never with any e 2. User calls exercise on the OptionsToken, specifying their desired exercise contract and encoding exercise parameters 3. OptionsToken validates the exercise contract, decodes the parameters for the exercise function on the exercise contract of choice, and calls said function. In the case of DiscountExercise, the params are maxPaymentAmount, deadline and isInstantExit set to false. 4. oTokens are burnt, WETH is sent to the treasury, and underlyingTokens, discounted by the multiplier, are sent to the user exercising - a. Can be priced using balancer, thena, univ3 twap oracles - b. Reverts above maxPaymentAmount or past deadline + - Can be priced using balancer, thena, univ3 twap oracles + - Reverts above maxPaymentAmount or past deadline ## OptionsCompounder @@ -56,12 +56,12 @@ The Compounder platform facilitates the utilization of flash loans to exercise t 4. Calculate Payment Amount from Discount Exercise given oToken balance 5. Flashloan the necessary amount of funds to exercise in paymentToken 6. Callback from flashloan is called - a. oTokens are exercised using paymentToken that was flash loaned - b. Underlying token is received by the strategy - c. Calculate minAmountOut by directly querying the same oracle consumed by the DiscountExercise we interact with - d. Swap entire amount into payment token to repay flashloan - e. Assess profitability in units of paymentToken, swap profits to want of the strategy if not same token as paymentToken - f. Emit event that reflects the oTokens compounded + - oTokens are exercised using paymentToken that was flash loaned + - Underlying token is received by the strategy + - Calculate minAmountOut by directly querying the same oracle consumed by the DiscountExercise we interact with + - Swap entire amount into payment token to repay flashloan + - Assess profitability in units of paymentToken, swap profits to want of the strategy if not same token as paymentToken + - Emit event that reflects the oTokens compounded # Installation @@ -143,11 +143,11 @@ There are 2 deployment scripts. One is for swapper and paths updates and second - [x] Contracts pass all tests - [x] Contracts deployed to testnet - - [x] [DiscountExercise](https://explorer.mode.network/address/0xeE89a9e5022f967Fc2DDb0dEbfFb72bFc4FB4692?tab=contract) - - [x] [ReaperSwapper](https://explorer.mode.network/address/0xd57957A73634B860f0E8c1907371BD4f3e42C2C3?tab=contract) - - [x] [VeloOracle](https://explorer.mode.network/address/0x52B2732b29B4d6444e9930D7C328c082dA033d66?tab=contract) - - [x] [OptionsToken](https://explorer.mode.network/address/0x8013e0c13D9262094D0A2cFC8DF2Aa11cE4D8203?tab=contract) - - [x] [OptionsCompounder](https://explorer.mode.network/address/0x80c1FccB0c01A1EEafB422719A6A1048Fe92033f?=contract) + - [x] [DiscountExercise](https://explorer.mode.network/address/0xcb727532e24dFe22E74D3892b998f5e915676Da8?tab=contract) + - [x] [ReaperSwapper](https://explorer.mode.network/address/0x63D170618A8Ed1987F3CA6391b5e2F6a4554Cf53?tab=contract) + - [x] [VeloOracle](https://explorer.mode.network/address/0xDaA2c821428f62e1B08009a69CE824253CCEE5f9?tab=contract) + - [x] [OptionsToken](https://explorer.mode.network/address/0x3B6eA0fA8A487c90007ce120a83920fd52b06f6D?tab=contract) + - [ ] [OptionsCompounder](https://explorer.mode.network/address/0x80c1FccB0c01A1EEafB422719A6A1048Fe92033f?=contract) - [x] Does this deployment have access to funds, either directly or indirectly (zappers, leveragers, etc.)? Minimum security if Yes: diff --git a/scripts/config.json b/scripts/config.json index 79b6994..d2acad7 100644 --- a/scripts/config.json +++ b/scripts/config.json @@ -1,34 +1,31 @@ { - "VERSION": "1.0.0", + "VERSION": "1.1.0", "OWNER": "0xF29dA3595351dBFd0D647857C46F8D63Fc2e68C5", - "ORACLE_SOURCE": "0x0fba984c97539B3fb49ACDA6973288D0EFA903DB", + "ORACLE_SOURCE": "0x1349e6986084b65708D68A72C8EfCBD7Cf4D3FB2", "ORACLE_SECS": 1800, "ORACLE_MIN_PRICE": 10000000, "OT_NAME": "ICL Call Option Token", "OT_SYMBOL": "oICL", "OT_PAYMENT_TOKEN": "0xDfc7C877a950e49D2610114102175A06C2e3167a", - "OT_UNDERLYING_TOKEN": "0x4200000000000000000000000000000000000006", + "OT_UNDERLYING_TOKEN": "0x95177295a394f2b9b04545fff58f4af0673e839d", "OT_TOKEN_ADMIN": "0xF29dA3595351dBFd0D647857C46F8D63Fc2e68C5", "VELO_ROUTER": "0x3a63171DD9BebF4D07BC782FECC7eb0b890C2A45", "ADDRESS_PROVIDER": "0xEDc83309549e36f3c7FD8c2C5C54B4c8e5FA00FC", "MULTIPLIER": 5000, "FEE_RECIPIENTS": [ - "0xF29dA3595351dBFd0D647857C46F8D63Fc2e68C5", "0xd93E25A8B1D645b15f8c736E1419b4819Ff9e6EF" ], "FEE_BPS": [ - 1000, - 9000 + 10000 ], "INSTANT_EXIT_FEE": 1000, "MIN_AMOUNT_TO_TRIGGER_SWAP": 1e15, "CONTRACTS_TO_DEPLOY": [ "OptionsToken", "DiscountExercise", - "OptionsCompounder", "ThenaOracle" ], - "SWAPPER": "0xd57957A73634B860f0E8c1907371BD4f3e42C2C3", + "SWAPPER": "0x63D170618A8Ed1987F3CA6391b5e2F6a4554Cf53", "DISCOUNT_EXERCISE": "undefined", "OPTIONS_TOKEN": "undefined", "OPTIONS_COMPOUNDER": "undefined", diff --git a/src/OptionsCompounder.sol b/src/OptionsCompounder.sol index 2c7bfc9..cbfd400 100644 --- a/src/OptionsCompounder.sol +++ b/src/OptionsCompounder.sol @@ -35,6 +35,14 @@ contract OptionsCompounder is IFlashLoanReceiver, OwnableUpgradeable, UUPSUpgrad uint256 minPaymentAmount; } + /* Modifier */ + modifier onlyStrat(address _strat) { + if (!_isStratAvailable(_strat)) { + revert OptionsCompounder__OnlyStratAllowed(); + } + _; + } + /* Constants */ uint8 constant MAX_NR_OF_FLASHLOAN_ASSETS = 1; @@ -51,6 +59,7 @@ contract OptionsCompounder is IFlashLoanReceiver, OwnableUpgradeable, UUPSUpgrad uint256 public upgradeProposalTime; address public nextImplementation; + address[] private strats; /* Events */ event OTokenCompounded(uint256 indexed gainInPayment, uint256 indexed returned); @@ -69,17 +78,23 @@ contract OptionsCompounder is IFlashLoanReceiver, OwnableUpgradeable, UUPSUpgrad * @param _addressProvider - address lending pool address provider - necessary for flashloan operations * @param _swapProps - swap properites for all swaps in the contract * @param _oracle - oracles used in all swaps in the contract + * @param _strats - list of strategies used to call harvestOTokens() * */ - function initialize(address _optionsToken, address _addressProvider, address _swapper, SwapProps memory _swapProps, IOracle _oracle) - public - initializer - { + function initialize( + address _optionsToken, + address _addressProvider, + address _swapper, + SwapProps memory _swapProps, + IOracle _oracle, + address[] memory _strats + ) public initializer { __Ownable_init(); _setOptionsToken(_optionsToken); _setSwapProps(_swapProps); _setOracle(_oracle); _setSwapper(_swapper); + _setStrats(_strats); flashloanFinished = true; _setAddressProvider(_addressProvider); __UUPSUpgradeable_init(); @@ -143,6 +158,43 @@ contract OptionsCompounder is IFlashLoanReceiver, OwnableUpgradeable, UUPSUpgrad lendingPool = ILendingPool(addressProvider.getLendingPool()); } + function setStrats(address[] memory _strats) external onlyOwner { + _setStrats(_strats); + } + + function _setStrats(address[] memory _strats) internal { + _deleteStrats(); + for (uint256 idx = 0; idx < _strats.length; idx++) { + _addStrat(_strats[idx]); + } + } + + function addStrat(address _strat) external onlyOwner { + _addStrat(_strat); + } + + /** + * @dev Function will be used sporadically with number of strategies less than 10, so no need to add any gas optimization + */ + function _addStrat(address _strat) internal { + if (_strat == address(0)) { + revert OptionsCompounder__ParamHasAddressZero(); + } + if (!_isStratAvailable(_strat)) { + strats.push(_strat); + } + } + + function deleteStrats() external onlyOwner { + _deleteStrats(); + } + + function _deleteStrats() internal { + if (strats.length != 0) { + delete strats; + } + } + /** * @notice Function initiates flashloan to get assets for exercising options. * @dev Can be executed only by keeper role. Reentrance protected. @@ -150,7 +202,7 @@ contract OptionsCompounder is IFlashLoanReceiver, OwnableUpgradeable, UUPSUpgrad * @param exerciseContract - address of exercise contract (DiscountContract) * @param minWantAmount - minimal amount of want when the flashloan is considered as profitable */ - function harvestOTokens(uint256 amount, address exerciseContract, uint256 minWantAmount) external { + function harvestOTokens(uint256 amount, address exerciseContract, uint256 minWantAmount) external onlyStrat(msg.sender) { _harvestOTokens(amount, exerciseContract, minWantAmount); } @@ -356,6 +408,26 @@ contract OptionsCompounder is IFlashLoanReceiver, OwnableUpgradeable, UUPSUpgrad /** * Getters ********************************** */ + function isStratAvailable(address strat) external view returns (bool) { + return _isStratAvailable(strat); + } + + function _isStratAvailable(address strat) internal view returns (bool) { + bool isStrat = false; + address[] memory _strats = strats; + for (uint256 idx = 0; idx < _strats.length; idx++) { + if (strat == _strats[idx]) { + isStrat = true; + break; + } + } + return isStrat; + } + + function getStrats() external view returns (address[] memory) { + return strats; + } + function getOptionTokenAddress() external view returns (address) { return address(optionsToken); } diff --git a/test/ItMode_OptionsCompounder.t.sol b/test/ItMode_OptionsCompounder.t.sol index ea91da9..d5df370 100644 --- a/test/ItMode_OptionsCompounder.t.sol +++ b/test/ItMode_OptionsCompounder.t.sol @@ -27,6 +27,8 @@ contract ItModeOptionsCompounder is Common { // ReaperStrategyGranary strategy; IOracle oracle; + address[] strategies; + function setUp() public { /* Common assignments */ ExchangeType exchangeType = ExchangeType.VeloSolid; @@ -96,11 +98,12 @@ contract ItModeOptionsCompounder is Common { optionsTokenProxy.setExerciseContract(address(exerciser), true); /* Strategy deployment */ + strategies.push(makeAddr("strategy")); optionsCompounder = new OptionsCompounder(); tmpProxy = new ERC1967Proxy(address(optionsCompounder), ""); optionsCompounder = OptionsCompounder(address(tmpProxy)); console.log("Initializing..."); - optionsCompounder.initialize(address(optionsTokenProxy), address(addressProvider), address(reaperSwapper), swapProps, oracle); + optionsCompounder.initialize(address(optionsTokenProxy), address(addressProvider), address(reaperSwapper), swapProps, oracle, strategies); vm.stopPrank(); @@ -127,18 +130,19 @@ contract ItModeOptionsCompounder is Common { /* Prepare option tokens - distribute them to the specified strategy and approve for spending */ - fixture_prepareOptionToken(amount, address(optionsCompounder), address(this), optionsTokenProxy, tokenAdmin); + fixture_prepareOptionToken(amount, address(optionsCompounder), strategies[0], optionsTokenProxy, tokenAdmin); /* Check balances before compounding */ - uint256 paymentTokenBalance = paymentToken.balanceOf(address(optionsCompounder)); + uint256 paymentTokenBalance = paymentToken.balanceOf(strategies[0]); // vm.startPrank(address(strategy)); /* already approved in fixture_prepareOptionToken */ + vm.prank(strategies[0]); optionsCompounder.harvestOTokens(amount, address(exerciser), minAmount); // vm.stopPrank(); /* Assertions */ - assertGt(paymentToken.balanceOf(address(this)), paymentTokenBalance + minAmount, "Gain not greater than 0"); + assertGt(paymentToken.balanceOf(strategies[0]), paymentTokenBalance + minAmount, "Gain not greater than 0"); assertEq(optionsTokenProxy.balanceOf(address(optionsCompounder)), 0, "Options token balance in compounder is 0"); assertEq(paymentToken.balanceOf(address(optionsCompounder)), 0, "Payment token balance in compounder is 0"); } @@ -149,7 +153,12 @@ contract ItModeOptionsCompounder is Common { vm.assume(randomOption != address(0)); vm.assume(hacker != owner); address addressProvider = makeAddr("AddressProvider"); + address[] memory strats = new address[](2); + strats[0] = makeAddr("strat1"); + strats[1] = makeAddr("strat2"); + SwapProps memory swapProps = SwapProps(address(reaperSwapper), address(swapRouter), ExchangeType.UniV3, 200); + /* Hacker tries to perform harvest */ vm.startPrank(hacker); @@ -165,6 +174,103 @@ contract ItModeOptionsCompounder is Common { vm.expectRevert("Ownable: caller is not the owner"); optionsCompounder.setAddressProvider(addressProvider); + + vm.expectRevert("Ownable: caller is not the owner"); + optionsCompounder.setStrats(strats); + + vm.expectRevert("Ownable: caller is not the owner"); + optionsCompounder.addStrat(strats[0]); + + vm.expectRevert("Ownable: caller is not the owner"); + optionsCompounder.deleteStrats(); + + vm.expectRevert(bytes4(keccak256("OptionsCompounder__OnlyStratAllowed()"))); + optionsCompounder.harvestOTokens(amount, address(exerciser), 1); + + vm.stopPrank(); + + /* Admin tries to set different option token */ + vm.startPrank(owner); + optionsCompounder.setOptionsToken(randomOption); + vm.stopPrank(); + assertEq(address(optionsCompounder.getOptionTokenAddress()), randomOption); + } + + function test_stratsSettings(address randomOption, uint256 amount) public { + /* Test vectors definition */ + amount = bound(amount, maxUnderlyingAmount / 10, underlyingToken.balanceOf(address(exerciser)) / 10); + vm.assume(randomOption != address(0)); + address[] memory strats = new address[](2); + uint256 minAmount = 5; + strats[0] = makeAddr("strat1"); + strats[1] = makeAddr("strat2"); + + fixture_prepareOptionToken(3 * amount, address(optionsCompounder), strats[0], optionsTokenProxy, tokenAdmin); + fixture_prepareOptionToken(3 * amount, address(optionsCompounder), strats[1], optionsTokenProxy, tokenAdmin); + + vm.startPrank(strats[0]); + vm.expectRevert(bytes4(keccak256("OptionsCompounder__OnlyStratAllowed()"))); + optionsCompounder.harvestOTokens(amount, address(exerciser), minAmount); + vm.stopPrank(); + + address[] memory strategies = optionsCompounder.getStrats(); + for (uint256 idx = 0; idx < strategies.length; idx++) { + console.log("Strat: %s %s", idx, strategies[idx]); + } + + vm.prank(owner); + optionsCompounder.setStrats(strats); + + strategies = optionsCompounder.getStrats(); + for (uint256 idx = 0; idx < strategies.length; idx++) { + console.log("Strat: %s %s", idx, strategies[idx]); + } + + assertEq(strategies.length, 2); + + vm.prank(strats[0]); + optionsCompounder.harvestOTokens(amount, address(exerciser), minAmount); + + vm.prank(strats[1]); + optionsCompounder.harvestOTokens(amount, address(exerciser), minAmount); + + vm.prank(owner); + optionsCompounder.addStrat(strats[1]); + + strategies = optionsCompounder.getStrats(); + for (uint256 idx = 0; idx < strategies.length; idx++) { + console.log("Strat: %s %s", idx, strategies[idx]); + } + assertEq(strategies.length, 2); + + vm.prank(owner); + optionsCompounder.deleteStrats(); + + strategies = optionsCompounder.getStrats(); + for (uint256 idx = 0; idx < strategies.length; idx++) { + console.log("Strat: %s %s", idx, strategies[idx]); + } + assertEq(strategies.length, 0); + + vm.startPrank(strats[0]); + vm.expectRevert(bytes4(keccak256("OptionsCompounder__OnlyStratAllowed()"))); + optionsCompounder.harvestOTokens(amount, address(exerciser), minAmount); + vm.startPrank(strats[1]); + vm.expectRevert(bytes4(keccak256("OptionsCompounder__OnlyStratAllowed()"))); + optionsCompounder.harvestOTokens(amount, address(exerciser), minAmount); + vm.stopPrank(); + + vm.prank(owner); + optionsCompounder.addStrat(strats[1]); + + strategies = optionsCompounder.getStrats(); + for (uint256 idx = 0; idx < strategies.length; idx++) { + console.log("Strat: %s %s", idx, strategies[idx]); + } + assertEq(strategies.length, 1); + + vm.startPrank(strats[1]); + optionsCompounder.harvestOTokens(amount, address(exerciser), minAmount); vm.stopPrank(); /* Admin tries to set different option token */ @@ -175,13 +281,12 @@ contract ItModeOptionsCompounder is Common { } function test_flashloanNegativeScenario_highTwapValueAndMultiplier(uint256 amount) public { - address strategy = makeAddr("Strategy"); /* Test vectors definition */ amount = bound(amount, maxUnderlyingAmount / 10, underlyingToken.balanceOf(address(exerciser))); /* Prepare option tokens - distribute them to the specified strategy and approve for spending */ - fixture_prepareOptionToken(amount, address(optionsCompounder), strategy, optionsTokenProxy, tokenAdmin); + fixture_prepareOptionToken(amount, address(optionsCompounder), strategies[0], optionsTokenProxy, tokenAdmin); /* Decrease option discount in order to make redemption not profitable */ /* Notice: Multiplier must be higher than denom because of oracle inaccuracy (initTwap) or just change initTwap */ @@ -190,17 +295,15 @@ contract ItModeOptionsCompounder is Common { vm.stopPrank(); /* Increase TWAP price to make flashloan not profitable */ + vm.startPrank(strategies[0]); /* Notice: additional protection is in exerciser: Exercise__SlippageTooHigh */ vm.expectRevert(bytes4(keccak256("OptionsCompounder__FlashloanNotProfitableEnough()"))); - - vm.startPrank(strategy); /* Already approved in fixture_prepareOptionToken */ optionsCompounder.harvestOTokens(amount, address(exerciser), NON_ZERO_PROFIT); vm.stopPrank(); } function test_flashloanNegativeScenario_tooHighMinAmounOfWantExpected(uint256 amount, uint256 minAmountOfPayment) public { - address strategy = makeAddr("Strategy"); /* Test vectors definition */ amount = bound(amount, maxUnderlyingAmount / 10, underlyingToken.balanceOf(address(exerciser))); /* Decrease option discount in order to make redemption not profitable */ @@ -215,16 +318,17 @@ contract ItModeOptionsCompounder is Common { /* Prepare option tokens - distribute them to the specified strategy and approve for spending */ - fixture_prepareOptionToken(amount, address(optionsCompounder), address(this), optionsTokenProxy, tokenAdmin); + fixture_prepareOptionToken(amount, address(optionsCompounder), strategies[0], optionsTokenProxy, tokenAdmin); + vm.startPrank(strategies[0]); /* Notice: additional protection is in exerciser: Exercise__SlippageTooHigh */ vm.expectRevert(bytes4(keccak256("OptionsCompounder__FlashloanNotProfitableEnough()"))); /* Already approved in fixture_prepareOptionToken */ optionsCompounder.harvestOTokens(amount, address(exerciser), minAmountOfPayment); + vm.stopPrank(); } function test_callExecuteOperationWithoutFlashloanTrigger(uint256 amount, address executor) public { - address strategy = makeAddr("Strategy"); /* Test vectors definition */ amount = bound(amount, maxUnderlyingAmount / 10, underlyingToken.balanceOf(address(exerciser))); @@ -244,7 +348,6 @@ contract ItModeOptionsCompounder is Common { } function test_harvestCallWithWrongExerciseContract(uint256 amount, address fuzzedExerciser) public { - address strategy = makeAddr("Strategy"); /* Test vectors definition */ amount = bound(amount, maxUnderlyingAmount / 10, underlyingToken.balanceOf(address(exerciser))); @@ -252,10 +355,10 @@ contract ItModeOptionsCompounder is Common { /* Prepare option tokens - distribute them to the specified strategy and approve for spending */ - fixture_prepareOptionToken(amount, address(optionsCompounder), strategy, optionsTokenProxy, tokenAdmin); + fixture_prepareOptionToken(amount, address(optionsCompounder), strategies[0], optionsTokenProxy, tokenAdmin); - vm.startPrank(strategy); /* Assertion */ + vm.startPrank(strategies[0]); vm.expectRevert(bytes4(keccak256("OptionsCompounder__NotExerciseContract()"))); optionsCompounder.harvestOTokens(amount, fuzzedExerciser, NON_ZERO_PROFIT); vm.stopPrank(); From 201bbdecb566ca846523eda0d34a461127c74c30 Mon Sep 17 00:00:00 2001 From: xRave110 Date: Fri, 12 Jul 2024 15:01:40 +0200 Subject: [PATCH 62/64] Updates after internal review --- src/OptionsCompounder.sol | 14 ++------ src/interfaces/IOptionsCompounder.sol | 2 -- test/ItMode_OptionsCompounder.t.sol | 48 +++++++++++++-------------- 3 files changed, 26 insertions(+), 38 deletions(-) diff --git a/src/OptionsCompounder.sol b/src/OptionsCompounder.sol index cbfd400..51592aa 100644 --- a/src/OptionsCompounder.sol +++ b/src/OptionsCompounder.sol @@ -36,8 +36,8 @@ contract OptionsCompounder is IFlashLoanReceiver, OwnableUpgradeable, UUPSUpgrad } /* Modifier */ - modifier onlyStrat(address _strat) { - if (!_isStratAvailable(_strat)) { + modifier onlyStrat() { + if (!_isStratAvailable(msg.sender)) { revert OptionsCompounder__OnlyStratAllowed(); } _; @@ -185,10 +185,6 @@ contract OptionsCompounder is IFlashLoanReceiver, OwnableUpgradeable, UUPSUpgrad } } - function deleteStrats() external onlyOwner { - _deleteStrats(); - } - function _deleteStrats() internal { if (strats.length != 0) { delete strats; @@ -202,7 +198,7 @@ contract OptionsCompounder is IFlashLoanReceiver, OwnableUpgradeable, UUPSUpgrad * @param exerciseContract - address of exercise contract (DiscountContract) * @param minWantAmount - minimal amount of want when the flashloan is considered as profitable */ - function harvestOTokens(uint256 amount, address exerciseContract, uint256 minWantAmount) external onlyStrat(msg.sender) { + function harvestOTokens(uint256 amount, address exerciseContract, uint256 minWantAmount) external onlyStrat { _harvestOTokens(amount, exerciseContract, minWantAmount); } @@ -428,10 +424,6 @@ contract OptionsCompounder is IFlashLoanReceiver, OwnableUpgradeable, UUPSUpgrad return strats; } - function getOptionTokenAddress() external view returns (address) { - return address(optionsToken); - } - function ADDRESSES_PROVIDER() external view returns (ILendingPoolAddressesProvider) { return addressProvider; } diff --git a/src/interfaces/IOptionsCompounder.sol b/src/interfaces/IOptionsCompounder.sol index 492492b..1685df4 100644 --- a/src/interfaces/IOptionsCompounder.sol +++ b/src/interfaces/IOptionsCompounder.sol @@ -19,6 +19,4 @@ error OptionsCompounder__AmountOutIsZero(); interface IOptionsCompounder { function harvestOTokens(uint256 amount, address exerciseContract, uint256 minWantAmount) external; - - function getOptionTokenAddress() external returns (address); } diff --git a/test/ItMode_OptionsCompounder.t.sol b/test/ItMode_OptionsCompounder.t.sol index d5df370..d86339a 100644 --- a/test/ItMode_OptionsCompounder.t.sol +++ b/test/ItMode_OptionsCompounder.t.sol @@ -181,9 +181,6 @@ contract ItModeOptionsCompounder is Common { vm.expectRevert("Ownable: caller is not the owner"); optionsCompounder.addStrat(strats[0]); - vm.expectRevert("Ownable: caller is not the owner"); - optionsCompounder.deleteStrats(); - vm.expectRevert(bytes4(keccak256("OptionsCompounder__OnlyStratAllowed()"))); optionsCompounder.harvestOTokens(amount, address(exerciser), 1); @@ -193,7 +190,7 @@ contract ItModeOptionsCompounder is Common { vm.startPrank(owner); optionsCompounder.setOptionsToken(randomOption); vm.stopPrank(); - assertEq(address(optionsCompounder.getOptionTokenAddress()), randomOption); + assertEq(address(optionsCompounder.optionsToken()), randomOption); } function test_stratsSettings(address randomOption, uint256 amount) public { @@ -213,20 +210,20 @@ contract ItModeOptionsCompounder is Common { optionsCompounder.harvestOTokens(amount, address(exerciser), minAmount); vm.stopPrank(); - address[] memory strategies = optionsCompounder.getStrats(); - for (uint256 idx = 0; idx < strategies.length; idx++) { - console.log("Strat: %s %s", idx, strategies[idx]); + address[] memory receivedStrategies = optionsCompounder.getStrats(); + for (uint256 idx = 0; idx < receivedStrategies.length; idx++) { + console.log("Strat: %s %s", idx, receivedStrategies[idx]); } vm.prank(owner); optionsCompounder.setStrats(strats); - strategies = optionsCompounder.getStrats(); - for (uint256 idx = 0; idx < strategies.length; idx++) { - console.log("Strat: %s %s", idx, strategies[idx]); + receivedStrategies = optionsCompounder.getStrats(); + for (uint256 idx = 0; idx < receivedStrategies.length; idx++) { + console.log("Strat: %s %s", idx, receivedStrategies[idx]); } - assertEq(strategies.length, 2); + assertEq(receivedStrategies.length, 2); vm.prank(strats[0]); optionsCompounder.harvestOTokens(amount, address(exerciser), minAmount); @@ -237,20 +234,21 @@ contract ItModeOptionsCompounder is Common { vm.prank(owner); optionsCompounder.addStrat(strats[1]); - strategies = optionsCompounder.getStrats(); - for (uint256 idx = 0; idx < strategies.length; idx++) { - console.log("Strat: %s %s", idx, strategies[idx]); + receivedStrategies = optionsCompounder.getStrats(); + for (uint256 idx = 0; idx < receivedStrategies.length; idx++) { + console.log("Strat: %s %s", idx, receivedStrategies[idx]); } - assertEq(strategies.length, 2); + assertEq(receivedStrategies.length, 2); + address[] memory tmpStrats; vm.prank(owner); - optionsCompounder.deleteStrats(); + optionsCompounder.setStrats(tmpStrats); - strategies = optionsCompounder.getStrats(); - for (uint256 idx = 0; idx < strategies.length; idx++) { - console.log("Strat: %s %s", idx, strategies[idx]); + receivedStrategies = optionsCompounder.getStrats(); + for (uint256 idx = 0; idx < receivedStrategies.length; idx++) { + console.log("Strat: %s %s", idx, receivedStrategies[idx]); } - assertEq(strategies.length, 0); + assertEq(receivedStrategies.length, 0); vm.startPrank(strats[0]); vm.expectRevert(bytes4(keccak256("OptionsCompounder__OnlyStratAllowed()"))); @@ -263,11 +261,11 @@ contract ItModeOptionsCompounder is Common { vm.prank(owner); optionsCompounder.addStrat(strats[1]); - strategies = optionsCompounder.getStrats(); - for (uint256 idx = 0; idx < strategies.length; idx++) { - console.log("Strat: %s %s", idx, strategies[idx]); + receivedStrategies = optionsCompounder.getStrats(); + for (uint256 idx = 0; idx < receivedStrategies.length; idx++) { + console.log("Strat: %s %s", idx, receivedStrategies[idx]); } - assertEq(strategies.length, 1); + assertEq(receivedStrategies.length, 1); vm.startPrank(strats[1]); optionsCompounder.harvestOTokens(amount, address(exerciser), minAmount); @@ -277,7 +275,7 @@ contract ItModeOptionsCompounder is Common { vm.startPrank(owner); optionsCompounder.setOptionsToken(randomOption); vm.stopPrank(); - assertEq(address(optionsCompounder.getOptionTokenAddress()), randomOption); + assertEq(address(optionsCompounder.optionsToken()), randomOption); } function test_flashloanNegativeScenario_highTwapValueAndMultiplier(uint256 amount) public { From 94675e8a4fa314a4117b6e75fa25236e373d3e02 Mon Sep 17 00:00:00 2001 From: xRave110 Date: Wed, 17 Jul 2024 11:13:34 +0200 Subject: [PATCH 63/64] Upgrading deployment scripts --- README.md | 80 ++++++++- package-lock.json | 135 ++++++++++++++- package.json | 3 +- scripts/01_deployOptionsTokenInfra.ts | 37 +++- scripts/config.json | 17 +- test/ItBsc_OptionsCompounder.t copy.solNOT | 187 --------------------- 6 files changed, 252 insertions(+), 207 deletions(-) delete mode 100644 test/ItBsc_OptionsCompounder.t copy.solNOT diff --git a/README.md b/README.md index ea6b868..205bca8 100644 --- a/README.md +++ b/README.md @@ -116,9 +116,85 @@ forge test # Deployment Inside `./scripts` there is "config.json" where can be defined deployment configurations. -You can choose which contract to deploy by adding/removing string in CONTRACTS_TO_DEPLOY. If some contracts are removed, there must be defined the address for already existing contract on the chain (example: SWAPPER, OPTIONS_COMPOUNDER). +You can choose which contract to deploy by adding/removing string in CONTRACTS_TO_DEPLOY. If some contracts are removed from CONTRACTS_TO_DEPLOY, there must be defined the address for already existing contract on the chain (example: SWAPPER, OPTIONS_COMPOUNDER). There are 2 deployment scripts. One is for swapper and paths updates and second for all optionsToken infra (swapper address must be passed here). +## Examples of config.json +### All contracts to deploy +``` +{ + "VERSION": "1.1.0", + "OWNER": , + "ORACLE_SOURCE": , + "ORACLE_SECS": 1800, + "ORACLE_MIN_PRICE": 10000000, + "OT_NAME": "ICL Call Option Token", + "OT_SYMBOL": "oICL", + "OT_PAYMENT_TOKEN": "0xDfc7C877a950e49D2610114102175A06C2e3167a", + "OT_UNDERLYING_TOKEN": "0x95177295a394f2b9b04545fff58f4af0673e839d", + "OT_TOKEN_ADMIN": "0xF29dA3595351dBFd0D647857C46F8D63Fc2e68C5", + "VELO_ROUTER": "0x3a63171DD9BebF4D07BC782FECC7eb0b890C2A45", + "ADDRESS_PROVIDER": "0xEDc83309549e36f3c7FD8c2C5C54B4c8e5FA00FC", + "MULTIPLIER": 5000, + "FEE_RECIPIENTS": [ + + ], + "FEE_BPS": [ + 10000 + ], + "STRATS": [ + + ], + "INSTANT_EXIT_FEE": 1000, + "MIN_AMOUNT_TO_TRIGGER_SWAP": 1e15, + "CONTRACTS_TO_DEPLOY": [], + "SWAPPER": "0x63D170618A8Ed1987F3CA6391b5e2F6a4554Cf53", + "DISCOUNT_EXERCISE": "0xcb727532e24dFe22E74D3892b998f5e915676Da8", + "OPTIONS_TOKEN": "0x3B6eA0fA8A487c90007ce120a83920fd52b06f6D", + "OPTIONS_COMPOUNDER": "0xf6cf2065C35595c12B532e54ACDe5A4597e32e6e", + "ORACLE": "0xDaA2c821428f62e1B08009a69CE824253CCEE5f9" +} +``` +### Only configure options compounder (no deployments) +``` +{ + "VERSION": "1.1.0", + "OWNER": , + "ORACLE_SOURCE": , + "ORACLE_SECS": 1800, + "ORACLE_MIN_PRICE": 10000000, + "OT_NAME": "ICL Call Option Token", + "OT_SYMBOL": "oICL", + "OT_PAYMENT_TOKEN": "0xDfc7C877a950e49D2610114102175A06C2e3167a", + "OT_UNDERLYING_TOKEN": "0x95177295a394f2b9b04545fff58f4af0673e839d", + "OT_TOKEN_ADMIN": "0xF29dA3595351dBFd0D647857C46F8D63Fc2e68C5", + "VELO_ROUTER": "0x3a63171DD9BebF4D07BC782FECC7eb0b890C2A45", + "ADDRESS_PROVIDER": "0xEDc83309549e36f3c7FD8c2C5C54B4c8e5FA00FC", + "MULTIPLIER": 5000, + "FEE_RECIPIENTS": [ + + ], + "FEE_BPS": [ + 10000 + ], + "STRATS": [ + + ], + "INSTANT_EXIT_FEE": 1000, + "MIN_AMOUNT_TO_TRIGGER_SWAP": 1e15, + "CONTRACTS_TO_DEPLOY": [ + "OptionsToken", + "DiscountExercise", + "ThenaOracle" + ], + "SWAPPER": "0x63D170618A8Ed1987F3CA6391b5e2F6a4554Cf53", + "DISCOUNT_EXERCISE": "undefined", + "OPTIONS_TOKEN": "undefined", + "OPTIONS_COMPOUNDER": "undefined", + "ORACLE": "undefined" +} +``` + # Checklist ## Internal Audit Checklist @@ -148,7 +224,7 @@ There are 2 deployment scripts. One is for swapper and paths updates and second - [x] [ReaperSwapper](https://explorer.mode.network/address/0x63D170618A8Ed1987F3CA6391b5e2F6a4554Cf53?tab=contract) - [x] [VeloOracle](https://explorer.mode.network/address/0xDaA2c821428f62e1B08009a69CE824253CCEE5f9?tab=contract) - [x] [OptionsToken](https://explorer.mode.network/address/0x3B6eA0fA8A487c90007ce120a83920fd52b06f6D?tab=contract) - - [ ] [OptionsCompounder](https://explorer.mode.network/address/0x80c1FccB0c01A1EEafB422719A6A1048Fe92033f?=contract) + - [ ] [OptionsCompounder](https://explorer.mode.network/address/0xf6cf2065C35595c12B532e54ACDe5A4597e32e6e?tab=contract) - [x] Unchecked External Calls - [ ] Account abstraction/multicall issues - [x] USE SLITHER diff --git a/package-lock.json b/package-lock.json index 6d88e8c..7265a9d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,8 @@ "@openzeppelin/hardhat-upgrades": "^3.0.1", "dotenv": "^16.3.1", "ethers": "^6.9.2", - "hardhat": "^2.19.4" + "hardhat": "^2.19.4", + "hardhat-contract-sizer": "^2.10.0" } }, "node_modules/@adraffy/ens-normalize": { @@ -112,6 +113,16 @@ "case": "^1.6.3" } }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", @@ -4511,6 +4522,128 @@ } } }, + "node_modules/hardhat-contract-sizer": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/hardhat-contract-sizer/-/hardhat-contract-sizer-2.10.0.tgz", + "integrity": "sha512-QiinUgBD5MqJZJh1hl1jc9dNnpJg7eE/w4/4GEnrcmZJJTDbVFNe3+/3Ep24XqISSkYxRz36czcPHKHd/a0dwA==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "cli-table3": "^0.6.0", + "strip-ansi": "^6.0.0" + }, + "peerDependencies": { + "hardhat": "^2.0.0" + } + }, + "node_modules/hardhat-contract-sizer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/hardhat-contract-sizer/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/hardhat-contract-sizer/node_modules/cli-table3": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/hardhat-contract-sizer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/hardhat-contract-sizer/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/hardhat-contract-sizer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/hardhat-contract-sizer/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/hardhat-contract-sizer/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/hardhat-contract-sizer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/hardhat-gas-reporter": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.9.tgz", diff --git a/package.json b/package.json index 58f10dd..51bff4e 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,8 @@ "@openzeppelin/hardhat-upgrades": "^3.0.1", "dotenv": "^16.3.1", "ethers": "^6.9.2", - "hardhat": "^2.19.4" + "hardhat": "^2.19.4", + "hardhat-contract-sizer": "^2.10.0" }, "dependencies": { "@nomicfoundation/hardhat-network-helpers": "^1.0.10" diff --git a/scripts/01_deployOptionsTokenInfra.ts b/scripts/01_deployOptionsTokenInfra.ts index 3f860fd..6e2f92e 100644 --- a/scripts/01_deployOptionsTokenInfra.ts +++ b/scripts/01_deployOptionsTokenInfra.ts @@ -27,7 +27,12 @@ async function main() { console.log(`Oracle deployed to: ${await oracle.getAddress()}`); } else{ - oracle = await ethers.getContractAt("ThenaOracle", config.ORACLE); + try{ + oracle = await ethers.getContractAt("ThenaOracle", config.ORACLE); + } + catch(error){ + console.log("ThenaOracle NOT available due to lack of configuration"); + } } // OptionsToken @@ -48,7 +53,12 @@ async function main() { console.log(`Implementation: ${await getImplementationAddress(ethers.provider, await optionsToken.getAddress())}`); } else{ - optionsToken = await ethers.getContractAt("OptionsToken", config.OPTIONS_TOKEN); + try{ + optionsToken = await ethers.getContractAt("OptionsToken", config.OPTIONS_TOKEN); + } + catch(error){ + console.log("OptionsToken NOT available due to lack of configuration"); + } } const swapProps = { @@ -93,22 +103,29 @@ async function main() { console.log(`Exercise set to: ${exerciseAddress}`); } else{ - exercise = await ethers.getContractAt("DiscountExercise", config.DISCOUNT_EXERCISE); + try{ + exercise = await ethers.getContractAt("DiscountExercise", config.DISCOUNT_EXERCISE); + } + catch(error){ + console.log("DiscountExercise NOT available due to lack of configuration"); + } + } // OptionsCompounder let optionsCompounder; - + const strats = String(config.STRATS).split(","); if(contractsToDeploy.includes("OptionsCompounder")){ + const OptionsCompounder = await ethers.getContractFactory("OptionsCompounder"); // console.log("Proxy deployment: ", [optionsToken, addressProvider, swapper, swapProps, oracle]); - console.log("Proxy deployment: ", [await optionsToken.getAddress(), addressProvider, await swapper.getAddress(), swapProps, await oracle.getAddress()]); + console.log("Proxy deployment: ", [await optionsToken.getAddress(), addressProvider, await swapper.getAddress(), swapProps, await oracle.getAddress(), strats]); optionsCompounder = await upgrades.deployProxy( OptionsCompounder, - [await optionsToken.getAddress(), addressProvider, await swapper.getAddress(), swapProps, await oracle.getAddress()], + [await optionsToken.getAddress(), addressProvider, await swapper.getAddress(), swapProps, await oracle.getAddress(), strats], { kind: "uups", initializer: "initialize" } ); @@ -123,7 +140,13 @@ async function main() { console.log(`Implementation: ${await getImplementationAddress(ethers.provider, await optionsCompounder.getAddress())}`); } else{ - optionsCompounder = await ethers.getContractAt("OptionsCompounder", config.OPTIONS_COMPOUNDER); + try{ + optionsCompounder = await ethers.getContractAt("OptionsCompounder", config.OPTIONS_COMPOUNDER); + await optionsCompounder.setStrats(strats); + } + catch(error){ + console.log("OptionsCompounder NOT available due to lack of configuration"); + } } } diff --git a/scripts/config.json b/scripts/config.json index d2acad7..c6a6bc3 100644 --- a/scripts/config.json +++ b/scripts/config.json @@ -18,16 +18,15 @@ "FEE_BPS": [ 10000 ], + "STRATS": [ + "0xF29dA3595351dBFd0D647857C46F8D63Fc2e68C5" + ], "INSTANT_EXIT_FEE": 1000, "MIN_AMOUNT_TO_TRIGGER_SWAP": 1e15, - "CONTRACTS_TO_DEPLOY": [ - "OptionsToken", - "DiscountExercise", - "ThenaOracle" - ], + "CONTRACTS_TO_DEPLOY": [], "SWAPPER": "0x63D170618A8Ed1987F3CA6391b5e2F6a4554Cf53", - "DISCOUNT_EXERCISE": "undefined", - "OPTIONS_TOKEN": "undefined", - "OPTIONS_COMPOUNDER": "undefined", - "ORACLE": "undefined" + "DISCOUNT_EXERCISE": "0xcb727532e24dFe22E74D3892b998f5e915676Da8", + "OPTIONS_TOKEN": "0x3B6eA0fA8A487c90007ce120a83920fd52b06f6D", + "OPTIONS_COMPOUNDER": "0xf6cf2065C35595c12B532e54ACDe5A4597e32e6e", + "ORACLE": "0xDaA2c821428f62e1B08009a69CE824253CCEE5f9" } \ No newline at end of file diff --git a/test/ItBsc_OptionsCompounder.t copy.solNOT b/test/ItBsc_OptionsCompounder.t copy.solNOT deleted file mode 100644 index ed73482..0000000 --- a/test/ItBsc_OptionsCompounder.t copy.solNOT +++ /dev/null @@ -1,187 +0,0 @@ -// SPDX-License-Identifier: BUSL-1.1 - -pragma solidity ^0.8.13; - -import "./Common.sol"; - -import {BalancerOracle} from "../src/oracles/BalancerOracle.sol"; -import {MockBalancerTwapOracle} from "../test/mocks/MockBalancerTwapOracle.sol"; -import {CErc20I} from "./strategies/interfaces/CErc20I.sol"; -import {Helper} from "./mocks/HelperFunctions.sol"; -import {FixedPointMathLib} from "solmate/utils/FixedPointMathLib.sol"; -import {IAToken} from "./strategies/interfaces/IAToken.sol"; -import {IThenaRamRouter} from "vault-v2/interfaces/IThenaRamRouter.sol"; -import {ReaperStrategyGranary, Externals} from "./strategies/ReaperStrategyGranary.sol"; -import {OptionsCompounder} from "../src/OptionsCompounder.sol"; -import {MockedLendingPool} from "../test/mocks/MockedStrategy.sol"; - -contract OptionsTokenTest is Common { - using FixedPointMathLib for uint256; - - /* Variable assignment (depends on chain) */ - uint256 constant FORK_BLOCK = 36349190; - string MAINNET_URL = vm.envString("BSC_RPC_URL_MAINNET"); - - /* Contract variables */ - OptionsCompounder optionsCompounder; - ReaperStrategyGranary strategy; - Helper helper; - IOracle oracle; - - // string public vaultName = "?_? Vault"; - // string public vaultSymbol = "rf-?_?"; - // uint256 public vaultTvlCap = type(uint256).max; - // address public treasuryAddress = 0xC17DfA7Eb4300871D5f022c107E07F98c750472e; - - // address public optionsTokenAddress = - // 0x45c19a3068642B98F5AEf1dEdE023443cd1FbFAd; - // address public discountExerciseAddress = - // 0x3Fbf4f9cf73162e4e156972540f53Dabe65c2862; - // address public bscTokenAdmin = 0x6eB1fF8E939aFBF3086329B2b32725b72095512C; - - function setUp() public { - /* Common assignments */ - ExchangeType exchangeType = ExchangeType.ThenaRam; - nativeToken = IERC20(BSC_WBNB); - paymentToken = nativeToken; - underlyingToken = IERC20(BSC_HBR); - wantToken = IERC20(BSC_USDT); - thenaRamRouter = IThenaRamRouter(BSC_THENA_ROUTER); - swapRouter = ISwapRouter(BSC_PANCAKE_ROUTER); - univ3Factory = IUniswapV3Factory(BSC_PANCAKE_FACTORY); - addressProvider = BSC_ADDRESS_PROVIDER; - // gWantAddress = BSC_GUSDT; - // dataProvider = BSC_DATA_PROVIDER; - // rewarder = BSC_REWARDER; - - /* Setup network */ - uint256 bscFork = vm.createFork(MAINNET_URL, FORK_BLOCK); - vm.selectFork(bscFork); - - /* Setup accounts */ - fixture_setupAccountsAndFees(3000, 7000); - vm.deal(address(this), AMOUNT * 3); - vm.deal(owner, AMOUNT * 3); - - /* Setup roles */ - address[] memory strategists = new address[](1); - // address[] memory multisigRoles = new address[](3); - // address[] memory keepers = new address[](1); - strategists[0] = strategist; - // multisigRoles[0] = management1; - // multisigRoles[1] = management2; - // multisigRoles[2] = management3; - // keepers[0] = keeper; - - /* Variables */ - SwapProps memory swapProps = fixture_getSwapProps(exchangeType, 200); - - /** - * Contract deployments and configurations *** - */ - helper = new Helper(); - - /* Reaper deployment and configuration */ - reaperSwapper = new ReaperSwapper(); - tmpProxy = new ERC1967Proxy(address(reaperSwapper), ""); - reaperSwapper = ReaperSwapper(address(tmpProxy)); - reaperSwapper.initialize(strategists, address(this), address(this)); - - /* Configure swapper */ - fixture_updateSwapperPaths(exchangeType); - - /* Oracle mocks deployment */ - oracle = fixture_getMockedOracle(exchangeType); - - /* Option token deployment */ - vm.startPrank(owner); - optionsToken = new OptionsToken(); - tmpProxy = new ERC1967Proxy(address(optionsToken), ""); - optionsTokenProxy = OptionsToken(address(tmpProxy)); - optionsTokenProxy.initialize("TIT Call Option Token", "oTIT", tokenAdmin); - /* Exercise contract deployment */ - exerciser = new DiscountExercise(optionsTokenProxy, owner, paymentToken, underlyingToken, oracle, PRICE_MULTIPLIER, treasuries, feeBPS); - /* Add exerciser to the list of options */ - optionsTokenProxy.setExerciseContract(address(exerciser), true); - - /* Strategy deployment */ - strategy = new ReaperStrategyGranary(); - tmpProxy = new ERC1967Proxy(address(strategy), ""); - strategy = ReaperStrategyGranary(address(tmpProxy)); - optionsCompounder = new OptionsCompounder(); - tmpProxy = new ERC1967Proxy(address(optionsCompounder), ""); - optionsCompounder = OptionsCompounder(address(tmpProxy)); - MockedLendingPool addressProviderAndLendingPoolMock = new MockedLendingPool(address(optionsCompounder)); - optionsCompounder.initialize( - address(optionsTokenProxy), address(addressProviderAndLendingPoolMock), address(reaperSwapper), swapProps, oracle - ); - - // ReaperVaultV2 vault = new ReaperVaultV2( - // address(wantToken), - // vaultName, - // vaultSymbol, - // vaultTvlCap, - // treasuryAddress, - // strategists, - // multisigRoles - // ); - // Externals memory externals = Externals( - // address(vault), - // address(reaperSwapper), - // addressProvider, - // dataProvider, - // rewarder, - // address(optionsCompounder), - // address(exerciser) - // ); - // strategy.initialize( - // externals, - // strategists, - // multisigRoles, - // keepers, - // IAToken(gWantAddress), - // targetLtv, - // maxLtv - // ); - vm.stopPrank(); - - /* Prepare EOA and contracts for tests */ - helper.wrapEth{value: AMOUNT * 2}(address(nativeToken)); - - MinAmountOutData memory minAmountOutData = MinAmountOutData(MinAmountOutKind.Absolute, 0); - paymentToken.approve(address(reaperSwapper), AMOUNT); - reaperSwapper.swapThenaRam( - address(paymentToken), address(underlyingToken), AMOUNT, minAmountOutData, address(thenaRamRouter), type(uint256).max, false - ); - uint256 underlyingBalance = underlyingToken.balanceOf(address(this)); - paymentToken.transfer(address(addressProviderAndLendingPoolMock), paymentToken.balanceOf(address(this))); - underlyingToken.transfer(address(exerciser), underlyingBalance); - - /* Set up contracts */ - paymentToken.approve(address(exerciser), type(uint256).max); - } - - function test_bscFlashloanPositiveScenario(uint256 amount) public { - /* Test vectors definition */ - amount = bound(amount, MIN_OATH_FOR_FUZZING, underlyingToken.balanceOf(address(exerciser))); - uint256 minAmount = 5; - - /* Prepare option tokens - distribute them to the specified strategy - and approve for spending */ - fixture_prepareOptionToken(amount, address(optionsCompounder), address(this), optionsTokenProxy, tokenAdmin); - - /* Check balances before compounding */ - uint256 paymentTokenBalance = paymentToken.balanceOf(address(optionsCompounder)); - - // vm.startPrank(address(strategy)); - /* already approved in fixture_prepareOptionToken */ - // uint256 _balance = optionsTokenProxy.balanceOf(address(optionsCompounder)); - optionsCompounder.harvestOTokens(amount, address(exerciser), minAmount); - // vm.stopPrank(); - - /* Assertions */ - assertGt(paymentToken.balanceOf(address(this)), paymentTokenBalance + minAmount, "Gain not greater than 0"); - assertEq(optionsTokenProxy.balanceOf(address(optionsCompounder)), 0, "Options token balance in compounder is 0"); - assertEq(paymentToken.balanceOf(address(optionsCompounder)), 0, "Payment token balance in compounder is 0"); - } -} From a71d00b21b1610499080fe704bc8cdcc4c440b62 Mon Sep 17 00:00:00 2001 From: xRave110 Date: Mon, 29 Jul 2024 10:46:47 +0200 Subject: [PATCH 64/64] OptionsCompounder --- src/OptionsCompounder.sol | 18 ++---------------- test/ItMode_OptionsCompounder.t.sol | 2 +- 2 files changed, 3 insertions(+), 17 deletions(-) diff --git a/src/OptionsCompounder.sol b/src/OptionsCompounder.sol index 51592aa..0ef67c0 100644 --- a/src/OptionsCompounder.sol +++ b/src/OptionsCompounder.sol @@ -50,7 +50,6 @@ contract OptionsCompounder is IFlashLoanReceiver, OwnableUpgradeable, UUPSUpgrad uint256 public constant FUTURE_NEXT_PROPOSAL_TIME = 365 days * 100; /* Storages */ - address public swapper; ILendingPoolAddressesProvider private addressProvider; ILendingPool private lendingPool; bool private flashloanFinished; @@ -84,7 +83,6 @@ contract OptionsCompounder is IFlashLoanReceiver, OwnableUpgradeable, UUPSUpgrad function initialize( address _optionsToken, address _addressProvider, - address _swapper, SwapProps memory _swapProps, IOracle _oracle, address[] memory _strats @@ -93,7 +91,6 @@ contract OptionsCompounder is IFlashLoanReceiver, OwnableUpgradeable, UUPSUpgrad _setOptionsToken(_optionsToken); _setSwapProps(_swapProps); _setOracle(_oracle); - _setSwapper(_swapper); _setStrats(_strats); flashloanFinished = true; _setAddressProvider(_addressProvider); @@ -135,17 +132,6 @@ contract OptionsCompounder is IFlashLoanReceiver, OwnableUpgradeable, UUPSUpgrad oracle = _oracle; } - function setSwapper(address _swapper) external onlyOwner { - _setSwapper(_swapper); - } - - function _setSwapper(address _swapper) internal { - if (_swapper == address(0)) { - revert OptionsCompounder__ParamHasAddressZero(); - } - swapper = _swapper; - } - function setAddressProvider(address _addressProvider) external onlyOwner { _setAddressProvider(_addressProvider); } @@ -325,7 +311,7 @@ contract OptionsCompounder is IFlashLoanReceiver, OwnableUpgradeable, UUPSUpgrad minAmountOut = _getMinAmountOutData(balanceOfUnderlyingToken, swapProps.maxSwapSlippage, address(oracle)); /* Approve the underlying token to make swap */ - underlyingToken.approve(swapper, balanceOfUnderlyingToken); + underlyingToken.approve(swapProps.swapper, balanceOfUnderlyingToken); /* Swap underlying token to payment token (asset) */ swapAmountOut = _generalSwap( @@ -337,7 +323,7 @@ contract OptionsCompounder is IFlashLoanReceiver, OwnableUpgradeable, UUPSUpgrad } /* Approve the underlying token to 0 for safety */ - underlyingToken.approve(swapper, 0); + underlyingToken.approve(swapProps.swapper, 0); } /* Calculate profit and revert if it is not profitable */ diff --git a/test/ItMode_OptionsCompounder.t.sol b/test/ItMode_OptionsCompounder.t.sol index d86339a..2d67930 100644 --- a/test/ItMode_OptionsCompounder.t.sol +++ b/test/ItMode_OptionsCompounder.t.sol @@ -103,7 +103,7 @@ contract ItModeOptionsCompounder is Common { tmpProxy = new ERC1967Proxy(address(optionsCompounder), ""); optionsCompounder = OptionsCompounder(address(tmpProxy)); console.log("Initializing..."); - optionsCompounder.initialize(address(optionsTokenProxy), address(addressProvider), address(reaperSwapper), swapProps, oracle, strategies); + optionsCompounder.initialize(address(optionsTokenProxy), address(addressProvider), swapProps, oracle, strategies); vm.stopPrank();