.tools/venv/lib/python3.9/site-packages/urllib3/__init__.py:35: NotOpenSSLWarning: urllib3 v2 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020
  warnings.warn(
'solc --version' running
'solc @openzeppelin/contracts/=node_modules/@openzeppelin/contracts/ @openzeppelin/=node_modules/@openzeppelin/ @uniswap/v4-core/=node_modules/@uniswap/v4-core/ @uniswap/=node_modules/@uniswap/ src/BuybackBurner.sol --combined-json abi,ast,bin,bin-runtime,srcmap,srcmap-runtime,userdoc,devdoc,hashes --via-ir --optimize --optimize-runs 200 --evm-version cancun --allow-paths .,BuybackBurner/src' running
Compilation warnings/errors on src/BuybackBurner.sol:
.tools/venv/lib/python3.9/site-packages/urllib3/__init__.py:35: NotOpenSSLWarning: urllib3 v2 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020
  warnings.warn(
Warning: Transient storage as defined by EIP-1153 can break the composability of smart contracts: Since transient storage is cleared only at the end of the transaction and not at the end of the outermost call frame to the contract within a transaction, your contract may unintentionally misbehave when invoked multiple times in a complex transaction. To avoid this, be sure to clear all transient storage at the end of any call to your contract. The use of transient storage for reentrancy guards that are cleared at the end of the call is safe.
   --> node_modules/@openzeppelin/contracts/utils/TransientSlot.sol:108:13:
    |
108 |             tstore(slot, value)
    |             ^^^^^^



Detector: divide-before-multiply
BuybackBurner.buyAndBurn(uint256,uint256,uint256) (src/BuybackBurner.sol#73-107) performs a multiplication on the result of a division:
	- floor = wethIn * lastPrice / 1e18 * (Constants.BPS - maxSlippageBps) / Constants.BPS (src/BuybackBurner.sol#91)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#divide-before-multiply

Detector: reentrancy-no-eth
Reentrancy in BuybackBurner.buyAndBurn(uint256,uint256,uint256) (src/BuybackBurner.sol#73-107):
	External calls:
	- a.swapWethForToken(wethIn,minTokenOut,deadline) (src/BuybackBurner.sol#97)
	State variables written after the call(s):
	- lastPrice = burned * 1e18 / wethIn (src/BuybackBurner.sol#102)
	BuybackBurner.lastPrice (src/BuybackBurner.sol#35) can be used in cross function reentrancies:
	- BuybackBurner.lastPrice (src/BuybackBurner.sol#35)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-1

Detector: unused-return
BuybackBurner.buyAndBurn(uint256,uint256,uint256) (src/BuybackBurner.sol#73-107) ignores return value by a.swapWethForToken(wethIn,minTokenOut,deadline) (src/BuybackBurner.sol#97)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unused-return

Detector: missing-zero-check
BuybackBurner.constructor(IERC20,IERC20,address,address,address).keeper_ (src/BuybackBurner.sol#40) lacks a zero-check on :
		- keeper = keeper_ (src/BuybackBurner.sol#46)
BuybackBurner.setKeeper(address).keeper_ (src/BuybackBurner.sol#52) lacks a zero-check on :
		- keeper = keeper_ (src/BuybackBurner.sol#54)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation

Detector: reentrancy-benign
Reentrancy in BuybackBurner.buyAndBurn(uint256,uint256,uint256) (src/BuybackBurner.sol#73-107):
	External calls:
	- a.swapWethForToken(wethIn,minTokenOut,deadline) (src/BuybackBurner.sol#97)
	State variables written after the call(s):
	- totalBurned += burned (src/BuybackBurner.sol#104)
	- totalWethIn += wethIn (src/BuybackBurner.sol#103)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-2

Detector: assembly
SafeERC20._safeTransfer(IERC20,address,uint256,bool) (node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol#176-200) uses assembly
	- INLINE ASM (node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol#179-199)
SafeERC20._safeTransferFrom(IERC20,address,address,uint256,bool) (node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol#212-244) uses assembly
	- INLINE ASM (node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol#221-243)
SafeERC20._safeApprove(IERC20,address,uint256,bool) (node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol#255-279) uses assembly
	- INLINE ASM (node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol#258-278)
TransientSlot.tload(TransientSlot.AddressSlot) (node_modules/@openzeppelin/contracts/utils/TransientSlot.sol#97-101) uses assembly
	- INLINE ASM (node_modules/@openzeppelin/contracts/utils/TransientSlot.sol#98-100)
TransientSlot.tstore(TransientSlot.AddressSlot,address) (node_modules/@openzeppelin/contracts/utils/TransientSlot.sol#106-110) uses assembly
	- INLINE ASM (node_modules/@openzeppelin/contracts/utils/TransientSlot.sol#107-109)
TransientSlot.tload(TransientSlot.BooleanSlot) (node_modules/@openzeppelin/contracts/utils/TransientSlot.sol#115-119) uses assembly
	- INLINE ASM (node_modules/@openzeppelin/contracts/utils/TransientSlot.sol#116-118)
TransientSlot.tstore(TransientSlot.BooleanSlot,bool) (node_modules/@openzeppelin/contracts/utils/TransientSlot.sol#124-128) uses assembly
	- INLINE ASM (node_modules/@openzeppelin/contracts/utils/TransientSlot.sol#125-127)
TransientSlot.tload(TransientSlot.Bytes32Slot) (node_modules/@openzeppelin/contracts/utils/TransientSlot.sol#133-137) uses assembly
	- INLINE ASM (node_modules/@openzeppelin/contracts/utils/TransientSlot.sol#134-136)
TransientSlot.tstore(TransientSlot.Bytes32Slot,bytes32) (node_modules/@openzeppelin/contracts/utils/TransientSlot.sol#142-146) uses assembly
	- INLINE ASM (node_modules/@openzeppelin/contracts/utils/TransientSlot.sol#143-145)
TransientSlot.tload(TransientSlot.Uint256Slot) (node_modules/@openzeppelin/contracts/utils/TransientSlot.sol#151-155) uses assembly
	- INLINE ASM (node_modules/@openzeppelin/contracts/utils/TransientSlot.sol#152-154)
TransientSlot.tstore(TransientSlot.Uint256Slot,uint256) (node_modules/@openzeppelin/contracts/utils/TransientSlot.sol#160-164) uses assembly
	- INLINE ASM (node_modules/@openzeppelin/contracts/utils/TransientSlot.sol#161-163)
TransientSlot.tload(TransientSlot.Int256Slot) (node_modules/@openzeppelin/contracts/utils/TransientSlot.sol#169-173) uses assembly
	- INLINE ASM (node_modules/@openzeppelin/contracts/utils/TransientSlot.sol#170-172)
TransientSlot.tstore(TransientSlot.Int256Slot,int256) (node_modules/@openzeppelin/contracts/utils/TransientSlot.sol#178-182) uses assembly
	- INLINE ASM (node_modules/@openzeppelin/contracts/utils/TransientSlot.sol#179-181)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage

Detector: pragma
5 different versions of Solidity are used:
	- Version constraint >=0.6.2 is used by:
		->=0.6.2 (node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol#4)
	- Version constraint >=0.4.16 is used by:
		->=0.4.16 (node_modules/@openzeppelin/contracts/interfaces/IERC165.sol#4)
		->=0.4.16 (node_modules/@openzeppelin/contracts/interfaces/IERC20.sol#4)
		->=0.4.16 (node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol#4)
		->=0.4.16 (node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol#4)
	- Version constraint ^0.8.20 is used by:
		-^0.8.20 (node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol#4)
	- Version constraint ^0.8.24 is used by:
		-^0.8.24 (node_modules/@openzeppelin/contracts/utils/ReentrancyGuardTransient.sol#4)
		-^0.8.24 (node_modules/@openzeppelin/contracts/utils/TransientSlot.sol#5)
	- Version constraint 0.8.28 is used by:
		-0.8.28 (src/BuybackBurner.sol#2)
		-0.8.28 (src/interfaces/ISwapAdapter.sol#2)
		-0.8.28 (src/lib/Constants.sol#2)
		-0.8.28 (src/lib/Errors.sol#2)
		-0.8.28 (src/lib/Events.sol#2)
		-0.8.28 (src/lib/Governed.sol#2)
		-0.8.28 (src/lib/Types.sol#2)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#different-pragma-directives-are-used

Detector: solc-version
Version constraint >=0.6.2 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
	- MissingSideEffectsOnSelectorAccess
	- AbiReencodingHeadOverflowWithStaticArrayCleanup
	- DirtyBytesArrayToStorage
	- NestedCalldataArrayAbiReencodingSizeValidation
	- ABIDecodeTwoDimensionalArrayMemory
	- KeccakCaching
	- EmptyByteArrayCopy
	- DynamicArrayCleanup
	- MissingEscapingInFormatting
	- ArraySliceDynamicallyEncodedBaseType
	- ImplicitConstructorCallvalueCheck
	- TupleAssignmentMultiStackSlotComponents
	- MemoryArrayCreationOverflow.
It is used by:
	- >=0.6.2 (node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol#4)
Version constraint >=0.4.16 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
	- DirtyBytesArrayToStorage
	- ABIDecodeTwoDimensionalArrayMemory
	- KeccakCaching
	- EmptyByteArrayCopy
	- DynamicArrayCleanup
	- ImplicitConstructorCallvalueCheck
	- TupleAssignmentMultiStackSlotComponents
	- MemoryArrayCreationOverflow
	- privateCanBeOverridden
	- SignedArrayStorageCopy
	- ABIEncoderV2StorageArrayWithMultiSlotElement
	- DynamicConstructorArgumentsClippedABIV2
	- UninitializedFunctionPointerInConstructor_0.4.x
	- IncorrectEventSignatureInLibraries_0.4.x
	- ExpExponentCleanup
	- NestedArrayFunctionCallDecoder
	- ZeroFunctionSelector.
It is used by:
	- >=0.4.16 (node_modules/@openzeppelin/contracts/interfaces/IERC165.sol#4)
	- >=0.4.16 (node_modules/@openzeppelin/contracts/interfaces/IERC20.sol#4)
	- >=0.4.16 (node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol#4)
	- >=0.4.16 (node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol#4)
Version constraint ^0.8.20 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
	- VerbatimInvalidDeduplication
	- FullInlinerNonExpressionSplitArgumentEvaluationOrder
	- MissingSideEffectsOnSelectorAccess.
It is used by:
	- ^0.8.20 (node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol#4)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-versions-of-solidity
src/BuybackBurner.sol analyzed (13 contracts with 100 detectors), 23 result(s) found
