.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/adapters/UniswapV4Adapter.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 .,UniswapV4Adapter/src/adapters' running
Compilation warnings/errors on src/adapters/UniswapV4Adapter.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(


Detector: weak-prng
KyteHook.consult(PoolId,uint32) (src/hooks/KyteHook.sol#166-192) uses a weak PRNG: "delta < 0 && delta % int56(span) != 0 (src/hooks/KyteHook.sol#191)" 
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#weak-PRNG

Detector: incorrect-exp
FullMath.mulDiv(uint256,uint256,uint256) (node_modules/@uniswap/v4-core/src/libraries/FullMath.sol#14-102) has bitwise-xor operator ^ instead of the exponentiation operator **: 
	 - inv = (3 * denominator) ^ 2 (node_modules/@uniswap/v4-core/src/libraries/FullMath.sol#82)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-exponentiation

Detector: incorrect-shift
BitMath.mostSignificantBit(uint256) (node_modules/@uniswap/v4-core/src/libraries/BitMath.sol#12-25) contains an incorrect shift operation: r = r | byte(uint256,uint256)(0x1f & 0x8421084210842108cc6318c6db6d54be >> x >> r,0x0706060506020500060203020504000106050205030304010505030400000000) (node_modules/@uniswap/v4-core/src/libraries/BitMath.sol#22-23)
BitMath.leastSignificantBit(uint256) (node_modules/@uniswap/v4-core/src/libraries/BitMath.sol#31-48) contains an incorrect shift operation: r = 0x8040405543005266443200005020610674053026020000107506200176117077 << x * 0xb6db6db6ddddddddd34d34d349249249210842108c6318c639ce739cffffffff >> 250 << 2 >> 252 << 5 (node_modules/@uniswap/v4-core/src/libraries/BitMath.sol#40-42)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-shift-in-assembly

Detector: uninitialized-state
KyteHook.observations (src/hooks/KyteHook.sol#64) is never initialized. It is used in:
	- KyteHook.consult(PoolId,uint32) (src/hooks/KyteHook.sol#166-192)
	- KyteHook.observationAt(PoolId,uint16) (src/hooks/KyteHook.sol#199-201)
	- KyteHook._write(PoolId,int24) (src/hooks/KyteHook.sol#203-222)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-state-variables

Detector: divide-before-multiply
CustomRevert.bubbleUpAndRevertWith(address,bytes4,bytes4) (node_modules/@uniswap/v4-core/src/libraries/CustomRevert.sol#83-119) performs a multiplication on the result of a division:
	- encodedDataSize_bubbleUpAndRevertWith_asm_0 = returndatasize()() + 31 / 32 * 32 (node_modules/@uniswap/v4-core/src/libraries/CustomRevert.sol#91)
FullMath.mulDiv(uint256,uint256,uint256) (node_modules/@uniswap/v4-core/src/libraries/FullMath.sol#14-102) performs a multiplication on the result of a division:
	- denominator = denominator / twos (node_modules/@uniswap/v4-core/src/libraries/FullMath.sol#62)
	- inv = (3 * denominator) ^ 2 (node_modules/@uniswap/v4-core/src/libraries/FullMath.sol#82)
FullMath.mulDiv(uint256,uint256,uint256) (node_modules/@uniswap/v4-core/src/libraries/FullMath.sol#14-102) performs a multiplication on the result of a division:
	- denominator = denominator / twos (node_modules/@uniswap/v4-core/src/libraries/FullMath.sol#62)
	- inv *= 2 - denominator * inv (node_modules/@uniswap/v4-core/src/libraries/FullMath.sol#86)
FullMath.mulDiv(uint256,uint256,uint256) (node_modules/@uniswap/v4-core/src/libraries/FullMath.sol#14-102) performs a multiplication on the result of a division:
	- denominator = denominator / twos (node_modules/@uniswap/v4-core/src/libraries/FullMath.sol#62)
	- inv *= 2 - denominator * inv (node_modules/@uniswap/v4-core/src/libraries/FullMath.sol#87)
FullMath.mulDiv(uint256,uint256,uint256) (node_modules/@uniswap/v4-core/src/libraries/FullMath.sol#14-102) performs a multiplication on the result of a division:
	- denominator = denominator / twos (node_modules/@uniswap/v4-core/src/libraries/FullMath.sol#62)
	- inv *= 2 - denominator * inv (node_modules/@uniswap/v4-core/src/libraries/FullMath.sol#88)
FullMath.mulDiv(uint256,uint256,uint256) (node_modules/@uniswap/v4-core/src/libraries/FullMath.sol#14-102) performs a multiplication on the result of a division:
	- denominator = denominator / twos (node_modules/@uniswap/v4-core/src/libraries/FullMath.sol#62)
	- inv *= 2 - denominator * inv (node_modules/@uniswap/v4-core/src/libraries/FullMath.sol#89)
FullMath.mulDiv(uint256,uint256,uint256) (node_modules/@uniswap/v4-core/src/libraries/FullMath.sol#14-102) performs a multiplication on the result of a division:
	- denominator = denominator / twos (node_modules/@uniswap/v4-core/src/libraries/FullMath.sol#62)
	- inv *= 2 - denominator * inv (node_modules/@uniswap/v4-core/src/libraries/FullMath.sol#90)
FullMath.mulDiv(uint256,uint256,uint256) (node_modules/@uniswap/v4-core/src/libraries/FullMath.sol#14-102) performs a multiplication on the result of a division:
	- denominator = denominator / twos (node_modules/@uniswap/v4-core/src/libraries/FullMath.sol#62)
	- inv *= 2 - denominator * inv (node_modules/@uniswap/v4-core/src/libraries/FullMath.sol#91)
FullMath.mulDiv(uint256,uint256,uint256) (node_modules/@uniswap/v4-core/src/libraries/FullMath.sol#14-102) performs a multiplication on the result of a division:
	- prod0 = prod0 / twos (node_modules/@uniswap/v4-core/src/libraries/FullMath.sol#67)
	- result = prod0 * inv (node_modules/@uniswap/v4-core/src/libraries/FullMath.sol#99)
TickMath.maxUsableTick(int24) (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#39-43) performs a multiplication on the result of a division:
	- (MAX_TICK / tickSpacing) * tickSpacing (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#41)
TickMath.minUsableTick(int24) (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#46-50) performs a multiplication on the result of a division:
	- (MIN_TICK / tickSpacing) * tickSpacing (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#48)
TickMath.getSqrtPriceAtTick(int24) (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#57-114) performs a multiplication on the result of a division:
	- price = (price * 0x48a170391f7dc42444e8fa2) >> 128 (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#100)
	- price = ~ 0 / price (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#104)
TickMath.getSqrtPriceAtTick(int24) (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#57-114) performs a multiplication on the result of a division:
	- price = (price * 0x2216e584f5fa1ea926041bedfe98) >> 128 (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#99)
	- price = ~ 0 / price (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#104)
TickMath.getSqrtPriceAtTick(int24) (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#57-114) performs a multiplication on the result of a division:
	- price = (price * 0x5d6af8dedb81196699c329225ee604) >> 128 (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#98)
	- price = ~ 0 / price (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#104)
TickMath.getSqrtPriceAtTick(int24) (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#57-114) performs a multiplication on the result of a division:
	- price = (price * 0x9aa508b5b7a84e1c677de54f3e99bc9) >> 128 (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#97)
	- price = ~ 0 / price (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#104)
TickMath.getSqrtPriceAtTick(int24) (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#57-114) performs a multiplication on the result of a division:
	- price = (price * 0x31be135f97d08fd981231505542fcfa6) >> 128 (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#96)
	- price = ~ 0 / price (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#104)
TickMath.getSqrtPriceAtTick(int24) (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#57-114) performs a multiplication on the result of a division:
	- price = (price * 0x70d869a156d2a1b890bb3df62baf32f7) >> 128 (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#95)
	- price = ~ 0 / price (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#104)
TickMath.getSqrtPriceAtTick(int24) (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#57-114) performs a multiplication on the result of a division:
	- price = (price * 0xa9f746462d870fdf8a65dc1f90e061e5) >> 128 (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#94)
	- price = ~ 0 / price (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#104)
TickMath.getSqrtPriceAtTick(int24) (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#57-114) performs a multiplication on the result of a division:
	- price = (price * 0xd097f3bdfd2022b8845ad8f792aa5825) >> 128 (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#93)
	- price = ~ 0 / price (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#104)
TickMath.getSqrtPriceAtTick(int24) (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#57-114) performs a multiplication on the result of a division:
	- price = (price * 0xe7159475a2c29b7443b29c7fa6e889d9) >> 128 (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#92)
	- price = ~ 0 / price (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#104)
TickMath.getSqrtPriceAtTick(int24) (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#57-114) performs a multiplication on the result of a division:
	- price = (price * 0xf3392b0822b70005940c7a398e4b70f3) >> 128 (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#91)
	- price = ~ 0 / price (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#104)
TickMath.getSqrtPriceAtTick(int24) (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#57-114) performs a multiplication on the result of a division:
	- price = (price * 0xf987a7253ac413176f2b074cf7815e54) >> 128 (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#90)
	- price = ~ 0 / price (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#104)
TickMath.getSqrtPriceAtTick(int24) (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#57-114) performs a multiplication on the result of a division:
	- price = (price * 0xfcbe86c7900a88aedcffc83b479aa3a4) >> 128 (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#89)
	- price = ~ 0 / price (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#104)
TickMath.getSqrtPriceAtTick(int24) (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#57-114) performs a multiplication on the result of a division:
	- price = (price * 0xfe5dee046a99a2a811c461f1969c3053) >> 128 (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#88)
	- price = ~ 0 / price (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#104)
TickMath.getSqrtPriceAtTick(int24) (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#57-114) performs a multiplication on the result of a division:
	- price = (price * 0xff2ea16466c96a3843ec78b326b52861) >> 128 (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#87)
	- price = ~ 0 / price (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#104)
TickMath.getSqrtPriceAtTick(int24) (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#57-114) performs a multiplication on the result of a division:
	- price = (price * 0xff973b41fa98c081472e6896dfb254c0) >> 128 (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#86)
	- price = ~ 0 / price (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#104)
TickMath.getSqrtPriceAtTick(int24) (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#57-114) performs a multiplication on the result of a division:
	- price = (price * 0xffcb9843d60f6159c9db58835c926644) >> 128 (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#85)
	- price = ~ 0 / price (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#104)
TickMath.getSqrtPriceAtTick(int24) (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#57-114) performs a multiplication on the result of a division:
	- price = (price * 0xffe5caca7e10e4e61c3624eaa0941cd0) >> 128 (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#84)
	- price = ~ 0 / price (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#104)
TickMath.getSqrtPriceAtTick(int24) (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#57-114) performs a multiplication on the result of a division:
	- price = (price * 0xfff2e50f5f656932ef12357cf3c7fdcc) >> 128 (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#83)
	- price = ~ 0 / price (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#104)
TickMath.getSqrtPriceAtTick(int24) (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#57-114) performs a multiplication on the result of a division:
	- price = (price * 0xfff97272373d413259a46990580e213a) >> 128 (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#82)
	- price = ~ 0 / price (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#104)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#divide-before-multiply

Detector: incorrect-equality
KyteHook._write(PoolId,int24) (src/hooks/KyteHook.sol#203-222) uses a dangerous strict equality:
	- last.blockTimestamp == ts (src/hooks/KyteHook.sol#213)
KyteHook.consult(PoolId,uint32) (src/hooks/KyteHook.sol#166-192) uses a dangerous strict equality:
	- secondsAgo == 0 || nowTs == last.blockTimestamp && o.count == 1 (src/hooks/KyteHook.sol#172)
KyteHook.consult(PoolId,uint32) (src/hooks/KyteHook.sol#166-192) uses a dangerous strict equality:
	- nowTs == target (src/hooks/KyteHook.sol#184)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-strict-equalities

Detector: uninitialized-local
Hooks.afterSwap(IHooks,PoolKey,SwapParams,BalanceDelta,bytes,BeforeSwapDelta).hookDelta (node_modules/@uniswap/v4-core/src/libraries/Hooks.sol#305) is a local variable never initialized
KyteHook.afterSwap(address,PoolKey,SwapParams,BalanceDelta,bytes).feeAmount (src/hooks/KyteHook.sol#146) is a local variable never initialized
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-local-variables

Detector: unused-return
Hooks.beforeInitialize(IHooks,PoolKey,uint160) (node_modules/@uniswap/v4-core/src/libraries/Hooks.sol#178-182) ignores return value by self.callHook(abi.encodeCall(IHooks.beforeInitialize,(msg.sender,key,sqrtPriceX96))) (node_modules/@uniswap/v4-core/src/libraries/Hooks.sol#180)
Hooks.afterInitialize(IHooks,PoolKey,uint160,int24) (node_modules/@uniswap/v4-core/src/libraries/Hooks.sol#185-192) ignores return value by self.callHook(abi.encodeCall(IHooks.afterInitialize,(msg.sender,key,sqrtPriceX96,tick))) (node_modules/@uniswap/v4-core/src/libraries/Hooks.sol#190)
Hooks.beforeModifyLiquidity(IHooks,PoolKey,ModifyLiquidityParams,bytes) (node_modules/@uniswap/v4-core/src/libraries/Hooks.sol#195-206) ignores return value by self.callHook(abi.encodeCall(IHooks.beforeAddLiquidity,(msg.sender,key,params,hookData))) (node_modules/@uniswap/v4-core/src/libraries/Hooks.sol#202)
Hooks.beforeModifyLiquidity(IHooks,PoolKey,ModifyLiquidityParams,bytes) (node_modules/@uniswap/v4-core/src/libraries/Hooks.sol#195-206) ignores return value by self.callHook(abi.encodeCall(IHooks.beforeRemoveLiquidity,(msg.sender,key,params,hookData))) (node_modules/@uniswap/v4-core/src/libraries/Hooks.sol#204)
Hooks.beforeDonate(IHooks,PoolKey,uint256,uint256,bytes) (node_modules/@uniswap/v4-core/src/libraries/Hooks.sol#318-325) ignores return value by self.callHook(abi.encodeCall(IHooks.beforeDonate,(msg.sender,key,amount0,amount1,hookData))) (node_modules/@uniswap/v4-core/src/libraries/Hooks.sol#323)
Hooks.afterDonate(IHooks,PoolKey,uint256,uint256,bytes) (node_modules/@uniswap/v4-core/src/libraries/Hooks.sol#328-335) ignores return value by self.callHook(abi.encodeCall(IHooks.afterDonate,(msg.sender,key,amount0,amount1,hookData))) (node_modules/@uniswap/v4-core/src/libraries/Hooks.sol#333)
UniswapV4Adapter.quoteSpot(uint256) (src/adapters/UniswapV4Adapter.sol#85-88) ignores return value by (sqrtPriceX96,None,None,None) = poolManager.getSlot0(_key.toId()) (src/adapters/UniswapV4Adapter.sol#86)
UniswapV4Adapter.unlockCallback(bytes) (src/adapters/UniswapV4Adapter.sol#98-127) ignores return value by poolManager.settle() (src/adapters/UniswapV4Adapter.sol#122)
KyteHook.afterSwap(address,PoolKey,SwapParams,BalanceDelta,bytes) (src/hooks/KyteHook.sol#137-161) ignores return value by (None,tick,None,None) = poolManager.getSlot0(id) (src/hooks/KyteHook.sol#143)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unused-return

Detector: missing-zero-check
KyteHook.constructor(IPoolManager,address,address,uint256,Currency).feeVault_ (src/hooks/KyteHook.sol#70) lacks a zero-check on :
		- feeVault = feeVault_ (src/hooks/KyteHook.sol#78)
KyteHook.setFeeVault(address).feeVault_ (src/hooks/KyteHook.sol#121) lacks a zero-check on :
		- feeVault = feeVault_ (src/hooks/KyteHook.sol#123)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation

Detector: incorrect-modifier
Modifier Hooks.noSelfCall(IHooks) (node_modules/@uniswap/v4-core/src/libraries/Hooks.sol#171-175) does not always execute _; or revert
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-modifier

Detector: reentrancy-events
Reentrancy in KyteHook.afterSwap(address,PoolKey,SwapParams,BalanceDelta,bytes) (src/hooks/KyteHook.sol#137-161):
	External calls:
	- poolManager.take(feeCurrency,feeVault,feeAmount) (src/hooks/KyteHook.sol#156)
	Event emitted after the call(s):
	- HookFee(id,feeCurrency,feeAmount) (src/hooks/KyteHook.sol#157)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3

Detector: timestamp
UniswapV4Adapter.swapWethForToken(uint256,uint256,uint256) (src/adapters/UniswapV4Adapter.sol#68-73) uses timestamp for comparisons
	Dangerous comparisons:
	- block.timestamp > deadline (src/adapters/UniswapV4Adapter.sol#69)
KyteHook.consult(PoolId,uint32) (src/hooks/KyteHook.sol#166-192) uses timestamp for comparisons
	Dangerous comparisons:
	- secondsAgo == 0 || nowTs == last.blockTimestamp && o.count == 1 (src/hooks/KyteHook.sol#172)
	- ob.blockTimestamp <= target (src/hooks/KyteHook.sol#181)
	- at.blockTimestamp > target (src/hooks/KyteHook.sol#183)
	- nowTs == target (src/hooks/KyteHook.sol#184)
	- delta < 0 && delta % int56(span) != 0 (src/hooks/KyteHook.sol#191)
	- nowTs > secondsAgo (src/hooks/KyteHook.sol#174)
KyteHook._write(PoolId,int24) (src/hooks/KyteHook.sol#203-222) uses timestamp for comparisons
	Dangerous comparisons:
	- last.blockTimestamp == ts (src/hooks/KyteHook.sol#213)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#block-timestamp

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)
BitMath.mostSignificantBit(uint256) (node_modules/@uniswap/v4-core/src/libraries/BitMath.sol#12-25) uses assembly
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/BitMath.sol#15-24)
BitMath.leastSignificantBit(uint256) (node_modules/@uniswap/v4-core/src/libraries/BitMath.sol#31-48) uses assembly
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/BitMath.sol#34-47)
CustomRevert.revertWith(bytes4) (node_modules/@uniswap/v4-core/src/libraries/CustomRevert.sol#14-19) uses assembly
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/CustomRevert.sol#15-18)
CustomRevert.revertWith(bytes4,address) (node_modules/@uniswap/v4-core/src/libraries/CustomRevert.sol#22-28) uses assembly
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/CustomRevert.sol#23-27)
CustomRevert.revertWith(bytes4,int24) (node_modules/@uniswap/v4-core/src/libraries/CustomRevert.sol#31-37) uses assembly
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/CustomRevert.sol#32-36)
CustomRevert.revertWith(bytes4,uint160) (node_modules/@uniswap/v4-core/src/libraries/CustomRevert.sol#40-46) uses assembly
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/CustomRevert.sol#41-45)
CustomRevert.revertWith(bytes4,int24,int24) (node_modules/@uniswap/v4-core/src/libraries/CustomRevert.sol#49-57) uses assembly
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/CustomRevert.sol#50-56)
CustomRevert.revertWith(bytes4,uint160,uint160) (node_modules/@uniswap/v4-core/src/libraries/CustomRevert.sol#60-68) uses assembly
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/CustomRevert.sol#61-67)
CustomRevert.revertWith(bytes4,address,address) (node_modules/@uniswap/v4-core/src/libraries/CustomRevert.sol#71-79) uses assembly
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/CustomRevert.sol#72-78)
CustomRevert.bubbleUpAndRevertWith(address,bytes4,bytes4) (node_modules/@uniswap/v4-core/src/libraries/CustomRevert.sol#83-119) uses assembly
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/CustomRevert.sol#89-118)
FullMath.mulDiv(uint256,uint256,uint256) (node_modules/@uniswap/v4-core/src/libraries/FullMath.sol#14-102) uses assembly
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/FullMath.sol#23-26)
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/FullMath.sol#34-36)
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/FullMath.sol#47-49)
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/FullMath.sol#51-54)
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/FullMath.sol#61-63)
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/FullMath.sol#66-68)
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/FullMath.sol#72-74)
Hooks.callHook(IHooks,bytes) (node_modules/@uniswap/v4-core/src/libraries/Hooks.sol#131-155) uses assembly
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/Hooks.sol#133-135)
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/Hooks.sol#140-149)
LiquidityMath.addDelta(uint128,int128) (node_modules/@uniswap/v4-core/src/libraries/LiquidityMath.sol#10-19) uses assembly
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/LiquidityMath.sol#11-18)
ParseBytes.parseSelector(bytes) (node_modules/@uniswap/v4-core/src/libraries/ParseBytes.sol#9-14) uses assembly
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/ParseBytes.sol#11-13)
ParseBytes.parseFee(bytes) (node_modules/@uniswap/v4-core/src/libraries/ParseBytes.sol#16-21) uses assembly
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/ParseBytes.sol#18-20)
ParseBytes.parseReturnDelta(bytes) (node_modules/@uniswap/v4-core/src/libraries/ParseBytes.sol#23-28) uses assembly
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/ParseBytes.sol#25-27)
Position.calculatePositionKey(address,int24,int24,bytes32) (node_modules/@uniswap/v4-core/src/libraries/Position.sol#48-67) uses assembly
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/Position.sol#54-66)
StateLibrary.getSlot0(IPoolManager,PoolId) (node_modules/@uniswap/v4-core/src/libraries/StateLibrary.sol#40-63) uses assembly
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/StateLibrary.sol#53-62)
StateLibrary.getTickInfo(IPoolManager,PoolId,int24) (node_modules/@uniswap/v4-core/src/libraries/StateLibrary.sol#76-97) uses assembly
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/StateLibrary.sol#90-96)
StateLibrary.getTickLiquidity(IPoolManager,PoolId,int24) (node_modules/@uniswap/v4-core/src/libraries/StateLibrary.sol#108-120) uses assembly
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/StateLibrary.sol#116-119)
StateLibrary.getTickFeeGrowthOutside(IPoolManager,PoolId,int24) (node_modules/@uniswap/v4-core/src/libraries/StateLibrary.sol#131-144) uses assembly
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/StateLibrary.sol#140-143)
StateLibrary.getFeeGrowthGlobals(IPoolManager,PoolId) (node_modules/@uniswap/v4-core/src/libraries/StateLibrary.sol#157-174) uses assembly
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/StateLibrary.sol#170-173)
StateLibrary.getPositionInfo(IPoolManager,PoolId,bytes32) (node_modules/@uniswap/v4-core/src/libraries/StateLibrary.sol#254-269) uses assembly
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/StateLibrary.sol#264-268)
TickMath.getSqrtPriceAtTick(int24) (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#57-114) uses assembly
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#60-68)
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#79-81)
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#102-112)
TickMath.getTickAtSqrtPrice(uint160) (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#121-237) uses assembly
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#141-146)
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#147-152)
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#153-158)
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#159-164)
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#165-170)
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#171-176)
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#177-182)
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#183-188)
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#189-194)
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#195-200)
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#201-206)
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#207-212)
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#213-218)
	- INLINE ASM (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#219-223)
BalanceDeltaLibrary.amount0(BalanceDelta) (node_modules/@uniswap/v4-core/src/types/BalanceDelta.sol#61-65) uses assembly
	- INLINE ASM (node_modules/@uniswap/v4-core/src/types/BalanceDelta.sol#62-64)
BalanceDeltaLibrary.amount1(BalanceDelta) (node_modules/@uniswap/v4-core/src/types/BalanceDelta.sol#67-71) uses assembly
	- INLINE ASM (node_modules/@uniswap/v4-core/src/types/BalanceDelta.sol#68-70)
BeforeSwapDeltaLibrary.getSpecifiedDelta(BeforeSwapDelta) (node_modules/@uniswap/v4-core/src/types/BeforeSwapDelta.sol#25-29) uses assembly
	- INLINE ASM (node_modules/@uniswap/v4-core/src/types/BeforeSwapDelta.sol#26-28)
BeforeSwapDeltaLibrary.getUnspecifiedDelta(BeforeSwapDelta) (node_modules/@uniswap/v4-core/src/types/BeforeSwapDelta.sol#33-37) uses assembly
	- INLINE ASM (node_modules/@uniswap/v4-core/src/types/BeforeSwapDelta.sol#34-36)
CurrencyLibrary.transfer(Currency,address,uint256) (node_modules/@uniswap/v4-core/src/types/Currency.sol#40-88) uses assembly
	- INLINE ASM (node_modules/@uniswap/v4-core/src/types/Currency.sol#46-49)
	- INLINE ASM (node_modules/@uniswap/v4-core/src/types/Currency.sol#55-80)
PoolIdLibrary.toId(PoolKey) (node_modules/@uniswap/v4-core/src/types/PoolId.sol#11-16) uses assembly
	- INLINE ASM (node_modules/@uniswap/v4-core/src/types/PoolId.sol#12-15)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage

Detector: pragma
6 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.0 is used by:
		-^0.8.0 (node_modules/@uniswap/v4-core/src/interfaces/IExtsload.sol#2)
		-^0.8.0 (node_modules/@uniswap/v4-core/src/interfaces/IHooks.sol#2)
		-^0.8.0 (node_modules/@uniswap/v4-core/src/interfaces/IProtocolFees.sol#2)
		-^0.8.0 (node_modules/@uniswap/v4-core/src/interfaces/callback/IUnlockCallback.sol#2)
		-^0.8.0 (node_modules/@uniswap/v4-core/src/interfaces/external/IERC20Minimal.sol#2)
		-^0.8.0 (node_modules/@uniswap/v4-core/src/interfaces/external/IERC6909Claims.sol#2)
		-^0.8.0 (node_modules/@uniswap/v4-core/src/libraries/BitMath.sol#2)
		-^0.8.0 (node_modules/@uniswap/v4-core/src/libraries/CustomRevert.sol#2)
		-^0.8.0 (node_modules/@uniswap/v4-core/src/libraries/FixedPoint128.sol#2)
		-^0.8.0 (node_modules/@uniswap/v4-core/src/libraries/FullMath.sol#2)
		-^0.8.0 (node_modules/@uniswap/v4-core/src/libraries/Hooks.sol#2)
		-^0.8.0 (node_modules/@uniswap/v4-core/src/libraries/LPFeeLibrary.sol#2)
		-^0.8.0 (node_modules/@uniswap/v4-core/src/libraries/LiquidityMath.sol#2)
		-^0.8.0 (node_modules/@uniswap/v4-core/src/libraries/ParseBytes.sol#3)
		-^0.8.0 (node_modules/@uniswap/v4-core/src/libraries/Position.sol#2)
		-^0.8.0 (node_modules/@uniswap/v4-core/src/libraries/SafeCast.sol#2)
		-^0.8.0 (node_modules/@uniswap/v4-core/src/libraries/StateLibrary.sol#2)
		-^0.8.0 (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#2)
		-^0.8.0 (node_modules/@uniswap/v4-core/src/types/BalanceDelta.sol#2)
		-^0.8.0 (node_modules/@uniswap/v4-core/src/types/BeforeSwapDelta.sol#2)
		-^0.8.0 (node_modules/@uniswap/v4-core/src/types/Currency.sol#2)
		-^0.8.0 (node_modules/@uniswap/v4-core/src/types/PoolId.sol#2)
		-^0.8.0 (node_modules/@uniswap/v4-core/src/types/PoolKey.sol#2)
	- Version constraint ^0.8.24 is used by:
		-^0.8.24 (node_modules/@uniswap/v4-core/src/interfaces/IExttload.sol#2)
		-^0.8.24 (node_modules/@uniswap/v4-core/src/interfaces/IPoolManager.sol#2)
		-^0.8.24 (node_modules/@uniswap/v4-core/src/types/PoolOperation.sol#2)
	- Version constraint 0.8.26 is used by:
		-0.8.26 (src/adapters/UniswapV4Adapter.sol#2)
		-0.8.26 (src/hooks/KyteHook.sol#2)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#different-pragma-directives-are-used

Detector: cyclomatic-complexity
TickMath.getSqrtPriceAtTick(int24) (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#57-114) has a high cyclomatic complexity (22).
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#cyclomatic-complexity

Detector: dead-code
add(BalanceDelta,BalanceDelta) (node_modules/@uniswap/v4-core/src/types/BalanceDelta.sol#20-32) is never used and should be removed
eq(BalanceDelta,BalanceDelta) (node_modules/@uniswap/v4-core/src/types/BalanceDelta.sol#48-50) is never used and should be removed
greaterThan(Currency,Currency) (node_modules/@uniswap/v4-core/src/types/Currency.sol#16-18) is never used and should be removed
greaterThanOrEqualTo(Currency,Currency) (node_modules/@uniswap/v4-core/src/types/Currency.sol#24-26) is never used and should be removed
lessThan(Currency,Currency) (node_modules/@uniswap/v4-core/src/types/Currency.sol#20-22) is never used and should be removed
neq(BalanceDelta,BalanceDelta) (node_modules/@uniswap/v4-core/src/types/BalanceDelta.sol#52-54) is never used and should be removed
sub(BalanceDelta,BalanceDelta) (node_modules/@uniswap/v4-core/src/types/BalanceDelta.sol#34-46) is never used and should be removed
toBalanceDelta(int128,int128) (node_modules/@uniswap/v4-core/src/types/BalanceDelta.sol#14-18) is never used and should be removed
toBeforeSwapDelta(int128,int128) (node_modules/@uniswap/v4-core/src/types/BeforeSwapDelta.sol#9-16) is never used and should be removed
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code

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)
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 (node_modules/@uniswap/v4-core/src/interfaces/IExtsload.sol#2)
	- ^0.8.0 (node_modules/@uniswap/v4-core/src/interfaces/IHooks.sol#2)
	- ^0.8.0 (node_modules/@uniswap/v4-core/src/interfaces/IProtocolFees.sol#2)
	- ^0.8.0 (node_modules/@uniswap/v4-core/src/interfaces/callback/IUnlockCallback.sol#2)
	- ^0.8.0 (node_modules/@uniswap/v4-core/src/interfaces/external/IERC20Minimal.sol#2)
	- ^0.8.0 (node_modules/@uniswap/v4-core/src/interfaces/external/IERC6909Claims.sol#2)
	- ^0.8.0 (node_modules/@uniswap/v4-core/src/libraries/BitMath.sol#2)
	- ^0.8.0 (node_modules/@uniswap/v4-core/src/libraries/CustomRevert.sol#2)
	- ^0.8.0 (node_modules/@uniswap/v4-core/src/libraries/FixedPoint128.sol#2)
	- ^0.8.0 (node_modules/@uniswap/v4-core/src/libraries/FullMath.sol#2)
	- ^0.8.0 (node_modules/@uniswap/v4-core/src/libraries/Hooks.sol#2)
	- ^0.8.0 (node_modules/@uniswap/v4-core/src/libraries/LPFeeLibrary.sol#2)
	- ^0.8.0 (node_modules/@uniswap/v4-core/src/libraries/LiquidityMath.sol#2)
	- ^0.8.0 (node_modules/@uniswap/v4-core/src/libraries/ParseBytes.sol#3)
	- ^0.8.0 (node_modules/@uniswap/v4-core/src/libraries/Position.sol#2)
	- ^0.8.0 (node_modules/@uniswap/v4-core/src/libraries/SafeCast.sol#2)
	- ^0.8.0 (node_modules/@uniswap/v4-core/src/libraries/StateLibrary.sol#2)
	- ^0.8.0 (node_modules/@uniswap/v4-core/src/libraries/TickMath.sol#2)
	- ^0.8.0 (node_modules/@uniswap/v4-core/src/types/BalanceDelta.sol#2)
	- ^0.8.0 (node_modules/@uniswap/v4-core/src/types/BeforeSwapDelta.sol#2)
	- ^0.8.0 (node_modules/@uniswap/v4-core/src/types/Currency.sol#2)
	- ^0.8.0 (node_modules/@uniswap/v4-core/src/types/PoolId.sol#2)
	- ^0.8.0 (node_modules/@uniswap/v4-core/src/types/PoolKey.sol#2)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-versions-of-solidity

Detector: too-many-digits
BitMath.mostSignificantBit(uint256) (node_modules/@uniswap/v4-core/src/libraries/BitMath.sol#12-25) uses literals with too many digits:
	- r = r | byte(uint256,uint256)(0x1f & 0x8421084210842108cc6318c6db6d54be >> x >> r,0x0706060506020500060203020504000106050205030304010505030400000000) (node_modules/@uniswap/v4-core/src/libraries/BitMath.sol#22-23)
CustomRevert.bubbleUpAndRevertWith(address,bytes4,bytes4) (node_modules/@uniswap/v4-core/src/libraries/CustomRevert.sol#83-119) uses literals with too many digits:
	- mstore(uint256,uint256)(fmp_bubbleUpAndRevertWith_asm_0 + 0x24,revertingFunctionSelector & 0xffffffff00000000000000000000000000000000000000000000000000000000) (node_modules/@uniswap/v4-core/src/libraries/CustomRevert.sol#98-101)
CustomRevert.bubbleUpAndRevertWith(address,bytes4,bytes4) (node_modules/@uniswap/v4-core/src/libraries/CustomRevert.sol#83-119) uses literals with too many digits:
	- mstore(uint256,uint256)(fmp_bubbleUpAndRevertWith_asm_0 + 0xc4 + encodedDataSize_bubbleUpAndRevertWith_asm_0,additionalContext & 0xffffffff00000000000000000000000000000000000000000000000000000000) (node_modules/@uniswap/v4-core/src/libraries/CustomRevert.sol#113-116)
FixedPoint128.slitherConstructorConstantVariables() (node_modules/@uniswap/v4-core/src/libraries/FixedPoint128.sol#6-8) uses literals with too many digits:
	- Q128 = 0x100000000000000000000000000000000 (node_modules/@uniswap/v4-core/src/libraries/FixedPoint128.sol#7)
LPFeeLibrary.slitherConstructorConstantVariables() (node_modules/@uniswap/v4-core/src/libraries/LPFeeLibrary.sol#7-79) uses literals with too many digits:
	- DYNAMIC_FEE_FLAG = 0x800000 (node_modules/@uniswap/v4-core/src/libraries/LPFeeLibrary.sol#15)
LPFeeLibrary.slitherConstructorConstantVariables() (node_modules/@uniswap/v4-core/src/libraries/LPFeeLibrary.sol#7-79) uses literals with too many digits:
	- OVERRIDE_FEE_FLAG = 0x400000 (node_modules/@uniswap/v4-core/src/libraries/LPFeeLibrary.sol#19)
LPFeeLibrary.slitherConstructorConstantVariables() (node_modules/@uniswap/v4-core/src/libraries/LPFeeLibrary.sol#7-79) uses literals with too many digits:
	- MAX_LP_FEE = 1000000 (node_modules/@uniswap/v4-core/src/libraries/LPFeeLibrary.sol#25)
CurrencyLibrary.transfer(Currency,address,uint256) (node_modules/@uniswap/v4-core/src/types/Currency.sol#40-88) uses literals with too many digits:
	- mstore(uint256,uint256)(fmp_transfer_asm_1,0xa9059cbb00000000000000000000000000000000000000000000000000000000) (node_modules/@uniswap/v4-core/src/types/Currency.sol#60)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#too-many-digits

Detector: unindexed-event-address
Event KyteHook.FeeVaultChanged(address,address) (src/hooks/KyteHook.sol#39) has address parameters but no indexed parameters
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unindexed-event-address-parameters
src/adapters/UniswapV4Adapter.sol analyzed (30 contracts with 100 detectors), 114 result(s) found
